[Ajuda] Não consigo mover o StopLoss na conta demo

 

Bom dia,

Estou testando um EA que obteve resultados interessantes em backtest e agora decidi testa-lo em conta demo, contudo, na conta demo a função que move o stoploss não está funcionando e eu não sei o motivo. Rodando no backtest estava funcionando perfeitamente. Estou utilizando a corretora Terra Investimentos, segue trecho do código responsável por mover o StopLoss:

double Alvo_Mover_SL=0.85;
ulong Ultimo_Ticket=0;

void Mover_Stop()
  {
   HistorySelect(0,TimeCurrent());
   ulong ticket=HistoryDealGetTicket(HistoryDealsTotal()-1);
   PositionSelectByTicket(ticket);

   double Open=PositionGetDouble(POSITION_PRICE_OPEN);
   double  SL=PositionGetDouble(POSITION_SL);
   double TP=PositionGetDouble(POSITION_TP);
   double Profit_Corrente=PositionGetDouble(POSITION_PROFIT);

   if(Profit_Corrente>Pontos*0.2*Alvo_Mover_SL
      && Ultimo_Ticket!=ticket)
     {

      Ultimo_Ticket=ticket;

      if(TP>SL){trade.PositionModify(ticket, Open+0.1*MathAbs(TP-Open)/2 ,TP);}
      if(TP<SL){trade.PositionModify(ticket, Open-0.1*MathAbs(TP-Open)/2 ,TP);}
     }

  }


Qualquer ajuda será muito bem vinda, obrigado.

 
andremafra96:


André,

veja no log aba diário as msg(s) de erro de execução, certamente o Modify está dando erro e você não está dando o devido tratamento no programa.

Abaixo uma sugestão para obter a última posição em aberto para o ativo:

 

   long ticket=0;
   int total=PositionsTotal();
   for(int i=0; i<total; i++)
     {
      if(PositionSelectByTicket(PositionGetTicket(i))
         && PositionGetString(POSITION_SYMBOL)==_Symbol
         && PositionGetInteger(POSITION_MAGIC)==MagicNumber
         )
        {
         ticket=PositionGetTicket(i);
         break;
        }
     }
 
Rogerio Giannetti Torres:

André,

veja no log aba diário as msg(s) de erro de execução, certamente o Modify está dando erro e você não está dando o devido tratamento no programa.

Abaixo uma sugestão para obter a última posição em aberto para o ativo:

 

Problema resolvido, muito obrigado!
Razão: