Saida Parcial

 

Boa noite

Estou tentando colocar uma saida parcial em um EA, mas por algum motivo nunca esxecuta

// SAIDA PARCIAL 1
   if(PositionSelect(_Symbol)==true) //&& (Stop_Tkp==false) && (SAIDA_2_OK==false))
     {
      double preco = NormalizeDouble(ultimoTick.last,_Digits);
      for(int i= PositionsTotal()-1; i>=0; i--)
        {
         string symbol = PositionGetSymbol(i);
         ulong magic = PositionGetInteger(POSITION_MAGIC);
         if(symbol == _Symbol && magic == Magic_n)
           {
            ulong PositionTicket = PositionGetInteger(POSITION_TICKET);
            double PrecoEntrada = PositionGetDouble(POSITION_PRICE_OPEN);

            if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
              {

               double valor2 = NormalizeDouble(preco - PrecoEntrada,_Digits);
               if((valor2) >= SAIDA_2)
                 {
                  double PriceSaida = NormalizeDouble(preco,_Digits);
                  Comment("SAIDA PARCIAL 1");
                  if(trade.Sell(VOL_SAIDA_2,_Symbol,PriceSaida,0,0,NULL))
                    {
                     Print("Saida Parcial 1 Enviada sem Falha. ResultRetcode:", trade.ResultRetcode(), ", Retcode Description:", trade.ResultRetcodeDescription());
                     SAIDA_2_OK=true;
                    }
                  else
                    {
                     Print("Saida Parcial 1 Enviada com Falha. ResultRetcode:", trade.ResultRetcode(), ", Retcode Description:", trade.ResultRetcodeDescription());
                    }
                 }

              }
            else
               if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
                 {
                  double valor2 = NormalizeDouble(PrecoEntrada - preco,_Digits);
                  if((valor2) >= SAIDA_2)
                    {
                     double PriceSaida = NormalizeDouble(preco,_Digits);
                     Comment("SAIDA PARCIAL 1");
                     if(trade.Buy(VOL_SAIDA_2,_Symbol,PriceSaida,0,0,NULL))
                       {
                        Print("Saida Parcial 1 Enviada sem Falha. ResultRetcode:", trade.ResultRetcode(), ", Retcode Description:", trade.ResultRetcodeDescription());
                        SAIDA_2_OK=true;
                       }
                     else
                       {
                        Print("Saida Parcial 1 Enviada com Falha. ResultRetcode:", trade.ResultRetcode(), ", Retcode Description:", trade.ResultRetcodeDescription());
                       }

                    }
                 }
           }
        }
     }
 
NFONSECA:

Boa noite

Estou tentando colocar uma saida parcial em um EA, mas por algum motivo nunca esxecuta

Fonseca,  a tarefa que o programador mais perde tempo é corrigindo os erros de lógica da rotina que desenvolveu, então, sem querer ser rude, arregaça as mangas vai aprender a usar o DEBUG(depurador) do metaeditor e bota uns PRINTS nos dados para poder  investigar o motivo erro da sua rotina.