評価残高が一定額を超えたら、ポジションを閉じてEAを止める方法。

FX口座の評価残高が10%増えたらEAを止めたい。あるいは、25%損失が生じたら止めたい…といった場合に役に立つ(...かもしれない...) script が、EquityProtecter(sc).mq4 です。EAを止めると同時にポジションをクローズし、指値注文を削除するので、EAを使わない裁量トレードでもポジションを放置したい時に使えます。



海外のフォーラムには、より多機能な EquityGuard というEAがあるのですが、EA自体がEAを止めるという枠組みは上手くいかない気がするので、script で簡易なものを作り直しました。
使い方は、scripts フォルダにコピーして、チャートに貼り付けるだけです。

extern bool UseTargetEquity = true;
extern int TargetEquityPercent = 110;
extern int TargetEquity = 0;

UseTargetEquity を true にすると、目標残高を設定できます。
TargetEquityPercent = 110 であれば、評価残高が10%増えた(=110%を超えた) 時点で止まります。
%の計算は、script を貼り付けた時点での評価残高が基準になるので、絶対値で評価残高を指定したい場合は、TargetEquity にゼロ以外の値を設定します。

extern bool UseProtectEquity = true;
extern int ProtectEquityPercent = 50;
extern int ProtectEquity = 0;

同じ要領で、評価残高の下限を設定できます。この設定値を下回った時点で止まります。
(ただし、設定値を下回った時点からポジを成行きで閉じるので、スリッページ、遅延等により口座残高が予想以上に減ってしまう可能性はあります。)

extern bool UseStartTime = false;
extern string StartLocalTime ="09:00";

script による評価残高チェックを指定時刻まで行いたくない場合は、UseStartTime を true にして、StartLocalTime にローカル時間(パソコンの時刻)での時刻を指定します。
(この機能を使うべきかどうかは、EAの性質をよく把握してから判断した方が良いです...。