
MT4 MT4 取引エラー
150
- 定数名
ERR_TRADE_PROHIBITED_BY_FIFO- メッセージ
prohibited by FIFO rules- 意味
- FIFOルールで禁止されている(古いポジションから決済が必要)
MT4エラー150とは
先に建てたポジションから順に決済しなければならない(FIFO:先入れ先出し)口座で、新しいポジションを先に決済しようとしたときのエラーです。
ログの表示例
OrderClose error 150
「エキスパート」タブまたは「操作履歴」タブに表示されます。数値や表記の細部は、ビルド・ブローカー・EAの作りによって異なります。
MT4エラー150の主な原因
- FIFOルールがある口座で、古いポジションより先に新しいポジションを決済しようとした
MT4エラー150の対処法
- OrderOpenTime() が古い順にポジションを決済する
- 個別のSL・TPではなく、まとめて決済するロジックにする
コード例(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に組み込むときは、変数名や設定値を合わせてください。












