Pythonで過剰最適化発見ツールを作成
無料公開します。
BETA版の位置づけです。
バグなどありましたら教えてください。
使い方
①MT4で気になるEAのバックテストをする
②「結果」タブへ移動し右クリック
「全てコピー(y)」
③OverFittingCHK.exeを起動
数秒から1、2分かかります。
開発環境i5-9400F 2.9GHz RAM16.0GB win11Pro
2005-2022.4 3600取引で10秒程度です。
※必ずコピーしてから起動してください
全取引、偶数日だけ、奇数日だけ、偶数月、奇数月だけの成績を出力します。
OFC(OverFittingChecker)ver3DownLoad 古いバージョンですmodifyでエラーが出ます
著作権など
無料で配布していますが、著作権は放棄していません。
再配布、DL直リンクはご遠慮ください。
バックテストは好成績なのに運用すると大きなDD が出る。
この原因は過剰最適化です。その原因の一つは試験取引数の少なさです。
例えばこういったケースです。10年で1,000取引するEA DDは50,000 これにフィルターを付けると取引数は10減少して990 DDは30,000になりました。
DDは減っていますが、このフィルターが影響を及ぼしたのはわずか10取引です。
こういった影響の少ないフィルターは過剰最適化を招きます。
今回配布のOFCは特定の日にちだけで動かした場合の成績を表示します。
100%過剰最適化を発見できるものではありませんが、これで発見できるものもあります。
アウトオブサンプル試験
アウトオブサンプル試験は例えば偶数日で最適化をし奇数日で確認をします。
今回のOFCは全期間で最適化したものを偶数日、奇数日に分けます。
・アウトオブサンプルのメリット
偶数日で最適化をした場合、奇数日の取引は全く考慮されていないので、奇数日でバックテストをした時に過剰最適化になりにくい
・OFCのメリット
全期間で最適化をするため対象取引数が多い
一長一短ですがアウトオブサンプルする方もしない方もOFCで試験をする勝ちはあると思います。
(おまけ)
アウトオブサンプルをするときには以下のコードを使っています。
今回のOFCと似たような使い方も可能です。
void OnTick(){
// MODE== 0 is ALL
if(MODE== 1&&Month()%2==0)return;//奇数月
if(MODE== 2&&Month()%2!=0)return;//偶数月
if(MODE== 3&& Year()%2==0)return;//奇数年
if(MODE== 4&& Year()%2!=0)return;//偶数年
if(MODE== 5&&DayOfWeek()<=3)return;//月火水
if(MODE== 6&&DayOfWeek()>=4)return;//木金
if(MODE== 7&&(Year()+Month())%2==0)return;//年+月奇数
if(MODE== 8&&(Year()+Month())%2!=0)return;//年+月偶数
if(MODE== 9&&(Year()+DayOfWeek())%2==0)return;//年+曜日奇数
if(MODE==10&&(Year()+DayOfWeek())%2!=0)return;//年+曜日偶数
if(MODE==11&&(Month()+DayOfWeek())%2==0)return;//月+曜日奇数
if(MODE==12&&(Month()+DayOfWeek())%2!=0)return;//月+曜日偶数
課題
・コピペだけでなく、バックテストファイルでもデータを渡せると便利
・それぞれのチャートが出せると視覚的にわかる
・計算時間の高速化
・複数ポジションの場合 分けた結果が破綻しても終了しない
・偶数奇数日、月 だけでなくいろいろな組み合わせを出力
進めていくとQAのようになるかもしれません。
根気の続く限り進めていきたいと思いますので応援してください!
みんなで儲かりますように!
バージョン
最新バージョンから3つ古くなると動かなくなります。
バージョンアップを即すメッセージが出たときには最新版をDLしてください
セキュリティの警告について(2022.4.19追記)
exeファイルをダウンロードして使用する時に警告が出ることがあります。
以下WINDOWS11の画面です
11以外の場合画面が少し異なりますが、詳細情報を押し、実行を押すことで使用できます。「実行」が出てこない(「実行しない」だけ表示される)場合はググって調べてみてください。「セキュリティ」、「SmartScreen」、「WindowsによってPCが保護されました」で検索するとすぐに見つかると思います。
バグ情報(2022.4.19追記)
modify が入っているとエラーが出ます。
情報をご提供いただきました「こつめ」さん
できるだけ早く修正します。
0 件のコメント:
コメントを投稿