Stop e Take não são inseridos na conta real

 

Boa tarde! Pessoal, gostaria de ter um ajuda de vocês, com relação ao possivel erro na minha programação. O erro que acontece é somente na conta real! Após uma compra/venda o stop e o Take não são inseridos na conta real.

Realizei vários testes nas simulações, tudo ocorreu como esperado, mas na conta real não foi inserido o stop e o take após a compra/venda. Abaixo disponibilizo o código por completo. Utilizo a corretora [EDITADO PELO MODERADOR]



   

  if(PositionsTotal() == 0 && OrdersTotal () == 0 ){

      

      if(rates[2].close >= lowBand[2] && rates[1].close < lowBand[1] && HoraNegociacao()){

      ObjectCreate(0, rates[1].time+"_", OBJ_ARROW_BUY, 0, rates[1].time, rates[1].low);

  

       if (trade.Buy(lote, Symbol(),0,0,0,"Compra a Mercado")){//Realizar compra o primeiro número é a quantidade de contratos, comprar  a Mercado

         addTakeStop (Stop, Gain);
         
     }

          
   }
 
     if(rates[2].close <=  upBand[2] && rates[1].close > upBand [1] && HoraNegociacao()){

     ObjectCreate(0, rates[1].time+"_", OBJ_ARROW_SELL, 0,rates[1].time, rates[1].low);

     
     if( trade.Sell(lote,Symbol(),0,0,0,"venda a Mercado")){//Realizar venda o primeiro número é a quantidade de contratos, comprar  a Mercado

        addTakeStop (Stop, Gain);

               

      }  

      
    }


  }  



 void addTakeStop (double Stop, double Gain){

  for (int i = PositionsTotal () -1; i>=0; i--){

    string symbol = PositionGetSymbol(i);

      

      if(symbol == Symbol()){

      

      ulong ticket = PositionGetInteger(POSITION_TICKET);

      

      uint totalOrndes=OrdersTotal();//--- Numero de ordens atuais pendentes

      

      double precoEntrada = PositionGetDouble(POSITION_PRICE_OPEN);
      

      double novoSL;

      double novoTP;

       
      if(PositionGetInteger (POSITION_TYPE) == POSITION_TYPE_BUY){

                     

      novoSL = NormalizeDouble(precoEntrada -(Stop *_Point ), _Digits);

      novoTP = NormalizeDouble(precoEntrada +(Gain *_Point ), _Digits);

                

      trade.PositionModify(ticket, novoSL, novoTP);

           

   }else if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL){

      

      novoSL = NormalizeDouble(precoEntrada + (Stop *_Point), _Digits);

      novoTP = NormalizeDouble(precoEntrada - (Gain *_Point), _Digits);

      

             trade.PositionModify(ticket,novoSL,novoTP);

              
             }
     }
            

   } 

  }

  
Descubra novos recursos para o MetaTrader 5 com a comunidade e os serviços MQL5
Descubra novos recursos para o MetaTrader 5 com a comunidade e os serviços MQL5
  • www.mql5.com
One Click Close The script allows users to easily close positions if their profit/loss reaches or exceeds a value specified in pips. Please set slippage value first. Sometimes some positions do not close due to high volatility of the market. Please set larger slippage or restart the script. CreateGridOrdersTune A script for opening a grid of...
Arquivos anexados:
 

Acredito que o seu problema esteja nesta linha:

void addTakeStop (double Stop, double Gain)

Na função AddTakeStop você está declarando as mesmas variáveis que já existem no input e com isso elas estão ficando com o valor zero.

 
Claudio Oliveira:

Acredito que o seu problema esteja nesta linha:

Na função AddTakeStop você está declarando as mesmas variáveis que já existem no input e com isso elas estão ficando com o valor zero.

Boa observação Claudio! Muito Obrigado... 
Razão: