他通貨ペア価格を参照しながらのバックテスト
自作のDandelionやSwallowはEUR/USD対象のEAですが、この2つのEAには実は課題がありました。
それは、円口座とした場合の複利のバックテストが正しくできないということです。
私のEAでは複利としたときに設定レバレッジからロットを自動算出するようにしていて、
ロット数=レバレッジ×口座残高/EURJPY価格/100,000
という計算式でロットを計算しているのですが、バックテストはEURUSDのチャートで行っているのでEURJPY価格は普通にやると取得できないんですよ。
したがって、現状までは円口座でバックテストをするときはEUR/JPYを120円に固定してエラーが出ないようにしていました(現在出品しているバージョンでもそうしています)。
ちなみに実稼働では普通に取得できる仕様なようで、フォワードでは問題ないのですが。
ただ最近、複数通貨を取引するEAの構想を練っていることもあり、どうにかして複数通貨ペアの価格をバックテストで一気に取得する方法がないかと調べていたところ…ありました!
いくつかあるみたいですが、こちらのりゅーきさんのブログ記事によるとCopyClose()という関数を使うといいらしい。
ということで早速有り難くコードを拝借し、EURJPY価格取得の部分に組み込んでみました。圧倒的感謝。
これでバックテストを行い、EURJPYの価格が正しく参照できているかPrintで出力してみたところ…
うむ、ちゃんと取得できているようです。
これでクロス円以外のEAについても円口座での複利のバックテストができます!
またひとつ勉強になりました。
まあただ一発で上手くいったわけではなくて、EUR/JPY価格も取得できたりできなかったりすることがあるみたいです。
原因はよくわかりませんが、とりあえず上手くいった方法としてはEUR/USDを使ったバックテストの直前に、同じ期間のEUR/JPYでダミー的にバックテストを行ってティックチャートを作り直しておくといいみたい。
既にあるんならいいだろとも思ったのですが、そういうことでもないみたいですね。よくわからん。
ともあれ、これは使えるテクニックであることは確かです。
時間がなかなか取れなくて辛いのですが、これを利用して複数通貨ペアの価格を同時監視して取引するEAの作成にもチャレンジしてみたいと思います。
コメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。