October 6, 2015
How to run certain piece of code only once
There are situations where we may need to run certain code components just once, e.g. to initialize some static variables before auto-trading execution or perform some tasks (such as ranking) at the very beginning of backtest or exploration. The following techniques may be useful in such cases:
When we want to execute certain part of code just once after starting AmiBroker, we may use a flag written to a static variable that would indicate if our initialization has been triggered or not.
if( Nz( StaticVarGet("InitializationDone") ) == 0 )
{
StaticVarSet("InitializationDone", 1);
// code for first execution
If we want to run certain part of code at the beginning of the test run in Analysis window, we can use:
if ( Status("stocknum") == 0 )
{
// our code here
When Status(“stocknum”) is detected in the code, then execution is performed in a single thread for the very first symbol. Only after processing of this first symbol has finished the other threads will start.
A practical example showing use of this feature is presented in the following tutorial:
http://www.amibroker.com/guide/h_ranking.html
Filed by Tomasz Janeczko at 7:03 am under General
Comments Off on How to run certain piece of code only once