ZigZagインジケーターを使ったトレード戦略(ブレイクアウト)を徹底検証

公開日:  最終更新日:2016/08/02

今日はZigZagというインジケーターを使って検証してみたいと思います。

ZigZagインジケーターとは?

何をするために開発したのかは知りませんが、たぶん直近の高値と安値を知ることとトレンドを見るために作ったのではないかと勝手に推測しています。

WS000553

赤いラインがZigZagインジケーターです。

パッと見で左は下降トレンド、それから上昇に転じているように見えます。

何度か止まっているところがあれば「サポート」「レジスタンス」として機能していると見ても良いでしょう。

他のブログ等では「エリオット波動」を見るのに使っている人もいるようです。(僕はエリオット波動使っていないので検証したことがありませんし、今後もしませんw)

ダウ理論によるトレンド判断(高値も安値も切り上げていれば上昇トレンド、両方下げていれば下降トレンド)にも使えそうです。

ZigZagインジケーターを利用した戦略

今回は以下の条件でトレードします。

  • 1つ前の頂点に逆指値を置きます(高値の頂点は買い、安値の頂点は売り)
  • 頂点が更新されたら逆指値を置き直します
  • 損切り・利食いは固定pips(必ず損小利大とする)

以上です。直近高値/安値ブレイクで仕掛けます

簡単すぎて「こんなので勝てるのか?」と疑われそうですが、勝てるから記事にしてるんですね!(笑)

それではEAを作ってバックテストしてみましょう。

MT4標準以外のインジケーターを呼び出す場合にはiCustom関数を使います。

zigzag=iCustom(Symbol(),0,”ZigZag”,depth,deviation,backstep,0,1);

太字の部分がインジケーターのパラメーターで、全てのパラメータを指定する必要があります。(ZigZagの場合は3つ)

その後ろの0はバッファの番号。zigzag以外にインジケーターが無ければ0です。その後ろの数字がShift。最新のバーから何番目かを指定します。

ZigZagの場合、頂点以外は0が返る(頂点のみ値を返す)という仕様ですので、forでループして頂点を取得すると良いでしょう。

for (i=1; i<bars; i++) {
zigzag=iCustom(Symbol(),0,”ZigZag”,depth,deviation,backstep,0,i);
if (zigzag!=0) return(zigzag);
}

※barsにはiBars関数で取得したバーの数を入れています。

上記コードでは直近の頂点を返していますが、今回の戦略では直近ではなくその1つ前になります。

WS000554

○のついた頂点を上抜いたら仕掛けます。直近の頂点(×)は上図の時点では使いません。

バックテスト

それではバックテストしてみます。通貨ペアはユーロドル、1時間足です。

バックテスト期間は2010年1月から2015年4月24日、損切りは4pips、利食いは20pipsとしました。(ロットは0.1固定)

WS000555

しっかり右肩上がり。PFは1.6です。

勝率は25%と低いですが、4回に1回しか勝てなくても利益が残るシステムになっているので問題ありません。

トレンドフォローシステムですので、大きなトレンドを見てトレンド方向に仕掛ければ勝率はもっと上がると思います。

利食いも固定ではなくできるだけ伸ばすように改修してみたいですね。

今回はEAを作成していますが逆指値を置くだけなので、裁量でもこの戦略は使えると思います。

ZigZagブレイクアウトシステムのポイント

「直近高値・安値ブレイクアウトのトレンドフォローで、かつ損小利大にするだけでも勝てる」ということになるかと思います。

以前から何度も書いていますが、順張りが王道。損小利大が王道。です。

  • 順張り
  • 損切り
  • 損小利大

誰もが言ってる当たり前のことができるだけで良いんです。

もちろん、逆張りでも勝てる戦略を使っていれば勝てます。(僕はトレンドレスな状況で逆張りするシステムを愛用しています。これは勝てる戦略があってのことですし、順張りの方が基本的に勝ちやすいので初心者や勝てない人は順張りを狙ったほうがいいです。)

※偉そうなこと書いていますが、ほとんど師匠の受け売りです(笑)

ZigZagブレイクアウトシステムの改良

