How to make a Sleep in a custom indicator ? - page 2

 
endy5:
yes, Raptor, you have true!... but is "better" solution? I won´t use EA.
A better solution than a comparison of 2 integers  (datetimes) on each tick ?  I doubt it,  testing of integers is very fast . . .  nothing is called from your Broker,  Time[0] is updated when the new tick is received.
 

I also need a delay inside OnInit function because history is not always loaded.


I am using this loop in the OnInit function:


      uint TimeWait = GetTickCount() + 200;
      while( GetTickCount() < TimeWait ) ;
 
Philippe Pauleau #: I also need a delay inside OnInit function because history is not always loaded.

Don't try to use any price (or indicator) or server related functions in OnInit (or on load or in OnTimer before you've received a tick), as there may be no connection/chart yet:

  1. Terminal starts.
  2. Indicators/EAs are loaded. Static and globally declared variables are initialized. (Do not depend on a specific order.)
  3. OnInit is called.
  4. For indicators OnCalculate is called with any existing history.
  5. Human may have to enter password, connection to server begins.
  6. New history is received, OnCalculate called again.
  7. A new tick is received, OnCalculate/OnTick is called. Now TickValue, TimeCurrent, account information and prices are valid.