アイデアの作者は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のピーク間の価格差の比率
例:

大きいZigZag (13*8,5*8,3*8) は赤で表示され、小さいZigZag (13,5,3) は黄色です。
それぞれ、ABC は大きいZigZag (13*8,5*8,3*8) のピークです。
脚 AB と AC には、小さいZigZag (13,5,3) の9つのピークが含まれています。
テスト結果 (EURUSD,M1):

コメント 0