OrdersTotal(), PositionsTotal() - página 2

Para adicionar comentários, por favor Faça o login ou registrar
Cristiano Santos
70
Cristiano Santos  
Rogerio Giannetti Torres:

Opa Cristiano, entendi o que você quer, então para isso você deve ler o histórico de ordens executadas no dia e não emitir novas ordens quando bater no limite. Essa sugestão já foi dada, então vou anexar um modelo de código para você seguir.



Perfeito. Muito obrigado. Funcionou


Acrescentei mais umas linhas apenas para não considerar as ordens SL e TP.

int numOrdensAceitas()
  {
   int acmOrdensExecutadas=0;
   HistorySelect(StringToTime(TimeToString(TimeTradeServer(), TIME_DATE)), INT_MAX);  // Seleciona histórico do dia
   int total = HistoryDealsTotal();
   for(int i = 0; i < total; i++)
     {
      ulong Ticket = HistoryDealGetTicket(i);
      if(HistoryDealGetString(Ticket, DEAL_SYMBOL) == _Symbol
         && HistoryDealGetInteger(Ticket, DEAL_ENTRY) == DEAL_ENTRY_IN
         && HistoryDealGetInteger(Ticket,DEAL_REASON)!=DEAL_REASON_SL
         && HistoryDealGetInteger(Ticket,DEAL_REASON)!=DEAL_REASON_TP
        )
        {
            acmOrdensExecutadas++;
        }
     }
   return(acmOrdensExecutadas+1);
  }
Rogerio Giannetti Torres
2763
Rogerio Giannetti Torres  
Cristiano Santos:

Perfeito. Muito obrigado. Funcionou

Acrescentei mais umas linhas apenas para não considerar as ordens SL e TP.

Oi Cristiano, não vejo necessidade dessas linhas, pois o stoploss e takeprofit  geram ordens de "saída" de posição ou sejam  deal entry tipo  DEAL_ENTRY_OUT, o script que passei só soma o deal entry tipo DEAL_ENTRY_IN.

12
Para adicionar comentários, por favor Faça o login ou registrar