MQL4MQL5 EA(エキスパートアドバイザー) 資金管理・リスク
損失が一定を超えたら EA を止めたい
結論:有効証拠金が開始時の残高の◯%を下回ったら新規注文をやめ、必要なら ExpertRemove() で EA を外します。
考え方
EA の暴走や想定外の相場から口座を守るため、「有効証拠金が一定以上減ったら止める」安全装置を付けておくと安心です。ここでは、EA を入れたときの残高を基準に、有効証拠金が指定%を下回ったらアラートを出して ExpertRemove() で EA を止める例にしています。止める前にポジションを決済したい場合は「全ポジションを決済する」レシピを組み合わせます。
- OnInit() で基準になる残高を記録する
- OnTick() で有効証拠金を基準と比べる
- 下回ったらアラートを出し、ExpertRemove() で EA を外す
そのまま使えるコード
MetaEditor の「新規作成」で「エキスパートアドバイザ(テンプレート)」を選び、できたファイルの中身をすべてこのコードに置き換えてコンパイル(F7)します。ファイルは Experts フォルダに保存され、ナビゲーターからチャートにドラッグして使います。
MQL4・MQL5 共通
#property strict
// 有効証拠金が基準から一定%減ったら EA を止める安全装置
input double InpMaxLossPct = 20; // 許容する減少(%)
double baseBalance = 0;
int OnInit()
{
baseBalance = AccountInfoDouble(ACCOUNT_BALANCE);
return INIT_SUCCEEDED;
}
void OnTick()
{
double equity = AccountInfoDouble(ACCOUNT_EQUITY);
double limit = baseBalance * (1.0 - InpMaxLossPct / 100.0);
if(equity < limit)
{
Alert("有効証拠金が ", DoubleToString(equity, 0), " まで減ったため EA を停止します");
ExpertRemove(); // この OnTick() が終わったあと、EA がチャートから外れる
return;
}
// ここに通常の売買の処理を書く
}MT4 版・MT5 版とも MetaEditor でコンパイル(エラー・警告なし)を確認済みです。実際の口座で使う前に、デモ口座やストラテジーテスターで動作を確かめてください。
カスタマイズのポイント
- ターミナルを再起動しても基準が変わらないようにしたいときは、基準の残高をグローバル変数(GlobalVariableSet)に保存します。
- 日ごとの損失で止めたいときは「今日の損益を計算する」レシピの結果と比べます。
注意点
- ExpertRemove() は EA を止めるだけで、ポジションは決済しません。












