無料でロボットをダウンロードする方法を見る
Twitter上で私たちを見つけてください。
私たちのファンページに参加してください
私たちのファンページに参加してください
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
- ビュー:
- 182
- 評価:
- パブリッシュ済み:
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
Expert Advisor (EA) では、MetaTraderによって 新しい気配値(「ティック」)が受信されると、標準のOnTick() イベント処理関数がターミナルによって呼び出されます。しかし、新しいバー(ローソク足)が始まるときの標準イベント処理関数はありません。
これを検出するには、直近のバーの開始時間を監視する必要があります。それが変化したら、新しいバーの開始を意味し、その状況に反応してイベントを処理することができます。以下のコード例は、MQL4とMQL5の両方に対応しており、これを実現する方法の1つを示しています:
// 標準ティック・イベント・ハンドラ void OnTick() { // 新しいバーをチェックします(MQL4およびMQL5と互換性があります)。 static datetime dtBarraCorrente = WRONG_VALUE; datetime dtBarraPrecedente = dtBarraCorrente; dtBarraCorrente = iTime( _Symbol, _Period, 0 ); bool bEventoBarraNova = ( dtBarraCorrente != dtBarraPrecedente ); // 新しいバーのイベントに反応し、状況に対処する。 if( bEventoBarraNova ) { // これが最初に受信したティックかどうかを検出し、その状況に対処する。 /* 例えば、最初にグラフに適用され、 。の場合、バーは進行の途中であり、 は実際には新しいバーの始まりではない。*/ if( dtBarraPrecedente == WRONG_VALUE ) { // 最初のティックまたはバーの途中で何かを行う ... } else { // 通常のバーが表示されたら何かする ... }; // 前の条件とは無関係に何かをする ... } else { // 他のことをする... }; // 他のことをする... };
先ほどのコードでは、OnTick() 関数から戻ったときでも、静的変数が バーの開始時間を追跡しています。通常のローカル変数とは異なり、この変数はデータの内容を記憶し、関数を離れるときにそれを解放しません。これが、現在のバーの始値の変化を検出する鍵です。
EAが初めてチャート上に配置されたとき、前のコードはバーが開いたばかりのように反応することにも注意する必要があります。この状況を別の方法で処理する必要がある場合は、特別な処理が必要です。
私のすべてのCodeBase 出版物のソースコードは、現在、MetaEditorの"Public Projects "からも "FMIC "という名前で入手可能です。
MetaQuotes Ltdによりポルトガル語から翻訳されました。
元の記事: https://www.mql5.com/pt/code/41601