Iin_MA_Signalインジケーターに基づいたこのトレーディングシステムは、過去の取引結果に応じて次のトレードのボリュームを調整できる信号を発します。取引信号は、バーがクローズした際にトレンドが変化した場合に形成され、これがインジケーターの色ラベルで表示されます。
オープンポジションのボリュームを管理するためのEA変数のブロックが追加されています:
input uint BuyTotalMMTriger=5; // ストップロスを計算するための最後の買い取引の数 input uint BuyLossMMTriger=3; // MMを減少させるための損失を出した買い取引の数 input uint SellTotalMMTriger=5;// ストップロスを計算するための最後の売り取引の数 input uint SellLossMMTriger=3; // MMを減少させるための損失を出した売り取引の数 input double SmallMM_=0.01; // 損失時の取引における口座割合 input double MM=0.1; // 通常の取引時の口座割合 input MarginMode MMMode=LOT; // ロット値の決定方法
このような入力がある場合、最後の5回の取引の中で3回が同じ方向で損失を出していると、EAは次の取引を同じ方向で0.01ロットのボリュームで開きます。最後の5回の取引の中で損失を出した取引が3回未満の場合、ポジションのボリュームは0.1となります。
このEAは、Exp_Iin_MA_Signal EAのさらなる改良版です。EAの入力ブロックがコードに追加され、ポジションのオープン/クローズのブロックが変更されました:
//---- 取引実行 //---- マジックナンバーによるロングポジションのクローズ BuyPositionClose_M(BUY_Close,Symbol(),Deviation_,BuyMagic); //---- マジックナンバーによるショートポジションのクローズ SellPositionClose_M(SELL_Close,Symbol(),Deviation_,SellMagic); double mm; //---- マジックナンバーによるロングポジションのオープン if(BUY_Open) { mm=BuyTradeMMRecounterS(BuyMagic,BuyTotalMMTriger,BuyLossMMTriger,SmallMM_,MM); // 過去の取引結果に応じたロングポジションのボリュームを定義 BuyPositionOpen_M1(BUY_Open,Symbol(),UpSignalTime,mm,MMMode,Deviation_,StopLoss_,TakeProfit_,BuyMagic); } //---- マジックナンバーによるショートポジションのオープン if(SELL_Open) { mm=SellTradeMMRecounterS(SellMagic,SellTotalMMTriger,SellLossMMTriger,SmallMM_,MM); // 過去の取引結果に応じたショートポジションのボリュームを定義 SellPositionOpen_M1(SELL_Open,Symbol(),DnSignalTime,mm,MMMode,Deviation_,StopLoss_,TakeProfit_,SellMagic); }
このEAが正しく動作するためには、コンパイルされたIin_MA_Signal.ex5インジケーターファイルが<terminal_data_directory>\MQL5\Indicatorsフォルダ内に存在する必要があります。
テストで使用されたデフォルトのエキスパートアドバイザーの入力パラメータは、ストップなしのものでした。

図1. チャート上の取引の例
2017年のGBPJPY H1のテスト結果:

図2. テスト結果チャート