私たちのファンページに参加してください
- ビュー:
- 1005
- 評価:
- パブリッシュ済み:
- 2017.05.31 17:01
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
MetaTraderで時間枠またはチャートの銘柄名を変更すると、チャートのすべての指標はチャートからアンロードされ、再びチャートにロードされます。MT4の場合とは異なり、MT5では内部アーキテクチャがロード/アンロードのシーケンスを定義していません。
この特徴により、すぐには分からない問題が生じることがあります。これらの問題は、インスタンスのOnDeinitがアンロードされる前に、新しくロードされた指標インスタンスのOnInitが実行されるという事実に関連しています。
この問題は、多くの場合、古い指標インスタンスのOnDeinitから新しいインスタンスのOnInitへの(明示的/暗黙的に)情報送信リクエストに関連した状況で検出されます。つまり、新しい指標インスタンスは古いインスタンスの存在を知る必要があり、古いインスタンスがアンロードされるまでロードしてはいけません。
このライブラリを使用すると、この同期を任意の指標に適用できます。
次に単純な指標の例を示します。
#property indicator_chart_window #property indicator_buffers 1 #property indicator_plots 1 #property indicator_color1 clrRed #property indicator_type1 DRAW_LINE input int Input = 0; double Buffer[]; int OnInit() { SetIndexBuffer(0, Buffer); Print("Init"); return(INIT_SUCCEEDED); } void OnDeinit( const int Reason ) { Print("DeInit"); } void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam ) { } void OnTimer() { } int OnCalculate( const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[] ) { ArrayCopy(Buffer, open, prev_calculated, prev_calculated); return(rates_total); }
この指標を起動し、チャートの時間枠または銘柄の切り替えを開始すると、"Init"と"Deinit"の行の交互性が破られます。
指標コードの先頭に
#include <Init_Sync.mqh> // 指標のInit/Deinitを同期する
を追加すると適切な交互性が得られます。
このプロパティを所望の指標に適用するには、コードに上記の構造を追加します。
注意事項
このライブラリは指標のInit/Deinitを同期させます。 // 指標にはint OnInit()、OnDeinit、OnTimer、OnChartEventが含まれなければならない // 使われない場合は?空のままにする #include <TypeToBytes.mqh> // https://www.mql5.com/en/code/16280 #include <crc64.mqh> // https://www.mql5.com/en/blogs/post/683577
ライブラリ操作に必要な追加のmqhファイルは、指定されたリンクから入手できます。
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/18138

この指標は、カラーラインを使用して現在のスプレッドを表示します。

Exp_XFatlXSatlCloud取引システムは、XFatlXSatlCloud指標で表示される動向の方向の変化に基づいています。

1つのバーに2つのボリンジャーチャンネルの値の間に描かれた2つの色付きの長方形です。

1つのバーの2つのケルトナーチャンネルの値の間に描かれた2つの色付きの長方形です。