Ainda Breakeven

 

Alguém sabe me dizer como faço para acionar o breakeven depois de duas velas com lucro, podendo ser uma seguida da outra ou não. Estou tentando desta forma mas não está dando muito certo

void Breakeven()
   {if(PositionSelect(_Symbol)&&PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)  // Se a operacão existir e for de compra
      {double preco_entrada=PositionGetDouble(POSITION_PRICE_OPEN); // Captura o preço de entrada na posição
       double preco_sl=PositionGetDouble(POSITION_SL);              // Captura o preço do stop loss
       double preco_tk=PositionGetDouble(POSITION_TP);              // Captura o preço do take profit
       int sVelasPositivas=0;                                                          // Conta velas positivas seguidas
       int sVelasNegativas=0;
       double sOpen=0,sClose=0;
       int Candles=3; 
       for(int i=1;i<=Candles;i++)
          {sOpen=iOpen(NULL,PERIOD_CURRENT,i);
           sClose=iClose(NULL,PERIOD_CURRENT,i);
           (sClose-sOpen)>0?sVelasPositivas++:sVelasNegativas++;
           Print("Velas positivas = ",sVelasPositivas," Velas negativas = ",sVelasNegativas);}
       if(sVelasPositivas==3&&!be_ativado) // Testa condição para acionar o Breakeven
         {desenhaLinhaHorizontal("Compra",preco_entrada,clrGreen); // Desenha uma linha no alvo do breakeven
          trade.PositionModify(PositionGetTicket(0),preco_entrada,preco_tk);be_ativado=true;}} // Modifica a posicão. Novo stop loss e novo take profit
    if(PositionSelect(_Symbol)&&PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL) // Breakeven de venda
      {double preco_entrada=PositionGetDouble(POSITION_PRICE_OPEN); // Captura o preço de entrada na posição
       double preco_sl=PositionGetDouble(POSITION_SL);              // Captura o preço do stop loss
       double preco_tk=PositionGetDouble(POSITION_TP);              // Captura o preço do take profit
       int sVelasPositivas =0;
       int sVelasNegativas =0;
       double sOpen =0, sClose=0;
       int Candles =3; 
       for(int i=1; i <= Candles; i++)
          {sOpen = iOpen(NULL, PERIOD_CURRENT, i);
           sClose = iClose(NULL, PERIOD_CURRENT, i);
           (sClose - sOpen) > 0?  sVelasPositivas ++: sVelasNegativas ++;}
       if(sVelasNegativas==3&&!be_ativado) // Testa condição para acionar o Breakeven
         {desenhaLinhaHorizontal("Venda",preco_entrada,clrYellow);
          trade.PositionModify(PositionGetTicket(0),preco_entrada,preco_tk);be_ativado=true;}}} // Modifica a posicão. novo stop loss e novo take profit
Razão: