【MT4】MQLプログラミング組み込み指標関数による移動平均線の作成

【動画】組み込み指標関数による移動平均線の作成

移動平均線インジケーターのソースコード

//+------------------------------------------------------------------+
//|                                                          ma2.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrYellow
#property indicator_style1  STYLE_SOLID
#property indicator_width1  3
//--- plot Label2
#property indicator_label2  "Label2"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrAqua
#property indicator_style2  STYLE_SOLID
#property indicator_width2  3
//--- indicator buffers
double Buf_0[];
double Buf_1[];
extern int MA_F=50;
extern int MA_S=200;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,Buf_0);
SetIndexBuffer(1,Buf_1);

//---
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 i,limit;
limit=rates_total-prev_calculated;
for(i=limit-1 ; i>=0 ; i--)
{
Buf_0[i]=iMA(NULL,0,MA_F,0,MODE_SMA,PRICE_CLOSE,i);
Buf_1[i]=iMA(NULL,0,MA_S,0,MODE_SMA,PRICE_CLOSE,i);
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+

MT4の組み込み指標関数で移動平均線を作成する

MetaEditorを開いて、作業してみましょう。

ファイルメニューから新規作成、カスタムインディケータ―を選びます。

名前はma2として次へ、ここは好きな名前で大丈夫です。

イベントハンドラはそのままで次へ、描画プロパティは、今回移動平均線を2本作りますので、2回追加して、色は見やすい黄色と水色にしておきます。

そして完了。

これまで初期値のまま使ってきましたが、計算した指標の数値を直接入れるバッファの名前が長いので短くします。
26行目と27行目、Buf_0、Buf_1にしました。

そうすると、これを活性化させるSetIndexBufferも変更する必要がありますので、34行目と35行目、Label1BufferとLabel2BufferのところをBuf_0、Buf_1に変更します。

ここまでが、準備段階です。

下へスクロールし、内容の記述は、55行目からになります。

int i,limit;
limit=rates_total-prev_calculated;

この次は、for文を記述します。

for(i=limit-1; i>=0; i–)
{

}

この、空いている部分には、移動平均線の組み込み指標関数を記述します。

このfor文、インジケーターをチャートに挿入したときは、「prev_calculated=0」となっているので、「limit=rates_total」となり、for文でループさせて-1ずつ減らし、最終的に0に減らすことでチャート全体の指標を計算することができます。

ここで、次にチャートが動いて新しくバーが出ると、Oncalculateで再計算、rates_totalには全体のバーの数+1が入り、prev_calculatedには全体のローソク足の数が入るので、引き算すると結果は1、それを次のfor文に入れます。

ここで、limit-1で-1された答えの0が変数iに入るので、最新のバーだけ描画されます。MQLでは、1ではなく0番目が、最新のバーでした。

最後に、
今回の目玉である組み込み指標関数を記述します。

記述ルールはこちら。

iMA(①symbol,②timeframe,③period,④ma_Shift,⑤ma_method,⑥applied_price,⑦shift)

中身は引数と言いますが英語なので、日本語にするとこうなります。

iMA(①通貨ペア,②時間枠,③移動平均の期間,④移動平均を右方向にシフトするバーの数,⑤移動平均の種類,⑥移動平均を算出する位置,⑦移動平均の算出バー)

組み込み指標関数iMAの説明

①symbol 通貨ペア

通貨ペアを設定します。「NULL」と書けば、プログラムを挿入したチャートの通貨ペアを使用します

②timeframe 時間枠

計算に使用する時間枠を設定します。「0」で現在のチャート上の時間を使用、1時間足なら60、4時間足なら240、日足なら1440という風に設定します。

③Period 移動平均を算出するバーの本数

5日移動平均なら5、200日移動平均なら200と入力します。
ただ、これだと固定されてしまうので、今回のプログラムでは変数にしてパラメーターで数値を変更可能にします。

そのため、いったん上に戻って、
28、29行目に
エクスターンで変数を宣言しておきます。

ここでは移動平均線を2本引くので、
短期移動平均線をMA_F、
長期移動平均線をMA_Sとしておきます。

extern int MA_F=50;
extern int MA_S=200;

④MA_Shift 移動平均を右方向へずらすバーの数

一目均衡線の遅行線のように右方向へずらす場合、その数を指定します。
特になければ「0」で大丈夫です。

⑤ma_method 移動平均の種類

移動平均の種類を4つの中から選びます。

MODE_SMA 単純移動平均(SMA)
MODE_EMA 指数移動平均(EMA)
MODE_SMMA 平滑移動平均(SMMA)
MODE_LWMA 線形加重移動平均(LWMA)

になります。
今回は、 単純移動平均なのでMODE_SMAです。

⑥applied_Price 適応する価格

計算にどの価格を使うかを指定します。移動平均線では基本的には終値を使うのでPRICE_CLOSEとなっています。他にも始値、高値などいろいろな値で計算できます

PRICE_CLOSE 終値
PRICE_OPEN 始値
PRICE_HIGH 高値
PRICE_LOW 安値
PRICE_MEDIAN (高値+安値)÷2
PRICE_TYPICAL (高値+安値+終値)÷3
PRICE_WIGHTED(高値+安値+終値*2)÷4

⑦shift 現在のバーから何本目のバーの移動平均を算出するかを探します。現在のバーが0で、過去のバーは1、2、3と数字が増えていきます。つまり、変数iを入れればよいです。

組み込み指標関数iMAの記述例

組み込み指標関数iMAで2本の移動平均線を描画

斉藤 学斉藤 学

斉藤 学

サラリーマンで働く傍ら、FXで独自の手法を開発して短期間のうちに50万円から6,900万円まで増やす。 その経験をもとに、扶桑社や成美堂出版から書籍6冊、パンローリングからDVD3本を出版。マネー雑誌への執筆やセミナー講師、投資関連ホームページやFXブログの運営、メールマガジンの発行を行っている。

一緒に読まれている記事

特集記事

無料メールマガジンはこちら

利用規約に同意のうえ、申し込みください。

MT4売買シグナルインジケーターの無料プレゼント

注目記事ランキング

  1. 1

    【月曜早朝から動く】サクソバンクレート・為替チャート

  2. 2

    【+3,102pips!】マネーパートナーズのFX売買シグナルと未来予測ツール

  3. 3

    【MT4】「Arrow Signal」売買シグナルインジケーター&特別ボーナス

  4. 4

    【勝率UP!】曜日や日・月別為替相場の動きでFXを見極める

  5. 5

    【未来チャート】ぱっと見テクニカルで未来予測ができるFXプライム byGMO

  6. 6

    【サンデーダウ】土日に動く中東レートの表示方法と見方も解説

  7. 7

    【暴露】FXで勝ちたければ、NYダウを見ろ!

  8. 8

    【MT4】チャート上に手書き&描画ツールインジケーター2選

  9. 9

    【FX・為替の1日】初心者が必ずチェックすべき時間別攻略法

  10. 10

    【無料】よく当たるFX為替レート予想のメールマガジン登録

おすすめFXトレード手法

  1. 【MT4】「Arrow Signal」売買シグナルインジケーター&特別ボーナス

  2. 【松井証券FX】乖離トレードの必勝パターンはこれ!比較ペアチャートと100円からできるFX

  3. 【+3,102pips!】マネーパートナーズのFX売買シグナルと未来予測ツール

  4. 【LINE FX】初心者でもできるラインが提供するFX!

  5. 【GMOバイナリーオプション攻略法】期間限定で勝ち方を無料公開中!

  6. 【未来チャート】ぱっと見テクニカルで未来予測ができるFXプライム byGMO

  7. 【マーケットナビ】ヒロセ通商で本日の利食い・損切りが分かる!

MT4 FX無料攻略法 特集記事
  1. 【MT4】インジケーターと自動売買を解説

  2. 【MT4】MetaTrader4を活用する4つの方法

  3. 【MT4】大損したFX自動売買のEAにブチ切れ!

  4. 【MT4】「sign_alert」シグナルアラートやメール送信をしてくれるインジケーター

  5. 【OANDAオーダーブック】ポジションと注文比率で「損切り予備軍」が分かる!

  6. 【MT4】VQ・VQ2インジケーターで売買シグナルを表示

  1. 【FX自動売買】底と天井で売買するFXブロードネットのトラッキングトレード

  2. 【松井証券FX】乖離トレードの必勝パターンはこれ!比較ペアチャートと100円からできるFX

  3. 【マーケットナビ】ヒロセ通商で本日の利食い・損切りが分かる!

  4. 【LINE FX】初心者でもできるラインが提供するFX!

  5. 【MT4】「Arrow Signal」売買シグナルインジケーター&特別ボーナス

  6. 【少額FX】たった4円でFXができるSBIFXトレード!

  1. 【月曜早朝から動く】サクソバンクレート・為替チャート

  2. 【MT4】MQLプログラミング超初心者入門

  3. 【勝率UP!】曜日や日・月別為替相場の動きでFXを見極める

  4. 【暴露】FXで勝ちたければ、NYダウを見ろ!

  5. 【暴露】エリオット波動は使えない、詐欺師のインチキテクニカル分析

  6. 【暴露】フィボナッチはインチキ、トレードで勝てない理由を解説

・現在の閲覧者数:5