
MT4 MT4 取引エラー
3
- 定数名
ERR_INVALID_TRADE_PARAMETERS- メッセージ
invalid trade parameters- 意味
- 取引関数に渡した引数が不正
MT4エラー3とは
OrderSend() や OrderClose() に渡した引数の組み合わせが正しくないときのエラーです。注文種別と価格の関係、チケット番号、ロット数などを見直します。
ログの表示例
OrderSend error 3
「エキスパート」タブまたは「操作履歴」タブに表示されます。数値や表記の細部は、ビルド・ブローカー・EAの作りによって異なります。
MT4エラー3の主な原因
- 注文種別(OP_BUY など)に存在しない値を渡している
- OrderClose() で、決済済み・存在しないチケットや、指値注文(待機注文)のチケットを渡している(待機注文は OrderDelete() で消す)
- 有効期限(expiration)に過去の時刻を渡している
- ロット数に 0 や負の値を渡している
MT4エラー3の対処法
- 成行注文は OP_BUY / OP_SELL、待機注文は OP_BUYLIMIT などを正しく使い分ける
- 決済前に OrderSelect() でチケットを選択し、OrderType() が OP_BUY / OP_SELL であることを確認する
- 待機注文を消すときは OrderClose() ではなく OrderDelete() を使う
- 送信直前に引数を Print() で出力して、値が想定どおりか確かめる
コード例(MQL4)
// 自分のポジションを安全に決済する(エラー4105・4108 対策)(MQL4)
void CloseAll(int magic)
{
// 決済すると番号が詰まるので、後ろから回す
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; // 選択できたときだけ読む
if(OrderSymbol() != Symbol() || OrderMagicNumber() != magic) continue;
bool ok = true;
if(OrderType() == OP_BUY || OrderType() == OP_SELL)
ok = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 30, clrNONE); // 決済価格は OrderClosePrice()
else
ok = OrderDelete(OrderTicket()); // 待機注文は OrderDelete()
if(!ok) Print("決済エラー ", GetLastError(), " ticket=", OrderTicket());
}
}MetaEditor(MT4)でコンパイルできることを確認済みです。自分のEAに組み込むときは、変数名や設定値を合わせてください。












