« トップページテスト中 | メイン | 為替ロボットの作り方(FXCM用) ルールの見直し »
為替ロボットの作り方(FXCM用) バックテスト
「Verify」ボタンを押すと、保存&エラーチェック&コンパイルがされて準備が整います。(ファイル名はMAPreGCDCにしました)
「MetaTrader」ボタンでSBFXに戻ります。
【バックテストをする】
とりあえずプログラミングができたので、テストをしてみます。
NavigatorウィンドウのExpertAdvisorsから先ほど作成したMAPreGCDCをEURUSDの1時間足チャートにドラッグ。
Strategy TesterタブからStartボタンでバックテストを開始します。
結果は、開始直後から-92%と惨敗です。。
時間足で試したのがだめなのでしょうか?日足に変えてやってみましょう。
テスト画面を閉じて、チャート画面に戻り、「D1」ボタンで日足チャートに変えます。
F6キーでテスター画面を出し、もう一度「Start」
結果はやはり-90%と無惨な結果になりました。
[チャートで確認する]
シグナルがどのような状態で出ているのか、チャート上で確認してみましょう。
テスター画面の「Arrows in the chart」にチェックを入れて、シグナルの状況がチャート上に表示されるようにします。
先ほどは資金不足で途中で止まってしまいましたので、資金は10倍の100,000ドルにし、手数料やスプレッドは両方0にして純粋な売買結果を見ることにします。
Modelを「every 1 point(slow)」として、スタート。
結果が出たらOKでチャートに戻ります。
ここでおかしな状態が目に付きました。
一本のBarに矢印が大量に重なっています。
これは、ストップロスでポジションが消えたところで、すぐ新たなポジションを取り、またストップに引っかかるということをBar1本の中で何回も繰り返してしまうためのようです。
また、「every 1 point(slow)」でテストをする際、日足のデータを基にランダムで作成した仮想のデータを使用しているというのも影響しているようです。
始値と終値は順番がはっきりしていますが、高値と安値はどちらが先に来るか元の4本値からだけではわかりませんし、高値と安値を何往復もしたのか、安値から高値に一方的に上がっただけなのかもわかりません。
これでは結果の信頼性がありませんので、Bar1本の中で何度もポジションをとらないようにコードを改良します。
[コードの修正]
MetaEditorに戻って、MAPreGCDCのコードを以下のように書き換えます。
14、16、51、58行目が変更部分。
openbarという変数を作り、ポジションを持った時のBarを記録。そのBar内ではそれ以降の処理をスキップします。
「bars」はその時の合計Bar数を得るものです。
« トップページテスト中 | メイン | 為替ロボットの作り方(FXCM用) ルールの見直し »
トラックバック
このエントリーのトラックバックURL:
http://kawarobo.com/motp/mt-tb.cgi/289