In previous code I used the time to detect a new bar. This time let’s use the bars count to detect a new bar. it’s way lighter and faster than using the time method.
- Declare the variables in integer data type to store the bar counts.
- Assign the bars count for the “BarsTotal_OnInt” at the initialization.
- Use iBars(); function to assign the bars count for the “BarsTotal_OnTick” variable at live chart. This variable is updated on every tick.
- Use comments and alerts to check the code accuracy.
int BarsTotal_OnInt; int BarsTotal_OnTick; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { BarsTotal_OnInt = iBars(NULL,PERIOD_CURRENT); // Asign the total bars at initialization return(INIT_SUCCEEDED); } void OnTick() // OnTick Function { BarsTotal_OnTick = iBars(NULL,PERIOD_CURRENT); // Stores the latest amount if(BarsTotal_OnTick > BarsTotal_OnInt) // New bar has arrived { BarsTotal_OnInt = BarsTotal_OnTick; // Updates the history. Alert("New Bar has arrived"); Comment("Bars Count in history -: ", BarsTotal_OnInt, "\n", "Bars Count in Live -: ", BarsTotal_OnTick); // Your Code goes here. -------------------------- // You can update a "flag" / variable to use it on later too. } }