救命:MQL4迁移MQL5编译成功,但OrderSend报错,报错信息为10013 failed market(单独测试的时候,这个错误一会儿有一会儿没有)

 

ENUM_TRADE_REQUEST_ACTIONS 市价单=TRADE_ACTION_DEAL;

ENUM_TRADE_REQUEST_ACTIONS 修改=TRADE_ACTION_SLTP;

enum 方向 {做多,做空};


第一种:

void 开仓(int 类型)

  {

   MqlTradeRequest req;

   MqlTradeResult res;

   req.action=市价单;

   req.magic=6251501;

   req.symbol=Symbol();

   req.volume=手数判断();

   req.sl=0;

   req.tp=0;

   req.deviation=50;

   req.type_filling=ORDER_FILLING_FOK;

   req.comment="当即将有大数据时,如果没有单,建议待消息公布后5分钟再重启EA";

   if(类型==做多)

     {

      req.type=ORDER_TYPE_BUY;

      req.price=NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),Digits());

     }

   else

     {

      req.type=ORDER_TYPE_SELL;

      req.price=NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_BID),Digits());

     }

   bool 订单状态=OrderSend(req,res);

   Print("开仓结果=",res.retcode);

  }


第二种:

void 做多()

  {
   MqlTradeRequest req;
   MqlTradeResult res;
   req.action=市价单;
   req.magic=6251501;
   req.symbol=Symbol();
   req.volume=手数判断();
   req.sl=0;
   req.tp=0;
   req.deviation=100;
   req.type_filling=ORDER_FILLING_FOK; 
   req.comment= "当即将有大数据时,如果没有单,建议待消息公布后5分钟再重启EA";
   req.type=ORDER_TYPE_BUY;
   req.price=NormalizeDouble(SymbolInfoDouble(Symbol(),SYMBOL_ASK),Digits());
   bool 订单状态=OrderSend(req,res);
   Print("开仓结果",res.retcode);
  }
 

试试
req.type_filling=ORDER_FILLING_IOC;
 
Wen Feng Lin #:

试试
req.type_filling=ORDER_FILLING_IOC;

一样不行,做模拟FOK和IOC无差别

 
最终结果是,用的Ctrade代替,OrderSend(req,res)有故障,有时能正常交易,大多数不能正常交易,报错10013,这还是模拟的情况下,希望后台能解决一下
 
dasongkeji #:
报错10013

大概率是报价,止损,止盈之类的配置有问题。

换一个平台测试一下就能确定是不是服务器的问题。

 

使用標準程序庫的交易類 可以解決掉99%以上的問題

除非想深入了解交易條件的全部細節 要不然沒必要自己去創建一個執行交易的函數

 
Hung Wen Lin #:

使用標準程序庫的交易類 可以解決掉99%以上的問題

除非想深入了解交易條件的全部細節 要不然沒必要自己去創建一個執行交易的函數

mql5的标准程序库在哪找
 
MYXYZ #:
mql5的标准程序库在哪找

mql5的标准程序库在这找

https://www.mql5.com/zh/docs

MQL5文档
MQL5文档
  • www.mql5.com
MetaQuotes Language 5 (MQL5)是一种高水平编程语言,专为开发技术指标、EA交易和实用应用程序而设计,进而使金融交易自动化。MQL5是由 MetaQuotes 为其交易平台而开发的。这个语言的语法非常接近于C++,使程序员能够在面向对象编程(OOP)风格中开发应用程序...