January 13, 2015
How to delete quotes without removing the symbol from a database
In order to delete quotations from a local database manually, we can use Quotations Editor (Symbol–>Quote Editor), then mark the required range of quotes and press Delete button. To mark a range – it is enough to click on the first line of the range, then scroll to the other line, hold SHIFT and click on the end-line of the range. To multi-select individual lines, hold down CTRL key while clicking on the lines.

There is also a way to delete quotations programmatically with use of OLE automation interface explained here:
http://www.amibroker.com/guide/objects.html
The following code presents how to do it using automation scripts (the code deletes all quotations of MSFT ticker):
// THIS IS NOT AFL
// This is Windows script to be run from the outside of AmiBroker
function RemoveAllQuotes( Name )
{
AB = new ActiveXObject("Broker.Application");
Stk = AB.Stocks( Name );
Quotes = Stk.Quotations;
iQty = Quotes.Count;
for( i = iQty - 1; i >= 0; i-- )
{
Quotes.Remove( i );
}
AB.RefreshAll();
}
RemoveAllQuotes("MSFT");
WScript.Echo ( "Completed" );
The code above is intended to be used from the outside of AmiBroker.
To use above code follow these steps:
- Open Notepad
- Copy-paste above the code
- Save the file with .JS extension (which means that system will treat this as JScript code)
- Make sure that AmiBroker is running with desired chart as active one
- Double click on .JS file to execute the JScript code
IMPORTANT: if you are running 64-bit Windows and have BOTH 32-bit and 64-bit versions of AmiBroker installed the OLE scripts by default would only talk to 64-bit instance. To use 32-bit version instead you would need to follow advice given in this article: “Running OLE automation scripts with 32- and 64-bit versions of AmiBroker”
Using the very same method you can delete quotes selectively, for example the script below deletes only quotes having zero volume:
// THIS IS NOT AFL
// This is Windows script to be run from the outside of AmiBroker
function RemoveQuotesWithZeroVolume( Name )
{
AB = new ActiveXObject("Broker.Application");
Stk = AB.Stocks( Name );
Quotes = Stk.Quotations;
iQty = Quotes.Count;
cnt = 0;
for( i = iQty - 1; i >= 0; i-- )
{
qt = Quotes.Item( i );
if( qt.Volume == 0 )
{
cnt++;
Quotes.Remove( i );
}
}
AB.RefreshAll();
return cnt;
}
n = RemoveQuotesWithZeroVolume("MSFT");
WScript.Echo ( "Removed " + n + " quotes with zero volume" );
Filed by Tomasz Janeczko at 6:18 pm under Data
Comments Off on How to delete quotes without removing the symbol from a database