MetaTrader 4 プログラム初級編

MACD関数の使い方



 今回はMACD関数の説明をします。


 サンプルプログラムはこちらです。


 http://jidoubaibai.com/Samples/Sample%20MACD.mq4


 サンプルプログラムの使い方は、こちらで説明しています。 


 http://jidoubaibai.com/burogu11.html



 では、MetaEditorを起動して下さい。


 NameはiMACDにして置いて下さい。


 内容はほとんどiMAと変わりません。


 変数に入れる内容が異なるだけです。


 では、まとめてコードを書きますので、同じようにコードを半角英数で書いていってください。





int start()
{
   //変数の宣言
   int cnt, CurrentPosition;
   int Ticket;
   double kakoa,gennzaia;
   double kakob,gennzaib;

   // オーダーチェック(ポジションなどのデータ)
   CurrentPosition=-1;
   for(cnt=0;cnt < OrdersTotal();cnt++){
      OrderSelect(cnt,SELECT_BY_POS);
      if(OrderSymbol() == Symbol()) CurrentPosition=cnt;
   }

   //一つ前のMACDのメイン
   kakoa = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
   //一つ前のMACDのシグナル
   kakob = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

   //現在のMACDのメイン
   gennzaia = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
   //現在のMACDのシグナル
   gennzaib = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);


   // ポジションチェック ポジション無し
   if(CurrentPosition == -1)
   {
      //もしメインがシグナルを下から上にクロスしたら
      if( kakoa < kakob && gennzaia >= gennzaib)
      {
         //買いポジションを取る
         Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, Ask-(200*Point), Ask+(200*Point), "Buy", 0, 0, Red);

      }

      //もしメインがシグナルを上から下にクロスしたら
      if( kakoa > kakob && gennzaia <= gennzaib)
      {
         //売りポジションを取る
         Ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3,  Bid+(200*Point), Bid-(200*Point), "Sell", 0, 0, Blue);

      }



   }
   // ポジション有り
   else
   {

      //ポジションの選択
      OrderSelect(CurrentPosition,SELECT_BY_POS);

      //ポジションの確認
      if(OrderSymbol() == Symbol())
      {
         //もし買いポジションだったら
         if(OrderType()==OP_BUY)
         {
            //もしメインがシグナルを上から下にクロスしたら
            if( kakoa > kakob && gennzaia <= gennzaib)
            {
               //手仕舞い
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);

               //ドテンで売りポジションを取る
               Ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3,  Bid+(200*Point), Bid-(200*Point), "Sell", 0, 0, Blue);
            }

         }
         //もし売りポジションだったら
         else if(OrderType()==OP_SELL)
         {
            //もしメインがシグナルを下から上にクロスしたら
            if( kakoa < kakob && gennzaia >= gennzaib)
            {
               //手仕舞い
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);

               //ドテンで買いポジションを取る
               Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3,  Ask-(200*Point), Ask+(200*Point), "Buy", 0, 0, Red);
            }
         }
      }


   }
   return(0);
}



 書けましたか?


 前回と見比べて貰えれば分かると思いますが、下のコードが変わっただけです。


   //一つ前のMACDのメイン
   kakoa = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
   //一つ前のMACDのシグナル
   kakob = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

   //現在のMACDのメイン
   gennzaia = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
   //現在のMACDのシグナル
   gennzaib = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);



 前回のプログラムは変数に入れていたのがiMA関数でした。


 今回は、このiMACD関数の説明です。


 まず、日本語で内容を書きますね。



 iMACD関数(通貨ペア、タイムフレーム(時間足)、短期EMA、長期EMA、シグナル、値を取る時間(始値、終値など)、モード、シフト)



 iMAと似ている部分がありますので、簡単に説明していきます。



 通貨ペアタイムフレームiMAと同じです。


 基本的にNULLと入力しておけば問題ありません。



 短期EMA長期EMAシグナルMACDの使い方と同じです。



 値を取る時間は、今回は終値にします。


 PRICE_CLOSEと入れて置いてください。



 モードMACDメインの線シグナルの線かを選択します。


 メインならMODE_MAIN、シグナルならMODE_SIGNALと入力します。



 シフトは数字を入れることによって、その数字分前の足のデータを入力出来ます。


 0は現在のデータ、1なら1つ前の足のデータです。


 今回も前回のiMAと同じゴールデンクロスデッドクロス売買条件ですので、0と1の両方を変数に入れています。



 これで、今回のプログラムの説明は終了です。


 今回のプログラムは、MACD(短期12,長期26,シグナル9)のメインとシグナルのゴールデンクロスとデッドクロスで仕掛けをして、手仕舞いはその逆のルール、手仕舞いと一緒にドテンするというものです。


 一応、ストップとリミットを200pipsつけています。


 では、コンパイルをするためにcompileのボタンを押してください。


 エラーが出てきた場合は、半角になっているか、;を付け忘れていないか、{}を付け忘れていないか、{}の数は合っているかを確認して下さい。


 どうしてもエラーが分からない場合は、サンプルプログラムを参照して下さい。


 エラーが出なかったら、MetaTrader 4バックテストiMACDを選んで、スタートして下さい。


 終わったら、結果、Graph、レポートを見てください。




iMACD レポート ドル円一時間足




iMACD グラフ ドル円一時間足



 今回はこれで終了です。


--------------------------------------注意---------------------------------------

 半角のスペースが認識されない為、コードを見易くするために全角で書いている場合があります。
 実際にプログラムにコードを書くときは、コピー&ペーストせずに半角で書いて行って下さい。

<< ドテン売買の仕方 | TOP | 関数の使い方を調べる方法 >>

トップページ プロフィール ブログ リンク オーダーシステム 利用規約 問い合わせ