MEU EA NÃO ESTA COLOCANDO STOP LOSS NEM TAKE PROFIT

 
Olá pessoal, estou desenvolvendo um expert mql5 com stop loss e take profit. Na conta DEMO ele funciona normalmente comprando/vendendo e colocando stop loss e take profit, entretanto na conta REAL ele apenas entra comprado/vendido nas operações e não coloca o stop loss nem o take profit. Coloquei a parte do código que uso pra definir o take profit e o stop loss, alguém sabe onde pode estar o erro?

input double   stop_loss = 100;              // Stop Loss.
input double   take_profit = 100;            // Take Profit.





if(rates[2].open < rates[2].close)
  {

   
   if(PositionsTotal() == 0 && OrdersTotal() == 0)
      {
         if(rates[1].open > rates[1].close && HoraNegociacao() && (rates[1].open-rates[1].close) > intervaloDeEntrada)
            {
               if(SaidaStopLoss())
              {
               volume_atual *= VolumeMultiplicador;
               if(volume_atual > VolumeMaximo)
                  volume_atual = VolumeMaximo;
              }
            else
              {
               volume_atual = VolumeInicial;
              }
               trade.Sell(volume_atual, Symbol(), 0,0,0, NULL);
               addTakeStop(stop_loss, take_profit );
            }
      }
  }



void addTakeStop(double p_sl, double p_tp){

   for(int i = PositionsTotal() -1; i>=0; i--){
      string symbol = PositionGetSymbol(i);
      
      
      if(symbol ==Symbol()){
      
         ulong ticket = PositionGetInteger(POSITION_TICKET);
         double precoEntrada = PositionGetDouble(POSITION_PRICE_OPEN);
         
         double novoSL;
         double novoTP;
         
         if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY){
         
            novoSL = NormalizeDouble( precoEntrada - (p_sl *_Point), _Digits);
            novoTP = NormalizeDouble( precoEntrada + (p_tp *_Point), _Digits);
            
            trade.PositionModify(ticket, novoSL, novoTP);
            
          }else if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL){
          
            novoSL = NormalizeDouble( precoEntrada + (p_sl *_Point), _Digits);
            novoTP = NormalizeDouble( precoEntrada - (p_tp *_Point), _Digits);
            
            trade.PositionModify(ticket, novoSL, novoTP);
            }
            
         }
         
      }
      
}




 
Guilherme Geovanini Fraga:
Olá pessoal, estou desenvolvendo um expert mql5 com stop loss e take profit. Na conta DEMO ele funciona normalmente comprando/vendendo e colocando stop loss e take profit, entretanto na conta REAL ele apenas entra comprado/vendido nas operações e não coloca o stop loss nem o take profit. Coloquei a parte do código que uso pra definir o take profit e o stop loss, alguém sabe onde pode estar o erro?





Você começa a debuggar um código com base nas mensagens de erro...

O quê os logs dizem??

Qual o mercado?

Nem tudo são Points no planeta...

 
Guilherme Geovanini Fraga:
Olá pessoal, estou desenvolvendo um expert mql5 com stop loss e take profit. Na conta DEMO ele funciona normalmente comprando/vendendo e colocando stop loss e take profit, entretanto na conta REAL ele apenas entra comprado/vendido nas operações e não coloca o stop loss nem o take profit. Coloquei a parte do código que uso pra definir o take profit e o stop loss, alguém sabe onde pode estar o erro?





addTakeStop(100.00, 100.00)
 
andreluisfreitas:

Tentei colocar assim mas também não deu kkkk

 
Flavio Jarabeck:

Você começa a debuggar um código com base nas mensagens de erro...

O quê os logs dizem??

Qual o mercado?

Nem tudo são Points no planeta...

Estou operando o mini indice.

https://media.discordapp.net/attachments/683318288712728673/755429831835123722/unknown.png

Uns amigos meu me tentaram me ajudar então fiz umas mudanças, mesmo assim as ordens de compra estão me retornando um tp 0 e as de venda um stop loss 0. O retangulo azul eu fiz na mão.

E novamente na conta demo esta ocorrendo tudo normal.

https://media.discordapp.net/attachments/683318288712728673/755430588499886090/unknown.png

N sei como posta imagem aqui kkkk

 
Guilherme Geovanini Fraga:

Estou operando o mini indice.

https://media.discordapp.net/attachments/683318288712728673/755429831835123722/unknown.png

Uns amigos meu me tentaram me ajudar então fiz umas mudanças, mesmo assim as ordens de compra estão me retornando um tp 0 e as de venda um stop loss 0. O retangulo azul eu fiz na mão.

E novamente na conta demo esta ocorrendo tudo normal.

https://media.discordapp.net/attachments/683318288712728673/755430588499886090/unknown.png

N sei como posta imagem aqui kkkk

Guilherme,

Aparentemente seu código está certo mesmo, ou pelo menos eu não consegui encontrar nenhum erro.... Mas após a execução do PositionModify, chame o ResultRetCode() e verifique o retorno como está na documentação do PositionModify():


".... A conclusão bem sucedida do método PositionModify(...) nem sempre significa a execução bem sucedida da operação de negociação. É necessário verificar o resultado do pedido de negociação (código de retorno do servidor de negociação) utilizando ResultRetcode(). ..."
Documentação sobre MQL5: Biblioteca Padrão / Classes de negociação / CTrade / ResultRetcode
Documentação sobre MQL5: Biblioteca Padrão / Classes de negociação / CTrade / ResultRetcode
  • www.mql5.com
ResultRetcode - CTrade - Classes de negociação - Biblioteca Padrão - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
Razão: