hora da execução da última ordem

 
Bom dia,
Por favor, qual a função que retorna a hora em que a última ordem foi executada?
 
Sergio Gelli:

Bom dia.


Uma forma seria guardar essa informação em uma variável global. Por exemplo:

datetime LastOrderTime = 0;  //--- Variável global

...

MqlTradeRequest Request;
MqlTradeResult  Result;

...

if(!OrderSend(Request, Result))
  {Print(Symbol(), " Error ", GetLastError());}
else
  {LastOrderTime = TimeCurrent();}
 
Sergio Gelli:

Outra forma seria verificar os horários de todas as posições abertas:

int Cnt;
ulong TICKET, MAGICNUM;
datetime LastOrderTimeBuy = 0, LastOrderTimeSell = 0;

//--- Checks positions
for(Cnt = PositionsTotal() - 1; Cnt >= 0; Cnt--)
  {
   TICKET = PositionGetTicket(Cnt);
   if(TICKET > 0)
     {
      if(PositionGetString(POSITION_SYMBOL) == Symbol() && PositionGetInteger(POSITION_MAGIC) == MAGICNUM)
        {
         if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
           {
            ...
            if(PositionGetInteger(POSITION_TIME) > LastOrderTimeBuy)
              {LastOrderTimeBuy = PositionGetInteger(POSITION_TIME);}
            ...
           }
         else if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
           {
            ...
            if(PositionGetInteger(POSITION_TIME) > LastOrderTimeSell)
              {LastOrderTimeSell = PositionGetInteger(POSITION_TIME);}
            ...
           }
        }
     }
  }
 
Perfeito!!!! Muito obrigado
 
Sergio Gelli:
Bom dia,
Por favor, qual a função que retorna a hora em que a última ordem foi executada?

Olá Sérgio,

basta usar o OnTradeTransaction() como mostrado abaixo, o deal_time é a hora  de cada preenchimento a ordem.


void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
{
   if(trans.type == TRADE_TRANSACTION_DEAL_ADD && trans.symbol == _Symbol && trans.deal_type < 2)
     {
      if(HistoryDealSelect(trans.deal))
        {
         if(HistoryDealGetInteger(trans.deal, DEAL_MAGIC) == inpMagicNumber)
           {  
                deal_time = HistoryDealGetInteger(trans.deal,DEAL_TIME);
           }
        }
     }
}
Razão: