投資プログラミング

「FX」 「CFD」 

MT4,MT5でチャートに左右されないEAの作り方

, …
約3分

EAを作り込んでいくと、時間軸(M1…M5…M30…)等、自由に設定可能にしてもほぼ意味の無いことに気づきます。
H1でパラメータ調整したのにM5で使われると明らかに優位性が無いとわかっている場合等です。

その場合、開発段階でどのチャートに適用しても内部で時間足を固定してあげるとユーザー側が使いやすくなります。
意図しないチャートにEAを適用した際にエラーにしても良いとは思いますが、初心者は何故エラーなのかわからないこともあります。なので、どんなチャートに適用したとしても意図する時間軸で動作した方がお互いに良いわけです。

その辺りを少し解説したいと思います。
開発する上でAsk,Bid や 4本値の取得やインジケータ(MA等)を取得して使用したりしますが、この定義済み関数の引数に時間軸を指定します。
この場合、Ask、Bidは時間軸に関係無いので指定する必要はありません。
主に下記となります。

<4本値については>
iOpen(_Symbol,PERIOD_M15,1) ;1本前の始値
iClose(_Symbol,PERIOD_M15,1); 1本前の終値
iHigh(_Symbol,PERIOD_M15,1); 1本前の高値
iLow(_Symbol,PERIOD_M15,1); 1本前の安値

<EAの中で使用したいインジケータについては>
int MAPeriod = 14;
iMA(_Symbol,PERIOD_M15,MAPeriod,0,MODE_EMA,PRICE_CLOSE,1 );1本前の移動平均値

<足の更新ごとの処理をしている場合については>
iBars(_Symbol,PERIOD_M15);

このようにEA内の時間軸が関わってくる全ての関数について時間軸を固定します。
時間軸はM15とM30との混合でも構いません。
このようにマルチタイムフレーム機能を実装しながらにして、どの時間軸チャートに適用しても
同じ動きをするようになります。

注意点は、Close[1]、Open[1]やBarsなどの定義済み配列や定義済み変数を使用しないことです。

これらを意識して作れるようになると時間軸フリーなEAになります。

次回はどの通貨ペアチャートに適用しても意図する通貨ペアで取引するを解説したいと思います。
通貨ペアチャートフリーの場合は、AskBidを合わせ込む必要があるので、難易度が少し上がります。

・時間軸フリー
・通貨ペアフリー

ここを理解すると、1チャートで複数通貨ペアを取引する実用的なEAを実装できるようになります。
ここまではMT4でもMT5でも可能です。

ただ、複数通貨の同時バックテストとなるとMT5しか対応していないので注意です。


☆★☆ おまけ ☆★☆

~プログラミング時のミスを減らすためのテクニック~
例:
iOpen(0,0,1); 1本前の現在チャートの始値
iOpen(NULL,NULL,1); 1本前の現在チャートの始値
iOpen(_Symbol,PERIOD_CURRENT,1); 1本前の現在チャートの始値

上記は全て同じ意味合いですが、3番目を使うことで可読性があがりミスを減らすことができます。
今回は以上です。

Leave A Reply

*
*
* (公開されません)