トレード備忘録 & MT4/MT5インディケータ及びEAの開発

日々のトレード備忘録及びMT4/MT5に関する事項

MQL5超入門 iMAを利用したインジケータ(その二)

2017-12-09 14:04:34 | 投資

 前回、「とあるMetaTraderの備忘秘録」で取り上げられた掲題のプログラムをレビューし、最新のMT5で稼働させるための必要な変更・加筆をいたしました。大変シンプルなプログラムながら、MQL5理解のためには絶好の練習材料でもありました。 

 移動平均線であれば、MT5にトレンド系指標として標準搭載されているインジケータ Moving Averageを使えば、SMAであれEMAであれMAの種類やMA期間を自由に選択して、簡単にチャートに表示させることができます。ただし、Moving Averageのソースコードは公開されていません。 

 一方、前回修正・加筆したインジケータでは、MAの期間は変数 MAPeriodを設定してその選択ができましたが、移動平均の種類(SMA、EMA等)の選択はできません。MT5の移動平均線の種類はMT4のように変数として設定できない仕様になっているからです。でも、実際にMoving Averageではその選択ができているのですから、工夫をすれば標準搭載のMA同様のプログラムに変身させることができるはずです。 

 場合分けには必需品でもある switch文を利用して目的を達成することができました。前回のプログラム中、// 外部パラメータと// 初期化関数を下記の通り変更することで、プログラム完成です。(変更部分のみ) 

// 外部パラメータ

input int MAPeriod = 10;   // 移動平均の期間

input int MAtype = 0; //0=SMA,1=EMA,2=SMMA,3=LWMA

 // 初期化関数

int OnInit()

{

    // 指標バッファの割り当て

    SetIndexBuffer(0,MALineBuffer,INDICATOR_DATA);

    // テクニカル指標の初期化

    switch(MAtype)

    {

      case 0:

      MA_handle = iMA(_Symbol,0,MAPeriod,0,MODE_SMA,PRICE_CLOSE);

      break;

      case 1:

      MA_handle = iMA(_Symbol,0,MAPeriod,0,MODE_EMA,PRICE_CLOSE);

      break;

      case 2:

      MA_handle = iMA(_Symbol,0,MAPeriod,0,MODE_SMMA,PRICE_CLOSE);    

      break;

     case 3:

      MA_handle = iMA(_Symbol,0,MAPeriod,0,MODE_LWMA,PRICE_CLOSE);

      break;

     }

      return(INIT_SUCCEEDED);

 }

 

 

 

 



最新の画像もっと見る

コメントを投稿