MetaTrader 5向けプロフェッショナルZigZagインジケーターの活用法

Mike 2011.01.19 19:54 29 0 0
添付ファイル

注意!このZigZagインジケーターのバージョンは、ZigZagコードに基づいており、著者であるPPCの許可を得て公開しています。私はこのバージョンをテストし、アルゴリズムの誤りを修正しました。

このコードは、MetaTrader 4用のZigzagインジケーターのMQL5バージョンです。

注意!AlexSTAL_OutsideBar.mqhライブラリは、MetaTrader 5クライアントターミナルの.. MQL5\Includeフォルダに配置する必要があります。

これで終わり?

ZigZagは、価格チャートを圧縮したようなものだと思います。ZigZagは、バーの価格(例えば、終値)や、高値/安値を用いて計算できます(最も一般的に使われる方法)。

MetaQuotesが提案する標準のZigZagを使っていると、いくつかの誤りを見つけました。主な問題は、標準のZigZagが外部バーのケースを処理しないことです。

2007年に、Rashid Umarov(Rosh)が、外部バー処理に対応したZigzag2 Rコードを公開しました(DRAW_ZIGZAGスタイルの代わりにDRAW_SECTION)。

では、「正しい」ZigZagの実装の特徴を定義してみましょう:

  • 高値と安値は厳密に交互に出現すべきです。
  • 次の(反対の)安値までの右側にあるすべてのバーの中で、高値は常に高い(または等しい)必要があります。
  • 次の(反対の)高値までの左側にあるすべてのバーの中で、安値は常に低い(または等しい)必要があります。

具体例を考えてみましょう(EURUSD, H1, 2006年12月8-13日)。ここでは、外部バーを含む2つのケースがあります。典型的なZigZagは「正しい」画像を構築できません。

図1. 入力パラメータ[12;5;3]と[12;0;0]の典型的なZigZag

図1.典型的なZigZag(入力パラメータ[12;5;3]と[12;0;0])

図2. 入力パラメータ[12;5;3]のZigzag2 R

図2. Zigzag2 R(入力パラメータ[12;5;3])


図3. 入力パラメータ[12;0;0]のZigzag2 R

図3. Zigzag2 R(入力パラメータ[12;0;0])

一見、正しい構築が図3に示されていますが、いくつかの特徴があります:

  1. この場合、入力パラメータのおかげで正しく構築されていますが、一般的にはアルゴリズムは任意のパラメータで機能する必要があります。
  2. 左側の外部バーは正しくありません。バーの高値/安値形成の順序が原因です:


ZigZagセグメントはこのように構築される必要があります。

私は以下のZigZagアルゴリズムを多くテストしました:ZigZag MT3、ZigZag、Zigzag R、Zigzag2 R、ZigZag_NK、ZigZag_ZUP89_nen、ZigZag_new_nen4、CzigZag、Swing_ZZ_1、DT_ZZ_nen、ZigZag_Talex、Reverse_ZZ、Points_ZZ_1、i_MF_Fractal_ZZ_3in1、ang_Amp_ZZ、ZigzagFr_v1、NonLagZigZag_v2、ZZ_FF_v3、ZigZag Ensign、ZigZag tauber、SQZZ Товаровед、ZZ_2L_nen wellx、Channel ZZ、Azzx_larryzz_3_0、RPoint、RPoint-m v2、ZigZagTF。しかし、どれも問題を正しく解決していませんでした。


このインジケーターでの図は以下の通りです:

図4. 入力パラメータ[12;0]のプロフェッショナルZigZag

図4. プロフェッショナルZigZag(入力パラメータ[12;0])

図5. 入力パラメータ[23;0]のプロフェッショナルZigZag

図5. プロフェッショナルZigZag(入力パラメータ[23;0])


このバージョンのいくつかの特徴:

  • ワンパスアルゴリズム
  • 最後のセグメントのみを再計算して再描画します(履歴更新を除いて、セグメントはキャンセルできません)
  • バー内の計算のための最適化アルゴリズムがあります(未完成のバーの中で価格が変わった場合、または価格変化がMinMotion入力パラメータで定義された閾値未満の場合、ティックの再計算は行いません)
  • 高値/安値形成の順序のための2つのアルゴリズムがあります:バータイプを使用するもの(速いが正確ではない)、および下位時間枠からのデータを使用するもの(履歴が必要で、その存在と正確さを確認する必要があります。または、OutsideBarライブラリを修正する必要があります)

ProExtraバージョンは公開されていません。なぜなら、MetaTrader 5のクオートの正確性が確認されていないからです。

以下はZigZagの不正確な構築の追加例です:

図6. EURUSD, H1, 11月29日-12月7日。 (赤い線:入力パラメータ[7;0;0]のZigZag。青い線:入力パラメータ[7;0;0]のZigzag2 R。)

図6. EURUSD, H1, 11月29日-12月7日。 (赤い線:ZigZag(入力パラメータ[7;0;0])。青い線:Zigzag2 R(入力パラメータ[7;0;0])。)

図7. EURUSD, H1, 2010年11月29日-12月7日。ZigZagセグメントの正しい構築。

図7. EURUSD, H1, 2010年11月29日-12月7日。ZigZagセグメントの正しい構築。


結論

残念ながら、このバージョンは完璧ではありませんが、私は改善に取り組んでいます。

チャンネルアルゴリズム(iHighest/iLowest)のために、時々高値をスキップしてしまうことがあります。

このインジケーターのバグや機能についてお知らせください。

リスト
コメント 0