どうも潤奈です( ・Д・)
今回はちょっとした疑問について検証した記事になります。
その内容とは、バックテスト時に設定した通貨ペア以外の他通貨ペア値を取得出来るのか?です。
ちょっと通貨強弱をロジックとしたEAの作成を考えていますが、そもそもバックテストで機能しなかったらフォワード検証のみで時間が掛かりすぎます。
通貨強弱は各通貨ペアの値を取得して計算している為、取得出来るのであれば希望が持てるのでは?
では簡単なEAを作成して確認して行きたいと思います。
検証EA作成
まずはMetaEditorで新規の検証EA「エキスパートアドバイザ」を作成します。
ここではEA名を適当に決めるだけで他の設定はないですね~。
後は「次へ」を連打して最後に「完了」をクリックして作成します。
パラメーター作成
作成したら通貨ペアと時間軸がパラメーターで設定出来るように、上にある#property strict の下あたりにプログラムを書いて行きます。
1 2 3 4 |
#property strict input string CurrencyPair="GBPJPY"; //通貨ペア input ENUM_TIMEFRAMES TimeFrame=PERIOD_H1; //時間軸 |
それぞれの単語の説明は以下になります。
説明 | |
input | 後からパラメーターを変更可能にする。 |
string | 文字列を格納する為に変数の型を指定する。 |
CurrencyPair=”GBPJPY”; | 任意の変数名=通貨ペア名を格納する。 |
ENUM_TIMEFRAMES | 事前に定義された時間軸を選択出来るようにする。 |
TimeFrame=PERIOD_H1; | 任意の変数名=定義された時間軸。 |
input変数を使用したら後ろの「//通貨ペア」を入力するとパラメーター入力画面に日本語で表示する事が出来ます。
検証コード作成
次にvoid OnTick(){ }内にコードを書いて行きます。
今回は他通貨ペアの値が取得出来るかを試したいだけなので、終値をPrint関数で出力出来るか試したいと思います。
1 2 3 4 5 |
void OnTick(){ Print(CurrencyPair," Close=",iClose(CurrencyPair,TimeFrame,0)); } |
それぞれの単語の説明は以下になります。
説明 | |
Print( ); | 操作履歴に出力されます。中の引数は,(カンマ)で繋げます。 |
“Close=” | コメントは” “で囲みます。 |
iClose( ); | 指定した通貨ペア、時間軸、バーシフトの終値を返します。 |
以上です。
最後にコンパイルをクリックして、エラーが出なければ完成です。
検証EA実行
ではバックテストで動かしてみましょう。
MT4のテスター画面を開いて、先ほどのEAを選択。通貨ペアをUSDJPYに設定して、他は適当にw
EAのパラメーターの通貨ペアをGBPJPYに設定。
これでUSDJPYで行ったバックテストでGBPJPYの通貨値を取得出来たら、通貨強弱の計算が出来るという事でしょう。
テストをスタート!
結果は・・・
出来ましたね( ・Д・)
GBPJPYの1時間の終値を設定していて、バックテストを1分でやりましたが1時間の切り替わりで終値がちゃんと変わっています。
ちなみに、当たり前ですがヒストリカルデータを入れていない通貨ペアを試すと値は0でした。
という事は、28通貨ペアの通貨強弱を計算しようと思ったら28通貨ペアのヒストリカルデータ×時間軸をMT4に入れないといけない・・・。ちょっと厳しいですねw
結論
ヒストリカルデータの準備は必要ですが、バックテストでの他通貨ペア値は取得出来ました!
ただ、沢山のデータを1つのMT4に入れて行くと、フリーズして動かない事がよくあったのでそこがネックですね~。
では( ・Д・)
コメント