皆さん、こんにちは!今回は、MetaTrader 5専用のExp_2pbIdealMA EAについて詳しく解説していきます。このEAは、移動平均線のクロスを基にしたトレーディングシステムで、トレンドに応じたポジションスケーリング機能を持っています。
具体的には、速い移動平均線である2pbIdeal1MAが遅い2pbIdeal3MAをクロスすることでシグナルが形成されます。ポジションがクローズするときに、前回の取引の利益ポイントがEAの入力パラメータで設定された閾値を超えた場合に、ポジションのボリュームをスケーリングアップします。速い移動平均線のブレイクアウトが買いシグナルを、ブレイクダウンが売りシグナルとなります。
ポジションスケーリングの情報は、取引のコメントに以下の形式で保存されます:スケール数 / 最後の取引価格 / 最後の取引ボリューム
インジケーターの設置方法
2pbIdeal1MA.ex5と2pbIdeal3MA.ex5のコンパイル済みファイルを、<terminal_data_folder>\MQL5\Indicatorsに配置してください。
コンパイル後、Exp_2pbIdealMA_ReOpen.ex5のファイルには、2pbIdeal1MA.ex5と2pbIdeal3MA.ex5のインジケーターがリソースとして含まれているため、EAが正常に動作するためにターミナルフォルダ内にこれらのインジケーターを配置する必要はありません!このために、EAのコードにインジケーターを含めるための対応コードが追加されています。
#resource "\\Indicators\\2pbIdeal1MA.ex5"
#resource "\\Indicators\\2pbIdeal3MA.ex5"
インジケーターのハンドル取得
OnInit()関数内で使用されるインジケーターのパスを変更しました。
InpInd1_Handle=iCustom(Symbol(),InpInd_Timeframe,"::Indicators\\2pbIdeal1MA.ex5",Period1,Period2,0);
if(InpInd1_Handle==INVALID_HANDLE)
{
Print("2pbIdeal1MAインジケーターのハンドル取得に失敗しました!エラーコード=",GetLastError(),"。");
return(INIT_FAILED);
}
//---- 2pbIdeal3MAインジケーターのハンドル取得
InpInd2_Handle=iCustom(Symbol(),InpInd_Timeframe,"::Indicators\\2pbIdeal3MA.ex5",PeriodX1,PeriodX2,PeriodY1,PeriodY2,PeriodZ1,PeriodZ2,0);
if(InpInd2_Handle==INVALID_HANDLE)
{
Print("2pbIdeal3MAインジケーターのハンドル取得に失敗しました!エラーコード=",GetLastError(),"。");
return(INIT_FAILED);
}
これにより、コンパイルされたEAの実行ファイルは、他のトレードターミナルでもインジケーターなしで使用できるようになります。
テスト結果
以下のテストには、デフォルトのEAの入力パラメータが使用されており、ストップロスとテイクプロフィットは使用されていません。

Fig. 1. チャート上の取引例
2015年のGBPJPY H4におけるテスト結果:

Fig. 2. テスト結果のチャート
コメント 0