今日は、MetaTrader 5用のColorSchaffJCCXTrendCycleインジケーターを基にした二つのトレーディングシステムについてお話しします。これらのシステムは、ロングとショートの取引をそれぞれ管理するためのもので、同一のEAの中で異なる設定が可能です。また、前回の取引結果に応じて次の取引のボリュームを変更することもできます。
入力パラメータのグループ分け
これらの入力パラメータは、主に二つの大きなグループに分けられます:
- Lで始まる名称のものはロングポジションを管理するためのパラメータです。
- Sで始まる名称のものはショートポジションを管理するためのパラメータです。
//+----------------------------------------------+ //| ロング取引用のEAの入力パラメータ | //+----------------------------------------------+ magic numberinput uint L_Magic=777; //L マジックナンバー //+----------------------------------------------+ //| ショート取引用のEAの入力パラメータ | //+----------------------------------------------+ input uint S_Magic=555; //S マジックナンバー
これら二つのトレーディングシステムは異なるマジックナンバーを持ち、互いに独立しています。実際の金融市場は対称的でないことが多いので、同じトレーディングシステムでも、上昇市場と下降市場で異なるパラメータが必要です。そのため、EAを適切に設定するには、まずは一方のトレーディングシステムだけをテストし、もう一方は関連するスイッチを使って無効にすることが重要です。
input bool L_PosOpen=true; //L ロングポジションを開く許可 input bool L_PosClose=true; //L ロングポジションを閉じる許可
次に、セカンドシステムに対しても同様の作業を行ってください。
ポジションボリュームの管理
EAの入力ブロックには、開いているポジションのボリュームを管理するためのパラメータが追加されています:
input uint L_TotalMMTriger=5; //L ストップロス計算のための最後のBuy取引数 input uint L_LossMMTriger=3; //L MMを減少させるための損失のあるBuy取引数 input double L_SmallMM=0.01; //L 損失時の取引における預金の割合 input double L_MM=0.1; //L 通常トレード時の預金の割合 input MarginMode L_MMMode=LOT; //L ロット設定モード
そして同様に、ショートポジション用のパラメータも設定できます:
input uint S_TotalMMTriger=5; //S ストップロス計算のための最後のSell取引数 input uint S_LossMMTriger=3; //S MMを減少させるための損失のあるSell取引数 input double S_SmallMM=0.01; //S 損失時の取引における預金の割合 input double S_MM=0.1; //S 通常トレード時の預金の割合 input MarginMode S_MMMode=LOT; //S ロット設定モード
このような入力設定において、最後の5回の取引の中で3回が同じ方向で損失を出している場合、EAは次の取引を同じ方向で0.01ロットのボリュームで開きます。逆に、損失が3回未満であれば、ポジションボリュームは0.1となります。
EAを稼働させるためには、コンパイルしたJCCX.ex5とColorSchaffJCCXTrendCycle.ex5のインジケーターのファイルが<terminal_data_directory>\MQL5\Indicatorsにある必要があります。
以下のテストでは、デフォルトのEAの入力パラメータを使用しました。テスト中はストップロスとテイクプロフィットは使用していません。

Fig. 1. 取引のチャート例
GBPUSDの2017年のテスト結果は以下の通りです:

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

Fig. 3. 非対称設定の取引例