Определить как закрылся ордер

 

как можно определить сработал TakeProfit или StopLoss у ордера? Ордер всегда не могу, разобраться как понять сделка прошла успешно или нет...

Читал про HistorySelect не помогло. Может кто сталкивался, подскажите.

 
sergesus:

как можно определить сработал TakeProfit или StopLoss у ордера? Ордер всегда не могу, разобраться как понять сделка прошла успешно или нет...

Читал про HistorySelect не помогло. Может кто сталкивался, подскажите.

 

 

HistoryDealGetDouble

свойство  ENUM_DEAL_PROPERTY_DOUBLE  DEAL_PROFIT Финансовый результат сделки

 
Urain:

HistoryDealGetDouble

свойство  ENUM_DEAL_PROPERTY_DOUBLE  DEAL_PROFIT Финансовый результат сделки

Не получается...

 и

void Prf()
  {

//--- request trade history
   HistorySelect(0,TimeCurrent());

   uint     total=HistoryDealsTotal();
   ulong    ticket=0;
   double   profit;
 
   for(uint i=0;i<total;i++)
     {
      if((ticket=HistoryDealGetTicket(i))>0)
        {
         profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
         if(profit)
           {
             printf("#ticket, %f",
                ticket,                  // тикет ордера
                profit
                );
           }
        }
     }
 
CN 0 Core 1 15:14:26 2012.03.19 23:58:28   #ticket, 7.000000
EF 0 Core 1 15:14:26 2012.03.19 23:58:31   #ticket, 1.000000
GN 0 Core 1 15:14:26 2012.03.19 23:58:31   #ticket, 3.000000
QG 0 Core 1 15:14:26 2012.03.19 23:58:31   #ticket, 5.000000
KO 0 Core 1 15:14:26 2012.03.19 23:58:31   #ticket, 7.000000
JG 0 Core 1 15:14:26 2012.03.19 23:58:34   #ticket, 1.000000
DO 0 Core 1 15:14:26 2012.03.19 23:58:34   #ticket, 3.000000
ND 0 Core 1 15:14:26 2012.03.19 23:58:34   #ticket, 5.000000
PL 0 Core 1 15:14:26 2012.03.19 23:58:34   #ticket, 7.000000
GD 0 Core 1 15:14:26 2012.03.19 23:58:37   #ticket, 1.000000
EL 0 Core 1 15:14:26 2012.03.19 23:58:37   #ticket, 3.000000
KE 0 Core 1 15:14:26 2012.03.19 23:58:37   #ticket, 5.000000
QM 0 Core 1 15:14:26 2012.03.19 23:58:37   #ticket, 7.000000
HE 0 Core 1 15:14:26 2012.03.19 23:58:41   #ticket, 1.000000
FM 0 Core 1 15:14:26 2012.03.19 23:58:41   #ticket, 3.000000
LJ 0 Core 1 15:14:26 2012.03.19 23:58:41   #ticket, 5.000000
RR 0 Core 1 15:14:26 2012.03.19 23:58:41   #ticket, 7.000000
CJ 0 Core 1 15:14:26 2012.03.19 23:58:44   #ticket, 1.000000
IR 0 Core 1 15:14:26 2012.03.19 23:58:44   #ticket, 3.000000
OK 0 Core 1 15:14:26 2012.03.19 23:58:44   #ticket, 5.000000
MS 0 Core 1 15:14:26 2012.03.19 23:58:44   #ticket, 7.000000
FK 0 Core 1 15:14:26 2012.03.19 23:58:47   #ticket, 1.000000
HS 0 Core 1 15:14:26 2012.03.19 23:58:47   #ticket, 3.000000
RH 0 Core 1 15:14:26 2012.03.19 23:58:47   #ticket, 5.000000
LP 0 Core 1 15:14:26 2012.03.19 23:58:47   #ticket, 7.000000
HH 0 Core 1 15:14:26 2012.03.19 23:58:50   #ticket, 1.000000
FP 0 Core 1 15:14:26 2012.03.19 23:58:50   #ticket, 3.000000
LI 0 Core 1 15:14:26 2012.03.19 23:58:50   #ticket, 5.000000
RQ 0 Core 1 15:14:26 2012.03.19 23:58:50   #ticket, 7.000000
OI 0 Core 1 15:14:26 2012.03.19 23:58:59   #ticket, 1.000000
MQ 0 Core 1 15:14:26 2012.03.19 23:58:59   #ticket, 3.000000
CN 0 Core 1 15:14:26 2012.03.19 23:58:59   #ticket, 5.000000
IF 0 Core 1 15:14:26 2012.03.19 23:58:59   #ticket, 7.000000
DN 0 Core 1 15:14:26 2012.03.19 23:59:00   #ticket, 1.000000
JF 0 Core 1 15:14:26 2012.03.19 23:59:00   #ticket, 3.000000
PO 0 Core 1 15:14:26 2012.03.19 23:59:00   #ticket, 5.000000
NG 0 Core 1 15:14:26 2012.03.19 23:59:00   #ticket, 7.000000
GO 0 Core 1 15:14:26 2012.03.19 23:59:05   #ticket, 1.000000
EG 0 Core 1 15:14:26 2012.03.19 23:59:05   #ticket, 3.000000
KL 0 Core 1 15:14:26 2012.03.19 23:59:05   #ticket, 5.000000
QD 0 Core 1 15:14:26 2012.03.19 23:59:05   #ticket, 7.000000
CL 0 Core 1 15:14:26 2012.03.19 23:59:10   #ticket, 1.000000
ID 0 Core 1 15:14:26 2012.03.19 23:59:10   #ticket, 3.000000
OM 0 Core 1 15:14:26 2012.03.19 23:59:10   #ticket, 5.000000
ME 0 Core 1 15:14:26 2012.03.19 23:59:10   #ticket, 7.000000
IM 0 Core 1 15:14:26 2012.03.19 23:59:16   #ticket, 1.000000
CE 0 Core 1 15:14:26 2012.03.19 23:59:16   #ticket, 3.000000
MR 0 Core 1 15:14:26 2012.03.19 23:59:16   #ticket, 5.000000
OJ 0 Core 1 15:14:26 2012.03.19 23:59:16   #ticket, 7.000000
ER 0 Core 1 15:14:26 2012.03.19 23:59:21   #ticket, 1.000000
GJ 0 Core 1 15:14:26 2012.03.19 23:59:21   #ticket, 3.000000
QS 0 Core 1 15:14:26 2012.03.19 23:59:21   #ticket, 5.000000
KK 0 Core 1 15:14:26 2012.03.19 23:59:21   #ticket, 7.000000
GS 0 Core 1 15:14:26 2012.03.19 23:59:27   #ticket, 1.000000
EK 0 Core 1 15:14:26 2012.03.19 23:59:27   #ticket, 3.000000
KP 0 Core 1 15:14:26 2012.03.19 23:59:27   #ticket, 5.000000
QH 0 Core 1 15:14:26 2012.03.19 23:59:27   #ticket, 7.000000
CP 0 Core 1 15:14:26 2012.03.19 23:59:32   #ticket, 1.000000
IH 0 Core 1 15:14:26 2012.03.19 23:59:32   #ticket, 3.000000
OQ 0 Core 1 15:14:26 2012.03.19 23:59:32   #ticket, 5.000000
MI 0 Core 1 15:14:26 2012.03.19 23:59:32   #ticket, 7.000000
MQ 0 Core 1 15:14:26 2012.03.19 23:59:38   #ticket, 1.000000
OI 0 Core 1 15:14:26 2012.03.19 23:59:38   #ticket, 3.000000
IF 0 Core 1 15:14:26 2012.03.19 23:59:38   #ticket, 5.000000
CN 0 Core 1 15:14:26 2012.03.19 23:59:38   #ticket, 7.000000
IF 0 Core 1 15:14:26 2012.03.19 23:59:43   #ticket, 1.000000
CN 0 Core 1 15:14:26 2012.03.19 23:59:43   #ticket, 3.000000
MG 0 Core 1 15:14:26 2012.03.19 23:59:43   #ticket, 5.000000
OO 0 Core 1 15:14:26 2012.03.19 23:59:43   #ticket, 7.000000
PG 0 Core 1 15:14:26 2012.03.19 23:59:59   #ticket, 1.000000
NO 0 Core 1 15:14:26 2012.03.19 23:59:59   #ticket, 3.000000
DD 0 Core 1 15:14:26 2012.03.19 23:59:59   #ticket, 5.000000
JL 0 Core 1 15:14:26 2012.03.19 23:59:59   #ticket, 7.000000
QF 0 Core 1 15:14:26 final balance 10900.00
DS 0 Core 1 15:14:26 OnTester result 0

 
Вообще не получается, не понятно как работает... 
 
void Prf()
{
  if(!HistorySelect(0,TimeCurrent())) return;
  ulong ticket;
  for(int i=0;i<HistoryDealsTotal();i++)
      if( (ticket=HistoryDealGetTicket(i))>0 )
        {  if( StringFind(HistoryDealGetString(ticket,DEAL_COMMENT),"[sl")>=0 ) Print(ticket,":  sl_exit OK!"); 
           if( StringFind(HistoryDealGetString(ticket,DEAL_COMMENT),"[tp")>=0 ) Print(ticket,":  tp_exit OK!");
        }
}
 
dupter:
Нужно чтобы обрабатывалось это в эксперте, а не в скрипте.
 

Добрый день!

Была похожая проблема ( HistorySelect не работает).

Решил так.

Нужно знать билет ордера ( order_ticket  )

#include            <Trade\Trade.mqh>

CTrade                trade; 

ulong                 order_ticket; 

 

if ( trade.OrderOpen( _Symbol, ORDER_TYPE_BUY_STOP, volume_deal, 0, deal_price, stop_loss, 0, ORDER_TIME_GTC, 0, "Set order."  ) )
      {
        if ( trade.ResultRetcode() == TRADE_RETCODE_DONE )
        {
          order_ticket = trade.ResultOrder();
         
//--- Check order ticket
          if ( ( order_ticket ) > 0 )
          {
            Print( "Set order to Buy done. Ticket = ", order_ticket );
            return( true );
          } 
        }
      } 

 

ДАЛЕЕ проверяем ордер по билету: 

if ( order_ticket > 0 )
{

  ResetLastError(); 

  if ( !OrderSelect( order_ticket ) )
  {
    
    if ( GetLastError() == ERR_TRADE_ORDER_NOT_FOUND )
    {
       order_ticket = 0;
       Print( "Order removed by StopLoss or TakeProfit." );
      }

    } 

100% работает

Михаил