Comment détecter une nouvelle barre - page 3

 
Stephen Njuki:
J'utilise ceci...

Merci.

 
Stephen Njuki:
J'utilise ce...

J'ai eu beaucoup de problèmes en utilisant le temps comme variable et je cherchais un moyen d'utiliser des barres de variables


merci, travail !


 
Mladen Rakic:

Pourquoi ne pas simplement utiliser quelque chose comme ça ?

   static datetime prevTime=0;
          datetime lastTime[1];
          if (CopyTime(_Symbol,_Period,0,1,lastTime)==1 && prevTime!=lastTime[0])
          {
               prevTime=lastTime[0];
              
               // ...
          }
Cela devrait fonctionner dans tous les cas (même quand il y a une erreur avec CopyTime() cela évite un piège)

merci mon frère !

 
Mladen Rakic:

Pourquoi ne pas simplement utiliser quelque chose comme ceci :

   static datetime prevTime=0;
          datetime lastTime[1];
          if (CopyTime(_Symbol,_Period,0,1,lastTime)==1 && prevTime!=lastTime[0])
          {
               prevTime=lastTime[0];
              
               // ...
          }
Cela devrait fonctionner dans tous les cas (même lorsqu'il y a une erreur avec CopyTime() cela évite un piège)

Parfait.

Je cherchais la même chose.


Dieu vous bénisse

 

Merci Leonard, vraiment utile.

J'ai remarqué quelques problèmes en travaillant avec iHigh, iLow et iClose directement après, donc j'ai ajouté un Sleep(10000) rapide après l'appel.

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);
   }
 

J'ai écrit cette fonction, et je l'utilise généralement en mode optimisation, ce qui peut faire une réelle différence si vous voulez l'appeler un million de fois. Je pense que c'est le plus rapide que vous pouvez obtenir la nouvelle barre, et c'est propre :

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

J'ai écrit cette fonction, et je l'utilise généralement en mode optimisation, ce qui peut faire une réelle différence si vous voulez l'appeler un million de fois. Je pense que la nouvelle barre est aussi rapide que possible et qu'elle a l'air propre :

Merci !

Question, que signifie "Inline" ?

 
fdesu: Question, que signifie "Inline" ?

En "C" et "C++", le mot-clé "inline" recommanderait au compilateur d'utiliser l'expansion inline pour l'optimisation.

Cependant, dans MQL, aucune caractéristique de ce type n'est documentée, même si le compilateur l'accepte et ne donne pas d'erreur pendant la compilation. Il est possible qu'elle soit simplement tolérée mais sans effet.

 
fdesu:

Merci !

Question, que signifie "Inline" ?

12. MQL5 : Ajout du support des spécificateurs inline, __inline et __forceinline lors de l'analyse du code. La présence de ces spécificateurs dans le code ne provoque aucune erreur et n'affecte pas la compilation. Pour le moment, cette fonctionnalité simplifie le transfert du code С++ vers MQL5.
Trouvez plus d'informations sur les spécificateurs dans 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.
Merci pour cette information ! Dommage qu'ils n'aient pas inclus cela dans la documentation, car je n'ai trouvé aucune mention de cela ni dans la version en ligne ni dans le fichier d'aide de MetaEditor.