Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 571

 
PolarSeaman:

Ist es, aktuelle Zeit subtrahieren die Öffnungszeit der Bar?

//+------------------------------------------------------------------+
//| Количество секунд, остающихся до закрытия свечи                  |
//+------------------------------------------------------------------+
long SecondsToCandleClose(const string symbol_name,const ENUM_TIMEFRAMES timeframe)
  {
   datetime array[];
   return(CopyTime(symbol_name,timeframe,0,1,array)==1 ? PeriodSeconds(timeframe)+array[0]-TimeCurrent() : 0);
  }
//+------------------------------------------------------------------+
 
PolarSeaman:

Kann OnCalculate() in OnTimer() eingefügt werden?

Ich weiß nicht, wie man die lokale Zeit mit deraktuellen Zeit synchronisiert, ich kann es in der Hilfe nicht finden.

Dies sind zwei verschiedene Ereignisbehandler. OnCalculate() wird durch einen neuen Tick ausgelöst, OnTimer() wird durch die Zeit ausgelöst, die beim Starten des Timers festgelegt wurde.

 
PolarSeaman:

wie, nicht zu tun? nur diese Minute müssen Sie überprüfen, und schlafen für 24 Stunden)

Dann geht es nicht ohne einen Timer.

 
Artyom Trishkin:

Danke. Jetzt müssen wir dafür sorgen, dass es funktioniert, wenn kein Tick vorhanden ist.

        if(SecondsToCandleClose(Symbol(),0)<=60)
              {
               if(open[i]>close[i] && high[i]-low[i]>=100*Point)
                 {
                  BufferUP[i]=low[i]-distance*Point;
                 }
              }
 
PolarSeaman:

Kann OnCalculate() in OnTimer() eingefügt werden?

Ich weiß nicht, wie man die lokale Zeit mit deraktuellen Zeit synchronisiert, ich kann es in der Hilfe nicht finden.

Zum Zeitpunkt eines Ticks wird die Differenz TimeCurrent()-TimeLocal() gezählt.
- dies ist unser Offset in Bezug auf den Broker; wenn sich dieser Offset später ändert, sollte alles neu berechnet werden
- bei Beginn oder Erscheinen von Takt D1 alle erforderlichen Zeiten auf die Ortszeit umrechnen
- wir warten die Zeit ab, die wir im Timer "gezählt" haben, prüfen gleichzeitig, ob eine Unsynchronisierung vorliegt, trennen die Verbindung mit dem Broker und setzen die lokalen Pfeile neu.

 
Ihor Herasko:

Dies sind zwei verschiedene Ereignisbehandler. OnCalculate() wird durch einen neuen Tick ausgelöst, OnTimer() wird durch die Zeit ausgelöst, die beim Starten des Timers eingestellt wurde.

Danke, ich verstehe. Kann der Indikator in OnTimer() funktionieren?

 
PolarSeaman:

Danke. Jetzt müssen wir dafür sorgen, dass es auch ohne eine Zecke funktioniert.

Der Code sollte in OnTimer() eingefügt werden. Aber auch hier gilt, dass es nicht für die Geschichte verwendet werden kann. Setzen Sie also gleich 0 anstelle von i ein.

 
PolarSeaman:

Danke, ich verstehe. Kann der Indikator in OnTimer() funktionieren?

Das Ereignis OnTimer() funktioniert im Indikator. Sie sollten jedoch nicht den gesamten Code in OnTimer() einfügen. Es sollte nur der Teil vorhanden sein, der für die Verfolgung der verbleibenden Zeit bis zum Ende der Kerze zuständig ist. Alles andere muss in OnCalculate() funktionieren.

 
Taras Slobodyanik:

in dem Moment, in dem der Tick einsetzt...

Na ja... Was ist, wenn die Zecke nicht kommt? Sie muss ohne die Zecke "starten".

 
Ihor Herasko:

Aber auch hier gilt, dass Sie es nicht für eine Geschichte verwenden können.

Tut mir leid, ich verstehe nicht, warum Sie das nicht können.