他通貨ペアを使ったEAをMT4でバックテストする方法

アイキャッチ

CopyClose()関数シリーズを使えば良い

「他通貨ペアを使ったEAはMT4のストラテジーテスターではバックテストできないことが分かり、対応に苦労しました」という文章を前回の記事で記載しました。

これで困っている人が他にもいると思いますし、私自身またハマりそうなので、備忘録がてら記事にしました。

結論はズバリ見出しに書いちゃっています。CopyClose()関数シリーズを使えば、可能になります。

シリーズと言うのは、CopyOpen()、CopyHigh()、CopyLow()、CopyClose()の4関数の総称という意味です。

MT4 Build600以降で登場した関数で、昔は存在しませんでした。そのため、他通貨ペアを使ったEAはバックテストできないと結論づけている古い記事が存在しますが、2015/8/1現在では「できる」ですので、ご注意ください。

関数名で何となく動きのイメージは掴めると思います。端的に言えば、ある指定通貨ペア・時間枠の終値配列を別の配列にコピーするというものです。これを使えば、他通貨ペアの価格も取得できるのです。

CopyOpen()を使った実用的な関数を載せておきます。

パラメータとして、取得したい他通貨ペア名(USDJPY等)、取得したい時間枠、取得したい足の位置(0が現在の足の位置)を渡します。そうすると、指定通貨ペア・時間枠の終値を返します。

配列で返ってきて欲しいケースってあまり無いと思いますので、コピーする数を1に固定化することで、指定の位置の価格のみを戻すようにしています。

double USDJPYClose = getOtherCurrencyClose(USDJPY, 0, 0)のように関数を呼び出すことで、チャート時間枠の現在足のUSDJPYの終値を取得することができます。

CopyClose()関数の仕様については、こちらをご覧ください。

スポンサードリンク

ブログランキングに参加中!

ポチっとクリック頂けると励みになります♪
(クリックしてもランキング一覧が表示されるだけですが、それでOKです)

にほんブログ村 為替ブログ FX システムトレード派へ

4件のコメント

  • きゃぶ@中村

    こんにちは
    いつも勉強させていただいてます。

    この方法を用いれば複数通貨ペアで動かすようなEAを一度のバックテストで動かすことは可能になるのでしょうか?

    別々に通貨ペアで動かして合成できるソフトは見つけたのですが、含み損や複利での動きなどができません。

    この方法で複数通貨ペアを同時に動かせたらかなり助かります

    • りゅーき

      バックテストは1つの通貨ペアのトレードしか対応していませんので、残念ながらできません。
      あくまで当記事は他の通貨ペアのレートを参照する方法になります。

      • きゃぶ@中村

        御返事ありがとうございます。

        そうなんですね。
        ちなみに、MT5でも同じ状態ですか?

        MT5だとマルチタスクが使えるのでバックテストも早いときいいたので、もし、MT5で複数通貨ができるならば、バックテスト用に書いてみようかと思います。

        • りゅーき

          MT5は使ったことがないため明言できませんが、調べた感じ限りでは、MT5でも無理なようです。
          通貨ペアを1つしか選べない作りのようなので。

コメントを残す



thirteen + twenty =