新しいバーを検出する方法 - ページ 3

 
Stephen Njuki:
これを使って...

サンクスマン

 
Stephen Njuki:
私はこれを使う...

timeを変数にするといろいろと問題があり、変数バーを使う方法を探していました


は、ありがとうございます!仕事


 
Mladen Rakic:

なぜ、このようなものを使わないのか?

   static datetime prevTime=0;
          datetime lastTime[1];
          if (CopyTime(_Symbol,_Period,0,1,lastTime)==1 && prevTime!=lastTime[0])
          {
               prevTime=lastTime[0];
              
               // ...
          }
これならどんな場合でもうまくいくはず(CopyTime()でエラーになった場合でもトラップが回避される)

ありがとうございます。

 
Mladen Rakic:

なぜ、単にこのようなものを使用しないのか 。

   static datetime prevTime=0;
          datetime lastTime[1];
          if (CopyTime(_Symbol,_Period,0,1,lastTime)==1 && prevTime!=lastTime[0])
          {
               prevTime=lastTime[0];
              
               // ...
          }
すべてのケースで動作するはずです(CopyTime()でエラーが発生した場合でも、トラップを回避することができます)。

完璧です。

私も同じものを探していました。


神のご加護を

 

Leonardさん、ありがとうございます。

iHigh, iLow,iCloseを 直接操作すると、いくつかの問題があることがわかったので、呼び出し後に素早くSleep(10000)を追加しました。

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

この関数は私が書いたもので、私は通常、最適化の気分でこれを使用しています。新しいバーの表示速度はこれくらいで十分だと思いますし、見た目もスッキリしています。

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

この関数は私が書いたもので、私は通常、最適化の気分でこれを使用しています。これは新しいバーを得ることができるのと同じくらい速いと思います、そしてそれはきれいに見えます。

ありがとうございました。

質問:"インライン "とはどういう意味ですか?

 
fdesu: 質問:"インライン "とは何ですか?

C」や「C++」では、「inline」キーワードは、最適化のためにインライン展開を使用することをコンパイラに推奨しているはずです。

しかし、MQLでは、コンパイラがそれを受け入れ、コンパイル時にエラーを出さないにもかかわらず、そのような機能は文書化されていません。単純に許容されているだけで、何の効果もないのかもしれません。

 
fdesu:

ありがとうございます。

質問、「インライン」の意味は?

12.MQL5:コード解析 時に inline、__inline、__forceinline 指定子のサポートが追加されました。コード内にこれらの指定子があってもエラーは発生せず、コンパイルにも影響しません。現時点では、この機能はС++のコードをMQL5に転送することを簡素化します。
指定子についての詳細は、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.
情報ありがとうございます。オンライン版にもMetaEditorのヘルプファイルにも記載がなかったので、ドキュメントに記載されていないのは残念です。
理由: