1,000人限定!!企画に参加してEAをGetする公式ラインに登録して
プレゼントをもらう

【MQL】データを一時的に保存しておくための変数である『バッファ』についてわかりやすく説明してみた

MQL インジケーター作成 バッファMT4インジケーター作成

バッファ

バッファとは、一般的には緩衝材を指すことが多いです。

例えば、仕事のスケジュールのバッファは?と聞かれた場合に

納期までに余裕のある日数はどれくらい?という意味になります。

プログラミングではバッファをデータの保管領域のことを指しています。

MQL インジケーター作成 バッファ

インジケーターバッファ

MQL言語では、バッファの中でもインジケーターバッファを使用します。

インジケーターバッファとは一言で言うとインジケーター用の配列になります。

インジケーターバッファは以下のような特徴を持っています。

  • チャート上にグラフィカルに値を示す機能を持った配列
  • 機能を実現するためにあらかじめいくつかの特別な仕様が定められている配列
  • バッファ保管領域はdouble型の動的配列で格納

MQLでのバッファの書き方

MQLでのバッファの書き方について説明してきます。

propertyにバッファを定義させる

まずpropertyにバッファを定義させます。

以下のように記述します。

//インジケーターバッファの数を宣言
#property indicator_buffers 1

今回は、インジケーターを1つ表示するのでバッファは1つだけです。

バッファのグローバル空間を確保

次にバッファをグローバル空間に確保します。この際に初期化は必要ありません。

インジケーターバッファとして使用する配列は必ずグローバルエリアで宣言するようにしましょう。

//インジケーターバッファ用の配列
double Buffer[];

SetIndexBuffer()で割り当てる

OnInit()内でインジケーターバッファとして使用する配列をインデックス番号で紐づけます。

その際にSetIndexBuffer()を使用してインジケータバッファを割り当てます。

SetIndexBuffer()とは、

各インジケーターバッファーをインジケーターバッファ領域に割り当てるために使用する関数です。

SetIndexBuffer()は以下のように記述します。

#property indicator_buffers 1

double Buffer[];

int ONinit()
{
 SetIndexBuffer(0,Buffer);
 ……
 return(0);
}

SetIndexStyle()でラインや矢印などの表示スタイル指定する

インジケーターバッファの値は、自動でラインや矢印などの形にビジュアル化されます。

その際の表示形式をSetIndexStyle()で指定します。

SetIndexStyle()は以下のように記述します。

//各インデックスのスタイルを設定
SetIndexStyle(0, DRAW_LINE, style_A, width_A, color_A);

各バッファの値を計算する

OnCalculate()内にて、各インジケータバッファの値を計算します。

計算量を最小限にするために、まだ計算していないバッファのみが計算対象となるように処理を書きます。

下は、まだ計算していないバッファのインデックスをlimitとしています。

//まだ計算していない最古バーのインデックス番号を算出し、変数limitに代入
int limit = rates_total - prev_calculated - 1;
if(limit < 0) limit = 0;

//バッファの値を計算
CalculateBuffer(limit);

return(rates_total);

まとめ

今回はバッファについての説明でした。

ポイント

バッファ:データの保管領域のこと
インジケーターバッファ:インジケーター用の配列
SetIndexBuffer():バッファ領域に割り当てるために使用する関数
SetIndexStyle():インジケーターの表示形式などの関数

1,000人限定でFXの自動売買のEAを無料で配布中!!

FX-EA System Projectでは、

【1,000人限定で無料でFXの自動売買のEAを配布中】

です!!

・毎日チャートを見てるのに全く稼げなかった

・コンサルや塾に入ったけど全く稼げなかった

・裁量トレードは難しくて挫折した

・ツールやシステムを購入したが全く稼げなかった

・時間がなくて裁量トレードを行える時間がない

・自動で楽に稼ぎたい

という風に思っている方はこの企画はおすすめです。

フォワードテスト・バックテストを

しっかり行ったパフォーマンスの良いEAを提供中です!!

また、どんどん新しいEAも随時無料配布します!!

人数限定なので早いものがちです!!

もしFX-EA System Projectに興味があれば

是非参加してください。

MT4インジケーター作成
\記事が役に立ったらシェアしてね/
FX-EA System Projectをフォローする
FX-EA System Project Creator

コメント

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