この前、JForexでバックテストをしていて、tickstory(デューカスコピーのヒストリカルデータを使ったMT4でのバックテスト)のデータとあまりにも違いすぎるなぁと思っていたら、JForexの1分足とティック値のバックテストの結果にビックリしてしまったというお話です。
私は、自分の使ったストラテジーにはスプレッドフィルターを使っているのですが、1分足でバックテストしているとこれがうまく機能しません。
なぜかと思って、バックテスト時のスプレッドをコンソールに出力してみました。
これは結構衝撃的でした。
JForexで1分足(ドル円)でバックテストした時のスプレッド
ちょっと見づらくてすみません!
上記の数値が流れているところが、バックテスト時のスプレッドをコンソールに出力したものです。
ビックリ!な結果でスプレッドが常時約1.9~2pipsぐらいのスプレッドが表示されています。
JForexでティック値(ドル円)でバックテストした時のスプレッド
こちらですとしっかりといつも通り、0.3~0.6ぐらいのスプレッドが表示されました。
こちらのバックテストの結果はtickstoryと一致します。
JForexの1分足のバックテストの場合、スプレッドが約2pipsの疑似ティックが生成されている!?
うーんこれはどうしたものか?と思い、2つの方法でスプレッドを検出してみました。
ティック値からスプレッドを検出
1 2 |
ITick lastTick = history.getLastTick(Instrument.USDJPY); double spreadData = (lastTick.getAsk() - lastTick.getBid())*100; |
1分足からスプレッドを検出
1 2 3 |
IBar prevBar1 = history.getBar(Instrument.USDJPY,Period.ONE_MIN, OfferSide.BID,1); IBar prevBar2 = history.getBar(Instrument.USDJPY,Period.ONE_MIN, OfferSide.ASK,1); double spreadData = (prevBar2.getClose() - prevBar1.getClose())*100; |
どちらでやってもやはり2pipsぐらいのスプレッドが検出されます。
仮説としてJForexの1分足の疑似ティックは2pipsぐらいに設定されているのかもしれません。となると1分足とティック値ではバックテストの結果が大きく違うのも納得です。
それともJForexってバックテストでスプレッドの設定が出来きましたっけ?
知っている人がいたら教えてください(^^♪
管理人オリジナルJForexツールが貰える!デュカースコピーキャンペーンについてはこちらから