無料でロボットをダウンロードする方法を見る
Facebook上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
ライブラリ

Init_Sync - MetaTrader 5のためのライブラリ

ビュー:
872
評価:
(31)
パブリッシュ済み:
2017.05.31 17:01
\MQL5\Include\
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

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

Color_Spread Color_Spread

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

Exp_XFatlXSatlCloud Exp_XFatlXSatlCloud

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

XMA_BB_Pivot XMA_BB_Pivot

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

XMA_Keltner_Pivot XMA_Keltner_Pivot

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