Ajuda no código de Trailing Stop que não está funcionando.

Para adicionar comentários, por favor Faça o login ou registrar
Bsanmart
8
Bsanmart  
Quando o EA executa uma ordem no mini índice já são plotados o take proft e o stop loss ( TP = 200 SL = -100 ) então eu queria uma logica que quando o Proft atingir 100 pontos o Stop loss avance 100 pontos também passando a ser (zero a zero ou stop gain) só que não esta funcionado.

Segue o Código:

input int TRAILING_Stop = 100;


void OnTick()
{


//GARANTINDO AS TAXAS E CORRETAGENS----------------------------------------------------------------------
if(PositionSelect(_Symbol)==true)
{ 
  
   if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY && POSITION_PROFIT >= TRAILING_Stop)
       {
   MqlTradeRequest  requisicao;
   MqlTradeResult   resposta;
   
   ZeroMemory(requisicao);
   ZeroMemory(resposta);
   
   requisicao.action       = TRADE_ACTION_SLTP;
   requisicao.magic        = 8520;
   requisicao.symbol       = _Symbol;
   requisicao.volume       = POSITION_VOLUME;
   requisicao.sl           = POSITION_SL + TRAILING_Stop + 10;  //(10 pontos de taxas..)
   requisicao.tp           = POSITION_TP ; //TP permanece no mesmo local

 ResetLastError();
   bool ordem = OrderSend(requisicao,resposta);   
   if(ordem==false) 
   { 
   Print("ERRO ao no Trailing Stop ERRO:",GetLastError());
   } 
   else
   {
   Print("Trailing Stop Executado! ",GetLastError());
   }

   }
       
      
   if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL && POSITION_PROFIT >= TRAILING_Stop)
       {
   MqlTradeRequest  requisicao;
   MqlTradeResult   resposta;
   
   ZeroMemory(requisicao);
   ZeroMemory(resposta);
   
   requisicao.action       = TRADE_ACTION_SLTP;
   requisicao.magic        = 8520;
   requisicao.symbol       = _Symbol;
   requisicao.volume       = POSITION_VOLUME;
   requisicao.sl           = POSITION_SL - TRAILING_Stop - 10;  //(10 pontos de taxas..)
   requisicao.tp           = POSITION_TP ; //TP permanece no mesmo local
      
 ResetLastError();
   bool ordem = OrderSend(requisicao,resposta);   
   if(ordem==false) 
   { 
   Print("ERRO ao no Trailing Stop ERRO:",GetLastError());
   } 
   else
   {
   Print("Trailing Stop Executado! ",GetLastError());
   }
   }
   }
}
Para adicionar comentários, por favor Faça o login ou registrar