Wie man einen neuen Balken erkennt - Seite 3

 
Stephen Njuki:
Ich benutze das...

Danke Mann

 
Stephen Njuki:
Ich benutze diese...

Ich hatte viele Probleme bei der Verwendung der Zeit als Variable und suchte nach einer Möglichkeit, variable Balken zu verwenden


Danke, Arbeit!


 
Mladen Rakic:

Warum nicht einfach etwas wie das hier verwenden?

   static datetime prevTime=0;
          datetime lastTime[1];
          if (CopyTime(_Symbol,_Period,0,1,lastTime)==1 && prevTime!=lastTime[0])
          {
               prevTime=lastTime[0];
              
               // ...
          }
Es sollte in allen Fällen funktionieren (auch wenn es einen Fehler mit CopyTime() gibt, vermeidet es eine Falle)

Danke, Bruder!

 
Mladen Rakic:

Warum nicht einfach etwas wie dieses verwenden?

   static datetime prevTime=0;
          datetime lastTime[1];
          if (CopyTime(_Symbol,_Period,0,1,lastTime)==1 && prevTime!=lastTime[0])
          {
               prevTime=lastTime[0];
              
               // ...
          }
Es sollte in allen Fällen funktionieren (auch wenn es einen Fehler mit CopyTime() gibt, wird eine Falle vermieden)

Perfekt!

Ich habe das Gleiche gesucht.


Gott segne Sie

 

Danke Leonard, wirklich hilfreich.

Bemerkte ein paar Probleme bei der Arbeit mit iHigh, iLow und iClose direkt nach so fügte eine schnelle Sleep(10000) nach dem Aufruf.

void OnTick()
   {
    if(isNewBar())
       {
       Sleep(10000);
       ...
       }
   }

bool isNewBar()
   {
   
    static datetime prevTime = 0;
    datetime lastTime[1];
    if(CopyTime(Symbol(), Period(), 0, 1, lastTime) == 1 && prevTime != lastTime[0])
       {
        prevTime = lastTime[0];
        return(true);
       }
    return(false);
   }
 

Ich habe diese Funktion geschrieben, und ich verwende sie normalerweise in Optimierungslaune, was einen echten Unterschied machen kann, wenn man sie eine Million Mal aufrufen will. Ich denke, dies ist so schnell wie Sie die neue Bar bekommen können, und es sieht sauber:

inline bool IsNewBar(ENUM_TIMEFRAMES timeframe = PERIOD_CURRENT)
{
   static datetime lastBar;
   return lastBar != (lastBar = iTime(_Symbol, timeframe, 0));
}
 
Null_Pointer:

Ich habe diese Funktion geschrieben, und ich verwende sie normalerweise in Optimierungslaune, was einen echten Unterschied machen kann, wenn man sie eine Million Mal aufrufen will. Ich denke, das ist so schnell, wie man die neue Leiste bekommen kann, und es sieht sauber aus:

Danke!

Frage, was bedeutet "Inline"?

 
fdesu: Frage: Was bedeutet "Inline"?

In "C" und "C++" würde das Schlüsselwort "inline" dem Compiler empfehlen, die Inline-Erweiterung zur Optimierung zu verwenden.

In MQL ist eine solche Funktion jedoch nicht dokumentiert, obwohl der Compiler sie akzeptiert und bei der Kompilierung keinen Fehler anzeigt. Vielleicht wird es einfach nur toleriert, hat aber keine Auswirkungen.

 
fdesu:

Danke!

Frage: Was bedeutet "Inline"?

12. MQL5: Unterstützung für die Inline-, __inline- und __forceinline-Spezifizierer beim Parsen von Code hinzugefügt. Das Vorhandensein der Spezifizierer im Code verursacht keine Fehler und hat keinen Einfluss auf die Kompilierung. Im Moment vereinfacht diese Funktion die Übertragung von С++-Code nach MQL5.
Weitere Informationen über Spezifizierer finden Sie in MSDN.

New MetaTrader 5 platform build 1930: Floating window charts and .Net libraries in MQL5
New MetaTrader 5 platform build 1930: Floating window charts and .Net libraries in MQL5
  • 2018.10.25
  • www.mql5.com
The updated version of the MetaTrader 5 platform will be released on October 26, 2018...
 
Alain Verleyen: 12. MQL5: Added support for the inline, __inline and __forceinline specifiers when parsing code. The presence of the specifiers in the code causes no errors and does not affect the compilation. At the moment, this feature simplifies transferring С++ code to MQL5. Find more information about specifiers in MSDN.
Vielen Dank für die Information! Schade, dass sie das nicht in die Dokumentation aufgenommen haben, denn ich konnte weder in der Online-Version noch in der MetaEditor-Hilfedatei einen Hinweis darauf finden.