プログラムプロパティ(indicator_buffers)

MQL4リファレンス

MQL4では、カスタムインジケーターを作成する際に、インジケーターの表示方法や動作を設定するために#propertyという命令を使用します。

その中の一つであるindicator_buffersは、インジケーターで使用するバッファの数を指定します。バッファを宣言しないとメモリ消費が最適化されず、パフォーマンスが低下する可能性があるそうです。

具体的な例としてRSI(Relative Strength Index)インジケーターを表示する方法で解説します。

スポンサーリンク

サンプルコード全文

iRSI関数を利用してRSIインジケーターを表示するコードになります。

コード説明

インジケーターの設定

#propertyはコンパイルする際に使われ、インジケーターの表示方法や見た目を設定します。
indicator_buffersを使用して、インジケーターで使用するバッファの数を指定します。

インジケーターのバッファ

インジケーターの値を格納する為の配列をバッファといいます。このバッファを使用して、計算されたインジケーターの値をチャート上に表示します。

インジケーターの初期化関数

OnInit関数は、インジケーターの初期化を行います。SetIndexBuffer関数を使用して、rsiBufferをインジケーターのバッファとして設定します。
これにより、計算された値がこのバッファに格納され、チャートに表示されます。

インジケーターの計算関数

OnCalculate関数は、インジケーターの主な計算部分です。ここでは、iRSI関数を使用して指定された通貨ペアと時間枠に対してRSIを計算し結果を返します。
計算済バー数prev_calculatedから全バー数rates_totalを引き、その範囲内でループ処理を行います。初回計算時は全バー数から1を引いた数を計算範囲とし、過去から最新のバーに向かってRSIを計算します。

表示イメージ画像

まとめ

indicator_buffersは、インジケーターで使用するバッファの数を指定する重要な設定です。この設定により、インジケーターが複数のバッファを使用する場合でも適切にバッファを管理し、値を格納することができます。

サンプルコードではiRSI関数を使用してRSIを計算し表示していますが、同様の方法でさまざまなインディケーターを作成することができますので試してみてください。

コメント

タイトルとURLをコピーしました