人によると思いますが、僕はPF1.6では使いたいと思いません。(2.0以上は欲しい!)

改良1 執行時間軸の変更

勝率を上げるためにフィルタを加えていきますが、そうするとトレード回数が減ってしまい、検証に十分なトレード回数にならない可能性がありますので最初に時間軸を変更することにしました。

ダマシが多くなり、PFも悪化すると思いますが最終的には1時間足の時よりも良い結果になるよう調整したいと思いますっ。

WS000573

15分足に変更、20pipsで利食い、1.5pipsで損切りとしました。

PFは1.37、勝率は9.30%と大幅に悪化しましたがトレード回数は3805回あります。

改良1 トレード時間制限

「勝ちやすい時間帯」のみトレードするよう、制限します。

WS000584

最適化を実行し、総損益が一番良かったGMT2時~20時を採用しました(日本時間11時~朝5時)

なお、PFは1.48で勝率は10%程度です。

改良2 Volumesインジケーター追加

ブレイクの際、相場に勢いがあるかどうかチェックします。

最初、ADXを使ってみたのですがイマイチの結果になり・・・試しにVolumesを使ったところ、良い結果がでたのでこのインジケーターを採用することにしました。

4時間足で2600を超えている場合にのみ仕掛けます。

※1時間足や15分足でも検証しましたが、4時間足が一番良い結果になりました。

4時間足>1時間足>>>>>15分足 という感じ

これでPFは1.70まで上がりました。

改良3 ブレイクイーブン/トレーリングストップ

ある程度利益が出たところでブレイクイーブンにします(+0.1pipsでStopLoss)

また、トレーリングストップを追加。トレーリングストップで利食いします。(固定の利食いは80pipsにしました)

WS000601

PF2.74まで上げられました。

ようやく使えるレベルに仕上がったかなと・・・。

ブレイクイーブンを1.5pipsにして、損切り分を稼いでも良いと思います。

(利益は多少悪化しますが、ずるずる資金が削られていく状況も多々発生するはずなので、損切り分くらい稼ぐと気分的に楽になるかなと・・・)

※「もっと勝率を上げられないか」と、EMAやRSI、CCI、ZigZagによるトレンド判断などを試してみましたが、いずれも上手くいきませんでした・・・。

なお、利食い幅を広げ、損切り幅を狭くするとPFは上がる傾向に。ただ、勝率が大幅に減少していき最終的には1000回以上のトレードで十数回の勝ちトレード(勝率1%ちょっと)となり・・・実用に疑問を抱いて不採用としました。

多通貨ペア対応

この手のトレンドフォローシステムは通貨ペアを選ばず使えます。

ポンドドル、豪ドル米ドル、ドル円なども試してみたところPF1.6~1.8程度となりました。

(ユーロドルが最も長くトレンドが続く傾向にあるので、ユーロドルが一番良い結果になりやすい・・・と僕は思っています。)

恐らくクロス円やその他の通貨ペアでも使えると思います。

裁量トレードの場合は監視通貨ペアや執行時間軸が増えると大変になってくるので、優位性の高いものに絞って監視することになるかと思いますが、EAの場合は大量に起動してナンボですから、多通貨ペア・多時間軸で起動した方が安定すると思います。

まとめ

  • ZigZagインジケーターを使った高値・安値ブレイクに優位性あり
  • 損小利大
  • 執行時間帯も重要

トレンドの方向を見定めて仕掛けてもいいです。(EMAを使って判断させてみたところ、効果がありました。トレード数が半分くらいに減ったので今回は採用を見送りましたが、利用価値はあると思います。)

また、その他、サポレジ(MA、ボリンジャーバンド、ダブルゼロ等の切りの良い価格、トレンドライン 等々)を意識しても勝率は上げられると思います。(アイデア次第でまだまだ良くなるはず・・・です)

今回はブレイクで仕掛けましたがブレイク後、戻りを待ってから仕掛けるという手法も良いのではないか?と思っています。

これについては後日、検証するかもしれません。

ZigzagBreakOutEA販売開始のお知らせ

MetaTrader4で動作する自動売買ソフト(EA)の販売を開始しました。

