你们好
为什么会出现买单失败呢?
我看了很多帖子,都说 request.type_filling 设置有问题,交易商不支持,我是嘉盛MT5,用了以下三个都不行。什么原因?
// 命令执行类型,可以是 ENUM_ORDER_TYPE_FILLING 项目值中的一个,ORDER_FILLING_RETURN,ORDER_FILLING_IOC,ORDER_FILLING_FOK
request.type_filling =ORDER_FILLING_IOC;
2020.12.21 19:21:27.974 2020.12.04 01:00:00 failed market buy 5 标准普尔500指数 sl: 3613.0 [Unsupported filling mode]
2020.12.21 19:21:27.974 2020.12.04 01:00:00 OrderSend error 4756
// 调用下单模块
bool os = OrderSends(TRADE_ACTION_DEAL, ORDER_TYPE_SELL, 5, ma18_0, “产品”);
// 下单模块
bool OrderSends(ENUM_TRADE_REQUEST_ACTIONS action, ENUM_ORDER_TYPE type, double Lot, double sL, string com)
{
//--- 声明并初始化交易请求和交易请求结果
MqlTradeRequest request={0};
MqlTradeResult result={0};
//--- 请求参数
request.action =action; // 操作类型 现价单 TRADE_ACTION_DEAL 或 挂单 TRADE_ACTION_PENDING
request.symbol =Symbol(); // 品种为本图表打开的品种
request.type =type; // 订单类型
request.volume =Lot; // 手数
request.price =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // 价格
request.sl =sL; // 止损位
request.tp =0; // 0 即未设置止赢位
request.deviation =30; // 价格允许偏差为30点
request.type_filling =ORDER_FILLING_RETURN; // 命令执行类型,可以是 ENUM_ORDER_TYPE_FILLING 项目值中的一个,ORDER_FILLING_RETURN,ORDER_FILLING_IOC,ORDER_FILLING_FOK
request.comment =com; // 注释
request.magic =01; // EA交易 ID (幻数)
//--- 发送请求
bool eg=false;
eg=OrderSend(request,result);
if(!eg) PrintFormat("OrderSend error %d",GetLastError()); // 如果不能发送请求,输出错误代码
return(true);
}
建议用交易类去下单,不存在你的这个问题,自己弄的话,代码有漏洞,不下单是很正常的
你们好
为什么会出现买单失败呢?
我看了很多帖子,都说 request.type_filling 设置有问题,交易商不支持,我是嘉盛MT5,用了以下三个都不行。什么原因?
// 命令执行类型,可以是 ENUM_ORDER_TYPE_FILLING 项目值中的一个,ORDER_FILLING_RETURN,ORDER_FILLING_IOC,ORDER_FILLING_FOK
request.type_filling =ORDER_FILLING_IOC;
2020.12.21 19:21:27.974 2020.12.04 01:00:00 failed market buy 5 标准普尔500指数 sl: 3613.0 [Unsupported filling mode]
2020.12.21 19:21:27.974 2020.12.04 01:00:00 OrderSend error 4756
// 调用下单模块
bool os = OrderSends(TRADE_ACTION_DEAL, ORDER_TYPE_SELL, 5, ma18_0, “产品”);
// 下单模块
bool OrderSends(ENUM_TRADE_REQUEST_ACTIONS action, ENUM_ORDER_TYPE type, double Lot, double sL, string com)
{
//--- 声明并初始化交易请求和交易请求结果
MqlTradeRequest request={0};
MqlTradeResult result={0};
//--- 请求参数
request.action =action; // 操作类型 现价单 TRADE_ACTION_DEAL 或 挂单 TRADE_ACTION_PENDING
request.symbol =Symbol(); // 品种为本图表打开的品种
request.type =type; // 订单类型
request.volume =Lot; // 手数
request.price =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // 价格
request.sl =sL; // 止损位
request.tp =0; // 0 即未设置止赢位
request.deviation =30; // 价格允许偏差为30点
request.type_filling =ORDER_FILLING_RETURN; // 命令执行类型,可以是 ENUM_ORDER_TYPE_FILLING 项目值中的一个,ORDER_FILLING_RETURN,ORDER_FILLING_IOC,ORDER_FILLING_FOK
request.comment =com; // 注释
request.magic =01; // EA交易 ID (幻数)
//--- 发送请求
bool eg=false;
eg=OrderSend(request,result);
if(!eg) PrintFormat("OrderSend error %d",GetLastError()); // 如果不能发送请求,输出错误代码
return(true);
}