IndicatorBuffers関数、SetIndexBuffer関数|MT4インジケータの配列を定義する方法
執筆者
佐川直弘(株式会社トリロジー取締役)
MetaTrader 4(MT4)のMQL4プログラムでカスタムインディケータを作成する際には、インディケータ配列の定義が重要です。この記事では、インディケータ配列を定義する方法について、初心者にもわかりやすく解説します。
インディケータ配列とは?
インディケータ配列は、インディケータの計算結果を格納するための配列です。MQL4では、インディケータの描画や計算に必要なデータをこれらの配列に保存し、それを元にチャートに表示します。
インディケータ配列の定義方法
インディケータ配列を定義するには、`IndicatorBuffers()`関数を使って事前に配列の個数を定義し、`SetIndexBuffer()`関数を使って各配列の領域を確保します。以下に、その手順を示します。
IndicatorBuffers関数
`IndicatorBuffers()`関数は、インディケータ配列の個数を設定します。この関数の仕様は以下の通りです。
- 関数仕様
- void IndicatorBuffers(int count)
引数の説明
- count
- インディケータ配列の個数。`indicator_buffers`プロパティの値以上、最大8個まで定義可能です。
SetIndexBuffer関数
`SetIndexBuffer()`関数は、インディケータ配列を設定します。この関数の仕様は以下の通りです。
- 関数仕様
- bool SetIndexBuffer(int index, double array[])
引数の説明
- index
- インディケータ配列のインデックス番号(0~7)。
- array[]
- インディケータ配列として割り当てるグローバル変数(配列)。
以下に、`IndicatorBuffers()`および`SetIndexBuffer()`関数を使用してインディケータ配列を定義するサンプルコードを示します。
- サンプルコード
- #property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Silver
#property indicator_color2 Blue
#property indicator_color3 Red
//—- インディケータのパラメータ
extern int FastEMA = 12; // 高速EMAの期間
extern int SlowEMA = 26; // 低速EMAの期間
extern int SignalSMA = 9; // シグナルSMAの期間
//—- インディケータバッファ
double ind_buffer1[]; // インディケータのバッファ1
double ind_buffer2[]; // インディケータのバッファ2
double ind_buffer3[]; // インディケータのバッファ3
// カスタムインディケータの初期化関数
int init() {
//—- 計算のために3つの追加バッファを使用します。
IndicatorBuffers(3);
//—- 描画設定
SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 3);
SetIndexDrawBegin(0, SignalSMA);
IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 2);
//—- 3つのインディケータバッファのマッピング
SetIndexBuffer(0, ind_buffer1);
SetIndexBuffer(1, ind_buffer2);
SetIndexBuffer(2, ind_buffer3);
//—- データウィンドウおよびインディケータサブウィンドウラベルの名前
IndicatorShortName(“CustomOsMA(" + FastEMA + “," + SlowEMA + “," + SignalSMA + “)");
return (0);
}
このサンプルコードでは、以下のことを行っています。
- `#property`ディレクティブを使って、インディケータの設定を行います。
- 外部パラメータ(`FastEMA`、`SlowEMA`、`SignalSMA`)を宣言します。
- グローバル変数としてインディケータ配列(`ind_buffer1`、`ind_buffer2`、`ind_buffer3`)を宣言します。
- `init()`関数内で、`IndicatorBuffers()`関数を使って配列の個数を設定します。
- `SetIndexBuffer()`関数を使って、各配列の領域を確保します。
まとめ
インディケータ配列を正しく定義することで、カスタムインディケータの計算結果を適切にチャートに表示することができます。MQL4の`IndicatorBuffers()`および`SetIndexBuffer()`関数を使用することで、簡単に配列を設定し、カスタムインディケータを作成することができます。初心者の方も、この基本的な使い方を理解して、実際のトレードに応用してみてください。
ディスカッション
コメント一覧
まだ、コメントがありません