販売の予定は無かったのですが、とても多くの方から要望されましたので…リアル口座での検証を行い、バックテストと同じような動作をすることが確認できたので販売することにいたしました。

ご興味ありましたら、下記の記事をご覧ください。

シェアありがとうございます

  • このエントリーをはてなブックマークに追加
  • Pocket

Comment

  1. fxjol より:

    こんにちは。

    裁量トレードの際にZigZagインジケータを使用してトレードしているので興味を持ちました。利用目的はダウ理論の確認、高値安値を視覚的にわかりやすくするためです。Zigzagの高値、安値ブレイクの優位性もEAで検証するとわかりやすいですね。ブレイク間際は荒い値動きも多いので損切り幅が4pips程度で機能するのは驚きです。

    ブレイクアウト後の戻りの検証については戻りの見極めをどうやって定義するのか悩みどころではないでしょうか。次回の検証も楽しみにしています。

    • emija より:

      コメントありがとうございます。
      やはりダウ理論の確認にも使えますかっ。
      損切り幅が狭いので勝率が異常に低い・・というのが辛いところ・・・。
      実トレードでは負けはもっと増えるかもしれませんので、実際に利用する場合にはもっと広い損きり幅で調整したほうが良いかもしれません。(MT4のTickは仮想Tickですので・・実トレードではもっと荒く動く可能性が高いと思っています)

      戻りの判定でちょっと作ってみたのは「抜けた後、指値を置く」というものですが、これは「ブレイクでついていく(逆指値)」の方が良い結果になりました。
      作るのはちょっと難しいかもしれません・・・;;

  2. fxjol より:

    個人的にはダウ理論もチャートを細かく見ていくとキリがないのでZigzagによるフィルタがちょうどいいと感じています。

    ブレイクアウト直後の戻りの判定ですが、私はレジスタンス、サポートライン際でのローソク足の形状に着目しています。例えば上抜けブレイクアウトした後に反落してもラインをまたいで下ヒゲ残しのローソク足ができれば、ヒゲの下にストップをおいて一度買ってみます。ヒゲを残したということは一度下がったが、短い時間で戻したという事実はあるわけですし…。

    EAとしては例えばオシレータ系トレンドフォローのフィルタに「エントリーはZigzagでブレイクアウトした後の一定期間内で行う」と設定することでブレイクアウト後の初めての押し、戻りを狙う…といった戦略となり、有用そうな気もしないではないですね…。

    長文失礼しました。

    • emija より:

      ZigZagのダウ理論については、僕の方でももう少し検証してみたいと思います!
      また、戻りの判定に関するご意見ありがとうございます。
      一定期間内、というロジックは難しくないですねっ。
      参考にさせていただきます!

  3. […] .6~2.74になるシステムのロジックを公開してくれています。 https://tasfx.net/2015/05/03/post-5278/ […]

    • emija より:

      スプレッドは0にできないはず・・・最小値は1。
      僕は10でバックテストしました。・
      データはFXDDの1分足から生成しています。
      後は・・なんだろう?

  4. trade-learner より:

    はじめまして。上記のコメントにあるサイトの者です。
    コメントに記載していただき、ありがとうございます!

    スプレッド10にしてやってみましたところ、似たような結果が得られました。
    スプレッド0を設定するとスプレッドが0にはならずブローカーの現在スプレッドになるというMT4の仕様を、私が理解していないのが原因でした。

    スプレッド0にできないはずというコメントでわかりました。
    ありがとうございました。

    • emija より:

      解決したみたいですねっ^^

      僕は別に凄くないということがバレましたがっ!(笑)

  5. 通りすがり より:

    こんにちは。

    EAの知識は中途半端なんですが、このサイトを参考にZIGZAGEAの作成を試みている者です。

    質問があります。私は成り行き注文でOrderSendしているのですが、
    1回目のエントリーがストップにかかった後、すぐに2回目のエントリーに入ってしまい、うまく行かない状態です。

    1回のエントリーで終わるような特別な成り行き注文のやり方をやっているのでしょうか?

    • emija より:

      記事にあるとおり。私は逆指値で注文いれていて…それ以外は特に何もしていません。
      ストップにかかったあと、再度、条件に合致すれば2回目のエントリーを行うと思います。
      エントリーは1回のみ、とするのであれば何らかの対策が必要になりますね。
      たとえばですが、エントリーした直後にGlobal変数にZigZagの数値を格納しておいて、
      ZigZagの数値が変わるまではエントリーしない…とかでしょうか。
      回避方法はほかにもあると思うので、考えてみてください。

  6. 通りすがり より:

    すいません、今きづきました。
    確かに「逆指値を置きます」って書いてありました。
    ありがとうございました。

  7. 通りすがり より:

    うまく動くまで試してみます。
    記事更新楽しみにしてます。

  8. ごん より:

    こんにちは、こちらの記事でジグザグの検証をしたいのですが、直近の頂点を何pipブレイクすればエントリーですか?
    タッチした瞬間エントリーするのでしょうか?

  9. emija より:

    作ったEAはタッチでエントリーしています。

    もしかすると数pips程度ブレイクしたのを確認した方が良い可能性がありますので、そのあたりはご自信でご確認ください。

    • ごん より:

      こんにちは、返信ありがとうございます。
      あともう一点お聞きしたいのですが、このEAはすでに買いポジションを持っている時に、買いのサインが出た時にも、エントリーするのでしょうか?
      まし玉するか気になります^^

  10. zenya より:

    ロウソク足2本でレジ、サポを表示できるインジを探している傘寿を過ぎた者です。

    レジ:陽線、陰線のロウソク足の組み合わせ

    サポ:陰線、陽線のロウソク足の組み合わせ

    上記を表示できるインジケータ作成は不可能なんでしょうか?

    いまだに、このZigZagを探し当てられません・・・

    ダマシが多すぎるので作成に値しないからでしょうか?

    • emija より:

      コメントありがとうございます。
      どういったルールのインジケーターなのか、当方の知識不足によりわかりかねますが…
      作成不可能なインジケーターというのはあまり無いと思います。(作成の難易度はあります。難しいものは敬遠されがちです。)
      (特に海外で)あまり使われていないものは、「作ろうとする動機」がないのでネットに出回らない可能性はあります。

  11. ひで より:

    こんにちははじめまして!ネットサーフィンでこのHPを拝見し、興味深く見させて頂いております。このZIGZAGのブレイクの手法は私も裁量で使っているのですがEAでやろうとすると高値安値の「直近の」という数値をどうしたら良いのか分からなくて混乱しておりました。記事を拝見しますと、ZIGZAGブレイクだけでなく改良されて素晴らしいPFになっていて感動しました。このEAは販売などはされていないのでしょうか?

    • emija より:

      リアル口座でも利益になっていることと、販売して欲しいという要望が多いので近日販売を予定しています。(今週中には販売開始したいと思っています!)

      • 通りすがり より:

        ZIGZAGEAは、リアル口座で利益出てるんですか、すごいですね。
        私はここを参考にEA作成していたのですが、期待の通りのEAが作れず・・

        質問があります。
        ①記事通りのロジックで利益が出ているのでしょうか?
        ②販売するEAはソースついてるのでしょうか?(参考にしたい)
        ③EAを作る時ってどのように、ロジックを考えていますか?
        例えば、人と違うロジックを考えようとするのか、もしくは王道のロジックにいろいろ足すのか?など・

        • emija より:

          ①現在稼働中のEAは改良を加えています。
          ②ソースはつけない方向で考えています。
          (未改良であればつけても良かったのですが、現状、手を加えているのでできれば公開したくない・・・です)
          ③王道ロジックをベースに改良しています。

          以上です。

  12. 通りすがり より:

    改良ずみですか、残念。

    今後、未改良、または未改良よりもさらに下の段階のバージョンのソース付きを
    是非検討して頂ければと思います。

    なんとなくですけど、ソースがきれいそう、信頼できそう。
    なのでそれを参考にできればと思ってます。それを元に試行錯誤したいとも思ってます。
    自分勝手の意見ですが。

    質問の返答ありがとうございます。

  13. ひで より:

    発売されるんですね!
    楽しみです!

Your Message

メールアドレスが公開されることはありません。

PAGE TOP ↑