如何检查机票是否仍处于打开状态或已关闭?

时间:2018-05-30 08:22:59

标签: mql4

如果我在OrderSend设置获利止损的情况下开仓,我该怎样检查它是否仍处于打开状态,或者在相反,由于 stop_loss 获利,它已被关闭?

2 个答案:

答案 0 :(得分:2)

您必须拥有发送OrderSend()请求时收到的ticketId 为了确定交易是否开放,请使用以下内容:

 int ticket; //your ticket from OrderSend in global variables
 bool isOrderExist(const int _ticket){
    if(OrderSelect(_ticket,SELECT_BY_TICKET)){
       return(OrderCloseTime()==0);
    }else{
       int error=GetLastError();
       return(error!=4108 && error!=4051);
    }
 }

为了检查订单是否由SL或TP关闭或任何其他原因 - 您应该从OrdersHistory()中选择订单然后检查评论(通常是'[sl]'或'[tp]'被添加到评论中)或比较收盘价和SL和TP

答案 1 :(得分:1)

您也可以使用:OrderPrint()

if(OrderSelect(10, SELECT_BY_TICKET)==true) 
    OrderPrint(); 
else 
    Print("OrderSelect failed error code is",GetLastError());

来自MetaEditor参考:

  

按以下格式在日志中打印有关所选订单的信息:

ticket number; 
open time; 
trade operation; 
amount of lots; 
symbol; 
open price; 
Stop Loss; 
Take Profit; 
close time; 
close price; 
commission; 
swap; 
profit; 
comment; 
magic number; 
pending order expiration date.