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

【MQL】移動平均線を表示させるインジケーターの作り方【初級編】

MQL インジケーター作成 移動平均線を表示MT4インジケーター作成

移動平均線を表示させるインジケーター

今回は移動平均線を表示させるインジケーターを作っていきたいと思います。

メタエディタ(MetaEditor)を立ち上げる

メタエディタ(MetaEditor)を立ち上げましょう。操作は以下に記載しています。

【MQL】カスタムインジケーターを作成の流れについてわかりやすく説明してみた
カスタムインジケーターの作成の流れ カスタムインジケーターの作成の流れを説明していきます。 メタエディターを起動する MetaEditor(メタエディタ)をMT4から起動させる方法は以下の通りです。 ツール→メタエデ...

今回は名前を「ma-sample1」で作成します。

  • 移動平均線をチャートに表示する

プロパティを記述する

プロパティを記述していきます。

  • 赤色
  • SOLID
  • 幅3

という形でプロパティを定義していきます。

まずは、移動平均線を表示するためのバッファを一つ用意しましょう。

#property indicator_buffers 1//バッファ1つ

次に色を指定します。今回は赤色にします。

#property indicator_color1 Red//赤色

次に線の種類を決めます。今回は実線にします。

#property indicator_style1 STYLE_SOLID//実線

最後に実線の幅を決めます。今回は3にします。

#property indicator_width1 3//幅3

これでプロパティを記述は完了です。

#property indicator_chart_window//メインチャートに表示
#property indicator_buffers 1//バッファ1つ
#property indicator_color1 Red//赤色
#property indicator_style1 STYLE_SOLID//実線
#property indicator_width1 3//幅3
Copy

バッファを定義する

次にバッファを定義していきます。バッファはプロパティの下に記載しましょう。

double Buf[];//バッファ定義
Copy

OnInit()関数に記述する

OnInit()にバッファの設定を行います。

SetIndexBufferとはインデックスに用意したバッファを格納するための関数です。

今回は0番目にBufを紐付けさせます。

SetIndexBuffer(0,Buf);//インデックスに配列を紐付け
Copy

OnCalculate()関数に記述する

OnCalculate()関数に記述しましょう。

Barsとは、表示されているバーの本数を格納しているint型の変数です。

IndicatorCounted()は変化していないバーの本数です。

Bars-IndicatorCounted()とは、

インジケーターの確定値が計算されたバー(現在のバー以外)の本数を取得するということです。

  • Bars:チャートウィンドウに表示されているバーの本数を格納している
  • IndicatorCounted:変化していないバーの本数
int limit = Bars-IndicatorCounted();

次にfor文でiが0から始まりlimit以上になるまで繰り返します。

for(int i=0; i < limit; i++)//iが0から始まりlimit以上になれば終了

最後にもしその条件が正しい状態は、iMA関数を表示させます。

Buf[i] = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, i);//期間20のSMA

iMA関数というのは、移動平均線のテクニカル関数になります。

詳しくは以下の記事を参照してください。

【MQL】移動平均線の値を取得する『iMA関数』についてわかりやすく説明してみた
iMA関数 移動平均線とは、ある一定の期間の価格から平均値を計算して折れ線グラフで表にしたものです。 過去何日間かの価格を毎日計算するので、平均値が移動していくことから移動平均と呼ばれます。 移動平均線は、テクニカル指標の中で...

これでOnCalculate()関数の記述は完了です。

  int limit = Bars-IndicatorCounted();//バーの本数を格納-変化していないバーの本数
  for(int i=0; i < limit; i++)//iが0から始まりlimit以上になれば終了
   {
      Buf[i] = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, i);//期間20のSMA
   }
Copy

コンパイルする

コンパイルしてみましょう。チャートにセットして赤い移動平均線が表示されていればOKです。

MQL インジケーター作成 移動平均線を表示

ソースコード全体

ma-sample1のソースコード全体は以下に記載しています。

//+------------------------------------------------------------------+
//|                                                   ma-sample1.mq4 |
//|                     Copyright 2020, FX-EA System Project Creator |
//|                        https://creator.fx-ea-system-project.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, FX-EA System Project Creator"
#property link      "https://creator.fx-ea-system-project.com/"
#property version   "1.00"
#property strict

/*プロパティ*/
#property indicator_chart_window//メインチャートに表示
#property indicator_buffers 1//バッファ1つ
#property indicator_color1 Red//赤色
#property indicator_style1 STYLE_SOLID//実線
#property indicator_width1 3///幅3

/*バッファ*/
double Buf[];//バッファ定義

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Buf);//インデックスに配列を紐付け
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
  int limit = Bars-IndicatorCounted();//バーの本数を格納-変化していないバーの本数
  for(int i=0; i < limit; i++)//iが0から始まりlimit以上になれば終了
   {
      Buf[i] = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, i);//期間20のSMA
   }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Copy

まとめ

これで移動平均線を表示させることができましたね!!

インジケーターの表示は基本的にこのような形で行っていますので、

他のインジケーターも表示させることができます。

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をコピーしました