終値確定時、始値確定時の判定について

 

常にではなく終値確定又は始値の段階のみ条件判定など処理を走らせるというのを、見よう見まねで一応書いてみたのですが、、、

一応基本的には例えば1時間足であれば、1時間に一度判定されるけど、コンパイル等をし直したり、改めてスタートさせるために適用させたりすると、最初の起動時に一回必ず処理が走ってしまいます。

使い方?なんだとは思うのですが、アドバイスお願いいたします。

//function
bool isNewBar(string symbol, ENUM_TIMEFRAMES tf)
 {
  static datetime time = 0;
  if(iTime(symbol, tf, 0) != time)
   {
    time = iTime(symbol, tf, 0);
    return true;
   }
  return false;
 }

//OnTick
void OnTick()
 {
  if(isNewBar(_Symbol, _Period))
   {
    //処理
   }
 }
 

time を0で初期化しているから起動時には

if(iTime(symbol, tf, 0) != 0)

となり、必ず true になる。

time を現在時刻で初期化すればいいのでは?

 
Nagisa Unada:

time を0で初期化しているから起動時には

となり、必ず true になる。

time を現在時刻で初期化すればいいのでは?

なるほど、、、ちょっと見てみます。

理由: