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