FX自動売買研究記!

    - 為替相場をメタトレーダーの自作自動売買プログラムで勝ち抜く -

    窓埋めEAの最適化について 

    窓埋めEAを作ってみました。
    週明けに窓が空いたら埋める方向にポジションを持つ。というアレ。
    いわゆる窓埋め手法そのままですので、ここまではOK。

    問題は最適化です。
    窓埋め手法は確立された手法ではありますが、

    ○何pips窓が開いたら取引を開始するか。
    ○何pipsで損切りをするか。
    ○利確は全戻しでよいのか。
    ○そしてそもそも窓埋め手法は手法としての信頼性があるのか

    という、核心部分がどこにも明確に示されていません。
    これを検証していくことが必須と言えます。

    そのうえで、まず最適化の方針を立てていきたいと思います。


    僕は普段、10年間分のヒストリカルデータを用意して、
    5年間で最適化を行い、残りの5年間で仮想フォワードテストを行うことで、
    カーブフィッティングを排除してシステムの信頼性を確保しています。
    しかし今回の窓埋めEAでは、どうしてもカーブフィッティングの危険性が排除できません。

    もともとトレード回数が絶対的に少ないことに加え、
    試してみたい通貨ペアのヒストリカルデータが5年間分しか手元に無いためです。


    ですから、
    今回は仮想フォワードテストを行わないことにします。
    5年間で最適化を行い、その結果を全面的に信頼することにしました。
    後はライブでぶっつけです。

    ただ、最適化の結果がいかに良くても、以下の条件を満たさないものは除外します。

    1.買いと売りのトレード回数がほぼ同じである。
    2.買いと売りでエントリー・イグジットの条件(パラメータ)がほぼ同じである。
    3.損切り値が小さい

    僕は、買いと売りは全くの別物。という持論を持っていますが、
    そもそも窓埋め手法は、“窓は必ず埋まる!”という神話が手法の根拠となっていますので、
    この手法に限っては、買いと売りのトレードで極端な差異が生まれるべきではない。と考えています。

    ですから、
    いかに損益曲線がきれいな右肩上がりであったとしても、買いと売りで最適化結果が大きく異なるようであれば、
    それは窓埋め手法の根拠そのものによってもたらされた結果ではなく、カーブフィッティングの結果によるものである。
    と決め付けることにしました。

    あと、損切り値が小さいものにこだわる理由ですが、これは、
    “1年間無敗のシステム!を謳うEAは大抵、一回負けると1年分の利益が吹っ飛ぶ。
    のと同じ理由です。負けが想定されていない最適化というのは失敗なんです。
    特に、トレード回数が少ない窓埋め手法ではなおさらですね。
    敗北が組み込まれた上で損益曲線が右肩上がりになっていないと、とてもじゃないですが堅牢なシステムであるとは言えません。



    その結果、窓埋め手法を使用可能な通貨ペアは・・・

    ( 2011/02/02 21:33 ) Category 窓埋め手法の自動売買化 | TB(0) | CM(0)

    窓埋めEA 通貨ペア別の特徴(EURUSD) 

    窓埋めEA“ボーマ”の最適化、ユロドル編です。
    複数の通貨ペアで窓埋め手法を検証してみましたが、ユロドルと窓埋め手法の相性はバツグンです。

    ざっくりと最適化してみたところ、5年間無敗というパラメータが多々ありました。
    その一例がこいつです。



    この条件は、

    買いのエントリー : 窓を40パーセント埋めた時。
    買いの利食い   : 窓を100パーセント埋めた時。
    買いの損切り   : 125 pips
    売りのエントリー : 窓を10パーセント埋めた時。
    売りの利食い   : 窓を100パーセント埋めた時。
    売りの損切り   : 200 pips

    となっています。
    売りの方がエントリー条件が緩いにもかかわらず、買いに比べてトレード回数が少なくなっているのは、
    窓の10パーセントの指値エントリーでは、ブローカーの最低指値幅にひっかかってしまうためです。
    そのため、実際は売りの方が慎重なエントリー条件になっています。
    (売りトレードについては窓が大きく開かない限り指値予約すらされません)


    さて、上記の設定は最適化の過程でドローダウンが起こりそうなトレードを間引いている印象が拭えませんので、
    もう少し現実的な損益曲線のものを探しました。



    買いのエントリー : 窓を40パーセント埋めた時。
    買いの利食い   : 窓を100パーセント埋めた時。
    買いの損切り   : 125 pips
    売りのエントリー : 窓30パーセント埋めた時。
    売りの利食い   : 窓を100パーセント埋めた時。
    売りの損切り   : 200 pips

    これならどうでしょうか。売りのトレード回数もある程度増やしました。
    結果ドローダウンは大きくなっていますが、実際のトレードではよくてもこんなものなのではないでしょうか。



    でも、

    僕はこれで行くことにします。

    買いのエントリー : 窓を40パーセント埋めた時
    買いの利食い   : 窓を100パーセント埋めた時
    買いの損切り   : 150 pips
    売りのエントリー : 窓20パーセント埋めた時
    売りの利食い   : 窓を100パーセント埋めた時
    売りの損切り   : 200 pips

    ほぼ無敗ですが、一応買いと売りのトレード回数は同じくらいです。
    ちょうど上二つの間をとったようなパラメータになっています。

    カーブフィッティングになっていない保証は全くありませんが、
    漠然と“窓埋め手法”を行うよりは、検証に時間を使ったつもりです。
    なんとなくコイツは大丈夫!という自分の感覚を信じて突っ走ろうと思います。



    ( 2011/02/04 22:57 ) Category 窓埋め手法の自動売買化 | TB(0) | CM(3)

    窓埋めEA 通貨ペア別の特徴(EURUSD) 2 

    追加

    ◯ エントリーを成行にした場合
    エントリーを成行で行うパターンも作りましたが、そのEAではダマシ?が多発しました。
    損切りを甘くすれば結果として負けませんでしたが、含み損が恐ろしい事になるケースがほとんどです。
    裁量で窓埋め手法を用いる際にも、指値のエントリーをフィルタとして用いることを強く推奨したいです。


    ◯ エントリーを指値のままストップ値を100pips以下にした場合
    こっちの方がいいかもしれません。負けが考慮されているので、より現実的なトレードができそうです。





    追記:
    後日正式に作成した成行エントリーバージョンにて詳しく検証してみたところ、
    成行エントリーバージョンであっても、ストップ値を100pips以下にすることで、全体としてのドローダウンは
    激減させることができました。
    トータルのパフォーマンスではエントリーを指値で行うよりも成行で即座に行ったほうが好成績でした。
    そのため、指値のエントリーフィルタ導入を推奨するという文章は削除しました。

    こちらを参照のこと




    ( 2011/02/05 17:58 ) Category 窓埋め手法の自動売買化 | TB(0) | CM(2)

    窓埋めEA、仮想フォワードテストで惨敗 

    FXDDの5年間で最適化したものをAlpariNZの10年間でテストしてみました。
    結果、大敗。
    未知の期間でのバックテスト(仮想フォワードテスト)が悪くなってしまうのは仕方が無いことですが、
    今回はもっと恐ろしい結果になりました。


    下二つは、バックテスト期間を同じにして損益曲線を比較したものです。


    これがFXDDで最適化したもの。ベリーグッド。




    で、こっちはalpariNZで検証したもの。

    ( ゚д゚) !!
    (つд⊂)ゴシゴシ
    (;゚д゚)
    (つд⊂)ゴシゴシ

    (゚Д゚≡゚д゚)


    ・・・・・・ひどい。
    同じEA、同じパラメータ、同じ通貨ペアとはとても思えない。


    原因はエントリーフィルタとして用いている最低指値ポイントの違いによるものだと思い、
    (FXDDでは最低指値幅が4pips、アルパリNZでは2.8pips。コード内ではMarketInfo(Symbol(),MODE_STOPLEVEL)で取得しています)
    コードを修正して両ブローカーの最低指値幅を4pipsに統一した上で、再チャレンジしました。
    しかし、結果は変わらず。

    どうやら問題は価格データそのものにあったようです。

    左がAlpari、右はFXDD。
    同じ日のトレードなのですが、窓の開く方向すら違います。



    これじゃぁ同じ成績になるはずがないですよね。。

    alpariのヒストリカルデータ自体が変なの??
    (よく見れば価格が届いていないのに約定してるし・・・)
    それとも、窓埋め手法はブローカーによっては手法が破綻しうる手法なの???
    カーブフィッティングなの?????


    ちょっとリアルトレードが怖くなってきました。


    ( 2011/02/06 11:27 ) Category 窓埋め手法の自動売買化 | TB(0) | CM(3)

    窓埋め手法を全力で疑ってみた 

    昨日、せっかく作った窓埋めEAの信頼が揺らぎました。
    ブローカーを変えたことで信じられないドローダウンが起こってしまったのです。
    窓埋めEA、仮想フォワードテストで惨敗

    泣きながら考えてみたところ、

    1.手法自体の問題
     ”窓埋め”という手法そのもののに欠陥があった。
    2.最適化の問題
     手法自体は問題がないが、トレード数の少なさ故にカーブフィッティングが起こっていた。
    3.ブローカーの問題
     FXDDは窓埋め手法に適していたが、Alpariは不適であった。

    という3つの可能性が浮上しました。
    というわけで、先の惨敗がどの様な原因によるものなのかを検証してみることにしました。

    前回はFXDDで最適化したものがAlpariで全くうまくいかなかったわけですが、
    今回は、Alpariで最適化したものをFXDDで確認してみます。

    Alpariでは10年間分のヒストリカルデータを持っていますので、
    原因2、カーブフィッティングによるドローダウンあれば、
    Alpariの2001年~2005年で最適化したものを同じくAlpariの2006年~2010年で検証することで
    カーブフィッティングの有無を確認できます。
    前半5年間の調子が良く、その後の5年間で失速するようであれば、カーブフィッティングであるということです。
    その場合、原因1であることは否定できませんが、少なくとも
    トレード回数が少ない窓埋めEAでは、まともな最適化を行うことは困難であり、
    その為に生じたドローダウンであった可能性が高い(原因2が濃厚である)と結論づけられます。


    まずこれが、Alpariで最適化した結果です。

    昨日FXDDで最適化したしたときよりも、勝てる組み合わせが圧倒的に少なかったです。
    (この損益曲線がもっともマシなものです。)

    では次に、その後の5年間で仮想フォワードテストをしてみます。


    はい、ぜんぜんダメですね。
    どう見てもカーブフィッティングに見えます。原因2です。
    そもそも、前半5年間ですらまともに勝てる組み合わせがなかったのですから、
    もしかしたら窓埋め手法自体がマユツバだった可能性も濃厚です(原因1)。


    しかし、
    ダメもとで同じ設定のままFXDDで仮想フォワードテストを行ったところ、

    それなりに好成績でした・・・・

    最適化に用いたのはAlpariの2001年~2005年のデータであり、
    検証(仮想フォワードテスト)に用いたのはFXDDの2006年~2010年のデータです。
    EAにとって完全に未知のデータで検証を行っているので、この検証結果はなかなかに信頼できるものです。
    どうやら、前回の惨事は窓埋め手法自体の問題でも、カーブフィッティングによるものでもなさそうです。

    注目すべきは、同期間で仮想フォワードテストを行ったにもかかわらず、
    AlpariとFXDDで成績に大きな違いが見られると言うことです。

    つまり、
    1.窓埋め手法自体は有効な可能性が高く、
    2.必ずしもカーブフィッティングに陥り易いとは言えない。
    そして、
    3.ブローカーによる相性が起こりやすい。
    と結論づけられます。
    もちろん確定ではありませんが、この可能性が濃厚です。


    今後窓埋めEAを使うときはブローカーの相性に気を使おうと思います。


    ( 2011/02/07 23:22 ) Category 窓埋め手法の自動売買化 | TB(0) | CM(0)

    窓埋めEA 通貨ペア別の特徴(CHFJPY) 成行エントリーバージョン 

    今回はCHFJPYを対象に最適化を行いました。

    それにあたって、今まで使えない子として封印していた、成行エントリーの窓埋めEAを復活させました。
    両者の違いはこうです。

    指値エントリーバージョンではダマシを避けるため、
    窓の中ごろ~窓が埋まる直前 までの、窓の後半部分を獲得する仕様になっています。
    しかし、成行エントリーバージョンでは、
    窓が空いた瞬間~窓の中ごろ までの前半部分を獲得することに重きを置いています。
    獲得しようとしている窓の範囲が大きく違うのです。


    これまで使用していた指値エントリーバージョンでは、
    ドルストレートで力を発揮するものの、CHFJPYのようなクロスペアは苦手の様でした。
    無理やり勝ちに行こうとすると、ストップ値を大幅に広げなくてはならなかったり、
    ちょっと現実的には使い物にならない設定にしなければなりませんでした。
    ですので、窓埋め手法はドルストレートに限定して使用する予定だったのですが、

    使えない子、“成行エントリーver”を調整して使用したところ、案外CHFJPYにハマってしまいました。

    例によって、驚異的な成績!とは言えませんが、悪くはない感じです。



    一つ一つは大した成績ではなくても、多くの通貨ペアで同様のパフォーマンスが得られるのであれば、
    それらを同時運用して一つのシステムとする事ができます。
    指値エントリーバージョンで使えないと切り捨てた通貨ペアに対しても、
    成行エントリーバージョンで再チャレンジする必要がありそうです。

    ( 2011/02/11 12:42 ) Category 窓埋め手法の自動売買化 | TB(0) | CM(0)

    ボーマ成行エントリーバージョンでドルストレートを最適化 

    先の記事で、なかなかの戦力になると書いたBorma成行エントリーバージョンですが、
    ドルストレートに適用しても十二分なパフォーマンスでした。
    無印ボーマ(指値エントリーバージョン)を超えてしまったかもしれません。

    そもそも指値エントリーバージョンは、
    窓が埋まらずに発生する逆行を避けるため、窓の後半から窓が閉じるまでの幅を狙って取りに行ったものでした。
    しかし、この逆行によるドローダウンは、単にストップ幅を小さくしておけば解決できる問題だったみたいです。
    ストップ値を100pipsまでに限定して最適化したところ、思わぬ結果となりました。


    今回はFXDDのヒストリカルデータを用い、
    2005年~2007年の3年間を最適化に、2008年~2010年の3年間を仮想フォワードテストに用いて検証しています。
    (なお、最適化してbalanceの降順でソートした後、上位10~20個ぐらいの中から保守的なパラメータのものをピックアップしました。そういうわけで、多少作為は入っています。)


    以下、仮想フォワードテストである2008.1.1以降の3年間の成績です。

    ■USDJPY

    なお、mismatched charts errors については、2010年の1年間でチラッと発生しちゃったみたいですが、
    週明けの窓については影響がありません。無いはずです。


    ■GBPUSD

    売りの方が若干アグレッシブです。いい感じです。

    ■EURUSD

    ・・・・・・・・あれ??
    どうやら、前半3年間があまりに窓埋め手法にマッチしすぎていたようで、
    アグレッシブなパラメータばかりがチョイスされてしまったようです。

    あんまりなので、手動でパラメータを調整しました。

    ストップを若干広くし、エントリーを控え目にしました。
    これならいいでしょう!



    こう見ると、やっぱりCHFJPYなんかよりもドルストレートの方が優秀ですね。
    ドルストレートのペアに絞って運用するか、クロスペアも使ってみようか迷うところです。

    いや、それ以前に・・・ボーマ指値エントリーバージョンはどうしようかな・・・・
    もう要らない子なんじゃね?

    ( 2011/02/11 17:32 ) Category 窓埋め手法の自動売買化 | TB(0) | CM(0)

    窓埋めEA 2ヶ月間の実運用結果 

    窓埋め手法を自動売買化したEA、ボーマ君の実運用結果です。
    2011年2月14日の月曜日から運用を開始してから、今日4月16日までの間、
    9回の週明け日がありました。

    その間、窓が開かない週や開いても窓が小さすぎる(エントリー条件に満たない)週がありましたので、
    運用している3通貨ペアのトレード回数は、
    ユロドルでは5回
    ドル円では4回
    ポンドルでは1回
    という結果になりました。
    ポンドルはトレード回数が少なすぎますが、全体としては悪くない売買回数が確保できています。

    なお、窓が空くかどうかはブローカーに大きく依存するようです。
    FXDDでは上記のようなトレード回数となりましたが、他のブローカーではほとんど窓が開かなかったとの事です。

    さて、具体的なトレード結果は次のような感じです。


    ■EURUSD

    売買回数も勝率も申し分ないです。
    このまま様子を見ていこうと思います。


    ■USDJPY

    ユロドル同様、好調に見えます。
    しかし、ライブ口座では、実際はこのバックテスト結果とは違った結果になっています。
    ちょっとこれを見て下さい。

    このトレードは3月14日の朝の窓埋めトレードです。ストンと行く前にギリギリ利確できているように見えますが、
    実際のライブ口座では、ここで利確出来ずに反転の急動でロスカットをくらっています。
    しかも、設定した指値ストップロスから35pipsもマイナスに滑ったところで、
    つまりストンと落ち切った大底で決済されてしまいました。
    borma_ud_sl
    指値を置いておいても滑ることってあるんですね。あるんですか??FXDDさん!
    SLの指値から35pips滑りって・・・



    ■GBPUSD

    これは平和ですね。全く窓が開かず、一回しかトレードがありませんでした。



    -総括-
    ドル円で予期せぬ大損失がありましたが、その他のトレードである程度挽回できています。
    窓埋め手法の自動売買全体としては今のところ弱マイナスといったところです。
    今後、今回のようなおかしな現象が起こらなければ少しずつプラスを積み重ねていってくれるハズですので、
    もう少しあたたかい目で見守っていこうと思います。


    ( 2011/04/16 12:26 ) Category 窓埋め手法の自動売買化 | TB(0) | CM(0)
    プロフィール

    asahi_fx

    Author:asahi_fx
    日々のEA開発記録を綴っています。

    忙しい時は全然更新できませんが、
    進展がある度に少しづつ書いていこうと思います。



    運用中のEA


    Batou_EURUSD_1h_L
    Batou_AUDUSD_1h_L
    Batou_Counter_EURUSD_1h_L
    Batou_Counter_EURUSD_30min_L
    Ishikawa_EURUSD_1h_L
    Ishikawa_AUDUSD_1h_L
    Ishikawa_EURGBP_30min_L
    Ishikawa_USDJPY_1h_S
    Ishikawa_USDJPY_30min_S
    Togusa_USDJPY_1h_L
    Togusa_USDJPY_1h_S
    Togusa_USDJPY_5min_S
    Togusa_EURCHF_1h_S
    Togusa_EURCHF_5min_S
    Borma_USDJPY_15min
    Borma_EURUSD_15min
    Borma_GBPUSD_15min
    Paz_WPR_gradient_USDJPY_15min
    Pza_heikin_EURUSD_1h