MT4への組み込みは以前、「分解モンテカルロ法をEAに組み込んで試してみました」でやりましたが、今回はMT5版のZigzagBreakoutに組み込みます。
分解モンテカルロ法ライブラリのMT5対応
まずはライブラリですが、「分解モンテカルロ法をライブラリ化する」で作成したファイルがそのまま使えました。(MT4でもMT5でも共用で使えることが確認できました)
ZigzagBreakout(MT5)への組み込みとバックテスト結果
前回の記事「【作ってみた】分解モンテカルロ法検証機」で検証した結果、勝率は40%程度が実運用では良さそうでした。
そこで、今回は勝率が40%程度になるようにパラメーターを設定します。
StopLossは30pips(300points)、TakeProfitは45pips(450points)に設定、MT4版の検証時と同様、フィルタはすべてオフ、トレーリングストップやブレークイーブンといった機能は使用しません。
ドル円・1時間足でバックテスト(期間:2015/01/01~2024/03/31)
ちょっと苦戦する時期もありますが分解モンテカルロ法が機能して右肩上がりグラフになりました。
PFは1.46、総損益は95,613円です。なお、ヒストリカルデータはAxioryの1分足データをインポートして使っています。(分解モンテカルロ法の初期ロットは0.01Lotsです)
ロジックの優位性のおかげで勝率が47%もありますので、もう少し勝率が低くても分解モンテカルロ法で対応できそうです。
というわけでトレーリングストップを使用します。
トレーリングストップの追加
トレーリングの開始を55pipsとし、トレール幅を10pipsとしました。TakeProfitは100pipsとします。
基本的にはトレーリングで決済するシステムです。開始が55pips、トレール幅が10pipsなので最低でも45pipsの利益を確保できます。
55pipsまでいかないと利益が確保できないため勝率は下がりますが、最大100pipsまで利益が伸ばせます。
このトレーリングのおかげでPFは1.51、総損益が137,189円に伸びました。
勝率は43.27%ありますので、破綻することは少ないでしょう。(破綻しないことを保証するものではありません)
今回は初期ロットを0.01にしましたが、余裕があるのでロットはもっと上げても問題ないと思います。
分解モンテカルロ法に対応したバージョンをアップしました
ひさしぶりの更新になりますが、ZigzagBreakoutEAの分解モンテカルロ法対応版をショップにアップロードしました。(分解モンテカルロ法対応版をVer3.00としました)
あらためて書き起こしたPDFファイル「分解モンテカルロ法について」も同梱しています。(内容はブログで書いたものに若干修正を加えたものです)
ご購入者で分解モンテカルロ法に興味のあるかたは最新版のダウンロードをお願いいたします。
右上の「ログイン」からログインしていだき、購入履歴からダウンロードできます。表示されない場合には「購入履歴」の「期間」を変更してみてください。
あまり関係ない話
今回、MT5版を改修してバックテストして思ったのは‥
MT5のバックテスト遅すぎ!
でした。
MT5のバックテストではマルチコアに対応しているので私が開発したMT4のバックテストツール「MT4BackTester」を使わなくても高速化できますが、肝心のバックテストが異常に遅い‥!
MT4だと同じ期間のバックテストでも30分はかからなかったはずが、MT5の場合は2時間くらいかかりました。
さらに、最適化で6コア使用、36パターンだから1コア6回。という計算で実行すると‥
「これいつ終わるの?」というレベルで遅い。エージェントが6個あると処理時間が6分の1になるかと思ったのですが、1回の実行時間が倍以上に増えている気がする‥。1日放置しても終わりませんでした。
遅い原因は分解モンテカルロ法の処理だろうと思うのですけど、MQL5のデキの悪さを今回のバックテストで再認識しました。(C言語ベースのMQL4とC++言語ベースのMQL5では配列の処理速度に顕著な差があってもおかしくはない‥のかもしれませんが。それにしても‥遅すぎる‥。)
昔も書きましたが、MQL5はMQL4の足元にも及ばないですね。MQL開発者としては「こんなものをゴリ押しされても困るんだよなぁ‥」と、つくづく思いました。
※開発元のMetaQuotes社はMT4をサポートしておらず、FX業者は高いお金を払ってMetaQuotes社以外のサードパーティを使わないといけないという話を以前、FX業者の中の人から聞きました。サポートにかかる費用が桁違いらしいです。
コメント