記事"「新規バー」イベントハンドラ"についてのディスカッション - ページ 5

 
tito.vinicius:

現在、私のEAは同じローソク足で複数の注文をオープンしています。この記事の資料が役に立つと思います。

どのように実装すればよいでしょうか?


OnTick()イベントからトレードエントリーロジックを取り出し、OnNewBar()関数の中に入れます。こうすることで、新しいバーが来たときだけ実行され、同じローソク足で何度もエントリーする必要がなくなります。

 
このような素晴らしい紙をありがとうございます!
 

良い記事だ。

ありがとう!

 

ありがとう、

MQL5のライブラリ関数を 期待していたのですが、ないようですね?私はモジュール式の取引ライブラリを使用していますが、シグナルモジュールがIsNewBarフラグを設定し、prevCandleTimeをオーバーライドするという問題に遭遇しました。

しかし、モジュールが異なるタイムフレームで実行される可能性があるため、この解決策はとても完璧です。

 
とても有益な記事だった。
 
ありがとう、新しいバーを発見する最高の方法だ!)
 
私の意見では、私たちは時に不必要に物事を複雑にすることがある。現実的な理由としては、パフォーマンス的にも、システム時間(ウィンドウズ時間)に勝るものはない。次の1分が始まるとき、あるいは念のため数秒後に、シンボルごとに新しいバーがあると仮定することができる。分後、5分後、15分後、あるいはどのような時間枠でもよい。念のため 、バー・タイムとシステム・タイムが同じかどうかを確認することもできる。

しかし、新しいバーがいつ描かれるかを実際に知っているのに、新しいバーがあるかどうかをチェックするためだけに、このクラスのインスタンスを複数作成する必要はありません。


 
double Old_open, New_open;
bool  NewBar = false;

int OnInit()
  {
        //---------- 

        Old_open = iOpen(Symbol(),PERIOD_CURRENT,0);
        
        //---------- 

        return(INIT_SUCCEEDED);
  }
void OnTick()
  {
        //---
        New_open = iOpen(Symbol(),PERIOD_CURRENT,0);
        if (New_open != Old_open)
           {
               Print(「新しいバーが入るんだ。, TimeCurrent());
               NewBar = true;
               Old_open = New_open;
           }
        else NewBar = false;
         
  }

こんにちは。Open()クォートが到着したらすぐに、それは新しいバーが 到着したことを意味すると思っています。その方が簡単だと思うのですが、何か見落としているのでしょうか?

 
Max Go 新しいバーが 到着したことを意味します。IMHOは、それが簡単であるか、私は何かを見逃していますか?

新しいバーの始値が前のバーの始値と等しい状況を想像してみてください。小さなTFでは、このような状況を捕らえる確率は高い。

 


現在のバーのオープニング時間を追跡し、各ティックで比較する。

// これより簡単な方法はない。
// 現在のバーの開始時間を追跡し、各ティックで比較する。

double lastTime = 0;

void OnTick() {

   if(isNewBar()){

      Print("New Bar");

     }

}



bool isNewBar() {

   double thisTime= NormalizeDouble(iTime(_Symbol, PERIOD_CURRENT, 0), _Digits);

   if(lastTime != thisTime) {

      lastTime = thisTime;

      return true;

     }

   return false;

  }

Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
NormalizeDouble - Преобразование данных - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5