Problema al cerrar posiciones bucle for

 

Hola a todos, necesito ayuda estoy programando EA, el cual si una operación alcanza el take profit procederá a cerrar 0.1 lotes de la operación y modificará dicha operación aun stop loss a precio de entrada sin take profit. 

El problema es el siguiente: en el caso de que una operación alcanze el take profit se ejecutara lo anteriormente mencionado, pero si se abre una operación y esta alcanza el takeprofit no se ejecutara lo que había planteado, esto se debe al boolenado EstadoOperacion que para ese punto está en true, sin embargo, si lo reinicio por así decirlo agregando un EstadoOperacion false dentro del IF PositionSelectByTicket lo que hará es que ejecute el bloque de código hasta cerrar completamente la posición. 

Que sugerencias me recomiendan para resolver este problema

bool EstadoOperacion;

void Pos50()
{

  if (PositionsTotal() == 0)
  {
    EstadoOperacion = false;
  }

  // INFO ACTIVO
  double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
  ask = NormalizeDouble(ask, _Digits);
  double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
  bid = NormalizeDouble(bid, _Digits);


  for (int p = PositionsTotal() - 1; p >= 0; p--)
  {
    ulong Ticket = PositionGetTicket(p);
    if (PositionSelectByTicket(Ticket))
    {
      double takeProfit = PositionGetDouble(POSITION_TP);
      double PrecioApertura = PositionGetDouble(POSITION_PRICE_OPEN);
      ENUM_POSITION_TYPE PosType = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
      if (PosType == POSITION_TYPE_BUY)
      {
        if (bid >= takeProfit - 10 && EstadoOperacion == false)
        {
          trade.PositionClosePartial(Ticket, 0.1, -10);
          trade.PositionModify(Ticket, PrecioApertura, 0); 
          EstadoOperacion = true;
        }
      }
      else if (PosType == POSITION_TYPE_SELL)
      {

        if (bid <= takeProfit + 10 && EstadoOperacion == false)
        {
          trade.PositionClosePartial(Ticket, 0.1, -10);
          
          trade.PositionModify(Ticket, PrecioApertura, 0); 
          EstadoOperacion = true;
        }
      }
    }
  }
}