
MT5 MT5 取引サーバーのリターンコード
10030
- 定数名
TRADE_RETCODE_INVALID_FILL- メッセージ
invalid fill- 意味
- 注文の執行タイプ(フィリングモード)が銘柄に対応していない
MT5エラー10030とは
注文の執行タイプ(FOK・IOC・RETURN)が、その銘柄・ブローカーで使えないときのリターンコードです。操作履歴には「Unsupported filling mode」と出ます。別のブローカー向けに作られたEAを使ったときに特によく起こる、MT5特有のエラーです。
ログの表示例
failed market buy 0.10 USDJPY [Unsupported filling mode] CTrade::OrderSend: market buy 0.10 USDJPY [invalid fill]
「エキスパート」タブまたは「操作履歴」タブに表示されます。数値や表記の細部は、ビルド・ブローカー・EAの作りによって異なります。
MT5エラー10030の主な原因
- MqlTradeRequest.type_filling を ORDER_FILLING_FOK に固定しているが、銘柄が IOC しか対応していない(逆も同じ)
- CTrade を使っているが、SetTypeFilling() / SetTypeFillingBySymbol() を呼んでいない(既定は FOK)
- ブローカーや口座タイプごとに対応する執行タイプが違う
MT5エラー10030の対処法
- CTrade を使うなら、OnInit() で trade.SetTypeFillingBySymbol(_Symbol) を呼ぶ
- 自分でリクエストを作るなら、SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE) を見て FOK / IOC / RETURN を選ぶ
- 銘柄の「仕様」画面の「約定」欄で、対応している執行タイプを確認する
コード例(MQL5)
// 銘柄が対応している執行タイプを使う(10030 invalid fill 対策)(MQL5)
#include <Trade\Trade.mqh>
CTrade trade;
int OnInit()
{
trade.SetTypeFillingBySymbol(_Symbol); // CTrade ならこの1行で解決
return INIT_SUCCEEDED;
}
// 自分で MqlTradeRequest を作る場合の選び方
ENUM_ORDER_TYPE_FILLING FillingFor(const string symbol)
{
long mode = SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE);
if((mode & SYMBOL_FILLING_FOK) == SYMBOL_FILLING_FOK) return ORDER_FILLING_FOK;
if((mode & SYMBOL_FILLING_IOC) == SYMBOL_FILLING_IOC) return ORDER_FILLING_IOC;
return ORDER_FILLING_RETURN;
}MetaEditor(MT5)でコンパイルできることを確認済みです。自分のEAに組み込むときは、変数名や設定値を合わせてください。












