
MT4 MT4 取引エラー
131
- 定数名
ERR_INVALID_TRADE_VOLUME- メッセージ
invalid trade volume- 意味
- ロット数(取引数量)が不正
MT4エラー131とは
注文のロット数が、その口座・通貨ペアで受け付けられない値のときのエラーです。最小ロット・最大ロット・ロットの刻み幅のどれかに合っていません。
ログの表示例
OrderSend error 131
「エキスパート」タブまたは「操作履歴」タブに表示されます。数値や表記の細部は、ビルド・ブローカー・EAの作りによって異なります。
MT4エラー131の主な原因
- ロットが最小ロット(MODE_MINLOT)より小さい、または最大ロット(MODE_MAXLOT)より大きい
- ロットが刻み幅(MODE_LOTSTEP)の倍数になっていない(例:刻み 0.01 の口座で 0.015)
- 複利計算でロットを割り算したまま丸めていない
- スタンダード口座とマイクロ口座で1ロットの大きさが違うのを考慮していない
- 一部決済で、残りが最小ロットを下回る数量を指定した
MT4エラー131の対処法
- MODE_MINLOT / MODE_MAXLOT / MODE_LOTSTEP を取得し、刻み幅で切り捨ててから範囲内に収める
- 計算したロットを Print() で出力して、桁が正しいか確認する
- 口座タイプごとの最小ロットをブローカーの取引条件で確認する
コード例(MQL4)
// ロット数を口座の最小・最大・刻み幅に合わせる(MQL4)
double NormalizeLots(double lots)
{
double minLot = MarketInfo(Symbol(), MODE_MINLOT);
double maxLot = MarketInfo(Symbol(), MODE_MAXLOT);
double step = MarketInfo(Symbol(), MODE_LOTSTEP);
if(step <= 0) return 0;
lots = MathFloor(lots / step) * step; // 刻み幅で切り捨て
lots = MathMax(minLot, MathMin(maxLot, lots)); // 範囲内に収める
int digits = (int)MathMax(0, -MathFloor(MathLog10(step)));
return NormalizeDouble(lots, digits);
}MetaEditor(MT4)でコンパイルできることを確認済みです。自分のEAに組み込むときは、変数名や設定値を合わせてください。












