如果我在OrderSend
设置获利和止损的情况下开仓,我该怎样检查它是否仍处于打开状态,或者在相反,由于 stop_loss 或获利,它已被关闭?
答案 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.