DoubleZigZagでMetaTrader 5を活用する方法

Mike 2017.08.10 21:50 35 0 0
添付ファイル

アイデアの作者Maksimで、mq5コードの作者barabashkakvnです。

このエキスパートアドバイザーは、2つのZigZagインジケーターを使って分析を行います。小さいZigZagはパラメータが (13.5,3)、大きいZigZagはパラメータが8倍されたものです (13*8,5*8,3*8)。

//--- インジケーターのハンドルを作成
   handle_iCustom=iCustom(Symbol(),Period(),"Examples\ZigZag",13,5,3);
//--- ハンドルが作成できなかった場合
   if(handle_iCustom==INVALID_HANDLE)
     {
      //--- 失敗を通知し、エラーコードを出力
      PrintFormat("iCustomインジケーターのハンドル作成に失敗しました。シンボル %s/%s, エラーコード %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      //--- インジケーターが早期に停止
      return(INIT_FAILED);
     }
//--- iCustomX8インジケーターのハンドルを作成
   handle_iCustomX8=iCustom(Symbol(),Period(),"Examples\ZigZag",13*8,5*8,3*8);
//--- ハンドルが作成できなかった場合
   if(handle_iCustomX8==INVALID_HANDLE)
     {
      //--- 失敗を通知し、エラーコードを出力
      PrintFormat("iCustomX8インジケーターのハンドル作成に失敗しました。シンボル %s/%s, エラーコード %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      //--- インジケーターが早期に停止
      return(INIT_FAILED);
     }

トレードの判断を下すために、大きいZigZagの最後のピークの2つの脚 (13*8,5*8,3*8) を分析し、その脚に含まれる小さいZigZag (13,5,3) のピークの数をカウントします。

もしBUYポジションを開くシグナルが出た場合、すべてのSELLポジションはクローズされます。逆に、SELLポジションを開くシグナルが出た場合、すべてのBUYポジションがクローズされます。

エキスパートアドバイザーのパラメータ:

  • k: 大きいZigZagの脚にある小さいZigZagのピーク数の比率
  • k2: 大きいZigZagのピーク間の価格差の比率

例:

DoubleZigZag

大きいZigZag (13*8,5*8,3*8) は赤で表示され、小さいZigZag (13,5,3) は黄色です。

それぞれ、ABC は大きいZigZag (13*8,5*8,3*8) のピークです。

ABAC には、小さいZigZag (13,5,3) の9つのピークが含まれています。

テスト結果 (EURUSD,M1):

DoubleZigZag

リスト
コメント 0