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

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

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

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

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

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

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

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

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

//+------------------------------------------------------------------+
//|【関数】他通貨ペアの終値を取得する                                |
//|                                                                  |
//|【引数】 IN OUT  引数名             説明                          |
//|        --------------------------------------------------------- |
//|         ○      aSymbol            通貨ペア名                    |
//|         ○      aTimeFrame         時間枠                        |
//|         ○      aStartPos          スタートの足の位置(0が現在足) |
//|                                                                  |
//|【戻値】指定通貨ペア・時間枠の終値                                |
//|                                                                  |
//|【備考】なし                                                      |
//+------------------------------------------------------------------+
double getOtherCurrencyClose(string aSymbol, int aTimeFrame, int aStartPos){
  double buf[1];
  int copyCount = 1;

  ArrayResize(buf, 1, 1);

  if(CopyClose(aSymbol, aTimeFrame, aStartPos, copyCount, buf) < 0){
    return(0);
  }

  double res = buf[0];

  ArrayFree(buf);

  return(res);
}

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

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

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

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

MT4の無料プログラミング講座

メルマガ登録して、MT4のプログラミング講座を無料で受けちゃおう!

超豪華プレゼントも盛りだくさん♪

MT4プログラミングを習得すると、オリジナルEA運用、作成代行、商品販売等、複数の収入源を手に入れられるよ。副業に最適だね!

↓↓↓ 詳細はこちら ↓↓↓

アイキャッチ

>

エターナル・パートナーPRO ~MT4裁量トレード支援ツール~ 「MT4は裁量トレーダーに優しくない」そう思ったことありませんか?もっと快適にトレードするための強力な売買ツールが必要だと考え、開発したのが「エターナル・パートナーPRO」です。元々は自分自身のために開発したツールですので、手抜き無しのガチものです。既に200名近い方に手に取っていただき、喜びの声が続々と届いております。ぜひご覧ください!

CTR IMG