Назад
TR_CloseByTicket
Закрытие ордера по тикету. Если ордер рыночный, то происходит закрытие по рынку, если отложенный, то удаление.
[code=php]
bool TR_CloseByTicket(int ticket){
/*
>Ver : 0.0.7
>Date : 2013.02.24
>Hist:
@0.0.6@2012.10.04@artamir []
@0.0.5@2012.10.01@artamir []
@0.0.4@2012.10.01@artamir [+] add checking on err 138
@0.0.3@2012.10.01@artamir [+] add setExtraIsClosedByTicket
@0.0.2@2012.10.01@artamir []
@0.0.1@2012.09.14@artamir []
>Desc:
Закрытие ордера по тикету.
Если ордер рыночный, то происходит закрытие по рынку,
если отложенный, то удаление.
*/
//------------------------------------------------------
if(!OrderSelect(ticket, SELECT_BY_TICKET)) return(false);
//------------------------------------------------------
if(OrderType() != OP_BUY && OrderType() != OP_SELL){
return(OrderDelete(ticket));
}
//------------------------------------------------------
double price = 0.00;//MI_MarketCloseByCMD(OrderType());
price = Norm_symb(price);
//------------------------------------------------------
double lot = OrderLots();
//------------------------------------------------------
int tryCount = 0;
//------------------------------------------------------
bool res = false;
//------------------------------------------------------
while(!res && tryCount < 5 && !IsTradeContextBusy()){
//----------------------------------------------
RefreshRates();
if(OrderType() == OP_BUY){
price = MarketInfo(OrderSymbol(), MODE_BID);
}else{
if(OrderType() == OP_SELL){
price = MarketInfo(OrderSymbol(), MODE_ASK);
}
}
//----------------------------------------------
//price = libMI_getMarketClosePriceByCMD(OrderType());
//----------------------------------------------
price = Norm_symb(price);
//--------------------------------------------------
res = OrderClose(ticket, lot, price, 0, CLR_NONE);
//--------------------------------------------------
int err = GetLastError();
//--------------------------------------------------
if(err == 138){
//----------------------------------------------
//Sleep(11000);
Print("X3");
}
//--------------------------------------------------
tryCount++;
}
//------------------------------------------------------
if(res){
OE_setCloseByTicket(ticket);
}
//------------------------------------------------------
return(res);
}
[/code]