FX オープニングレンジブレイクアウト(短期ボラティリティに基づくオープニング・レンジ・ブレイクアウト)のバックテストしてみた その1
今年の残り期間はFXの運用に力をいれていこうかと考えています。
バイナリーオプションのバックテスト及びフォワードテストが少し落ち着てきたのでねー
本題
短期ボラティリティに基づくオープニング・レンジ・ブレイクアウト(オープンレンジブレイクアウト)とは
米国Futures Truth社の『The Ultimate Trading Guide』邦訳『究極のトレーディングガイド』という本によると長らく機能し続ける堅牢なシステムは必ず以下の5つの仕組みが含まれてるそうです。
・ドンチャン・チャンネル・ブレイクアウト <=現在フォワードテストにて実行しています。近く実弾開始
・***************
・短期ボラティリティに基づくオープニング・レンジ・ブレイクアウト <=今回はこれ
・***************
・***************
(本の内容を書いていいのか分からないので一応隠しています。)
↑購入は中古で良いと思いますよー
個人的には現在運用しているチャネルブレイクアウトと似たような手法かなーと考えています。
トレンド方向にブレイクしたらエントリーといった感じ。
実は本自体は数カ月以上前に速攻で買ったのですが読んでると眠たくなるので、まだ読破出来ていないんですよね。。。
机の上に置いているのですが手か伸びないw 何でだろうなー
お盆辺りで読み切ってしまいたい。
※中古で買ったのですが前の方の書き込みがいたるところにw参考にさせてもらってます。
なので完全にオープンレンジブレイクアウトを把握しているかと言われると若干不安な点もあるので、もし間違った認識があればコメント等でご指摘頂けると助かります。
プログラム構築について
以前から気になっていた短期ボラティリティに基づくオープニング・レンジ・ブレイクアウトですが中々プログラム組もうとする意思が出なかったのですが思い立ったが吉日。
手間かかるかなーと思っていましたが意外と簡単に構築出来てバックテストを行ってみました。
プログラム自体は約1日も掛からない位で組めたんじゃないでしょうか。チャネルブレイクアウトと近いので応用すれば簡単に出来ました。
MT4(mql4)ではありませんが以下ブログのソースコードが大変参考になりました。
https://fwww.me/2018/07/28/ganso-doten-python-pine/
※この記事はbitcoin用かな。
特にこの部分。
range = ((high[5] + high[4] + high[3] + high[2] + high[1]) - (low[5] + low[4] + low[3] + low[2] + low[1])) / 5 k = 1.645 up = open + (range * k) < high down = open - (range * k) > low
本に書かれていた短期ボラティリティの意味が何となくでしたがソースコードみれば一発でしたね。
係数 k も何かしら決まったものがあるのかなーと創造していたのですが様々な係数でバックテストすればいいって事なんだろうなーと。
mqlで書くとこんな感じかな。
input int Renge_term = 10; input double Kei = 1.618; double HighestRate = ""; double LowestRate = ""; bool range_check() { double range = ""; double high_x = ""; double low_x = ""; for ( int i = 1; i < Renge_term + 1; i++ ) { high_x = high_x + High[i]; low_x = low_x + Low[i]; } range = (high_x - low_x) / Renge_term; HighestRate = Open[0] + (range * Kei); LowestRate = Open[0] - (range * Kei); return(0); }
HighestRate又はLowestRateを超えたらエントリーといった具合。
毎tick計算させるとあれなので各足の一番最初だけ走らせて処理すればOKかな。
※Renge_termとKeiはバックテストの最適化で適当に探る感じ。
気になっていた理由はUkiさん
TwitterでBitcoinのトレードで有名なUkiさんが公開した基本ストラテジーのオープンレンジブ・レイクアウトが頭の片隅にありFXで運用したらどうなるんだろうなーって。
お待ちかねのロジックを公開。
— UKI (@blog_uki) April 5, 2018
(元祖)ドテン君はブレイクアウトだが通常のHLチャネルブレイクではない。その手法は「オープニングレンジ・ブレイクアウト」と呼ばれるものである。文章での説明は面倒なのでhohetoとの会議資料をそのまま添付する。ストラテジーに関する質問には応対できません。 pic.twitter.com/LB6mdxVZZo
akagamiさんがドテン君を公開したタイミングでUkiさんの手法も話題になっていたかと記憶しています。
短期ボラティリティに基づくオープニング・レンジ・ブレイクアウト(オープンレンジブレイクアウト)のバックテスト結果
結論から言うと利益出ると思います。
エントリーはオープニングレンジブレイクアウトですが決済は簡単に思いつく限りでは4種類あるかな。
- ドテン決済反対側で決済
- 利確損切を指定して決済
- トレール幅での決済 トレンドーフォロー側のブレイクとアウトと相性が良いと考えます。
- 別の設定でオープニングレンジブレイクで決済
個人的にはトレール幅での決済に注目しています。
今回初めてトレール幅を考慮したプログラムを組んでみましたが mql の標準機能のOrderModifyを利用すれば簡単に解決です。
利益を最大化出来るのはドテンが一番かなー
バックテスト期間及び条件
通貨ペア : USDJPY
時間 1H(1時間), 4H(4時間)
ヒストリカルデータ Dukascopy
期間 2014/1/1 - 2018/12/30 5年程
今回はドテンした場合の結果を案内です。
1時間足よりも4時間足の方が成果が良かったです。
1時間足のバックテストデータ
4時間足のバックテストデータ
一番成果良いバックテストの設定
4時間足
過去17足
係数 1.9
取引回数151
プロフィットファクタ 1.54
になります。