为神马下单语言实测无法执行(模拟测试可以)

 

Mql4语言的下单命令 

运行后账户根本不开仓(我没有设置限制条件,直接市价下单,两个语言都试过了,根本不好使,也没有显示挂单) 

OrderSend(Symbol(),OP_SELL,0.05,Ask,50,0,0,"Sell",1,0,clrRed);

 OrderSend(Symbol(),OP_SELL,0.05,Bid,50,0,0,"Sell",1,0,clrRed);

平仓命令

明明有开仓单,ea就是不平仓 

  {

  double i;

  if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES )==true){

i = OrderTicket();

OrderClose(i,0.05,(Ask+Bid)/2,50,clrRed);

 

模拟测试能工作,只有在实际运行时候不行

 

为什么? 

 
hail:

Mql4语言的下单命令 

运行后账户根本不开仓(我没有设置限制条件,直接市价下单,两个语言都试过了,根本不好使,也没有显示挂单) 

OrderSend(Symbol(),OP_SELL,0.05,Ask,50,0,0,"Sell",1,0,clrRed);

 OrderSend(Symbol(),OP_SELL,0.05,Bid,50,0,0,"Sell",1,0,clrRed);

平仓命令

明明有开仓单,ea就是不平仓 

  {

  double i;

  if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES )==true){

i = OrderTicket();

OrderClose(i,0.05,(Ask+Bid)/2,50,clrRed);

为什么? 

大多数平台不支持OrderSend()函数带止损/止盈值下单。

将止损、止盈值设置为0,另外用OrderModify()函数语句设置止损止盈值。

这本来是个众所周知的常识,但这么多年却一直成为一个常见的问题,不断有新人为此纳闷。

 

首先确认终端允许自动交易, 以及开仓最小手数。假设最小手数小于 0.05,则 

开仓试试:

int ticket = OrderSend(Symbol(), OP_SELL, 0.05, Bid, 50, 0, 0, "Sell", 1, 0, clrRed); 

 

Order Ticket 是整数型,所以平仓试试:

bool result = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 50, clrRed);

最后要查看终端的日志输出,无论成功与否,都会显示操作结果的。 

 
Nianfu Li:

大多数平台不支持OrderSend()函数带止损/止盈值下单。

将止损、止盈值设置为0,另外用OrderModify()函数语句设置止损止盈值。

这本来是个众所周知的常识,但这么多年却一直成为一个常见的问题,不断有新人为此纳闷。

Nianfu Li:


首先谢谢您,我使用的是止损止盈值为0,模拟测试整个系统是工作的,而且工作正常,能看到所有交易情况,问题是实际不能工作 

 
hail:

mql4提供了排错、调试工具,你为什么不用?遇到函数运行问题,多用GetLastError();遇到变量值不对劲,多用Comment(),让系统把错误显示给你看。

另外,尽量使用#property strict模式编写。

原因: