Cierre Parcial del lote

Función que usamos para cerrar la mitad del lotaje de todas las posiciones en corto y que su MagicNumer sea igual 10.

void CierreParcial50()
{
   double NuevoLote;

   TotalPosiciones=PositionsTotal();
   if (TotalPosiciones > 0)
   {
      for(uint x=0;x<TotalPosiciones;x++)
         {
            if ( m_position.SelectByIndex(x) )
            {
               if ( m_position.Magic() == 10 && m_position.PositionType() == POSITION_TYPE_SELL )
               {
                  NuevoLote = NormalizeDouble( m_position.Volume() / 2 , 2);
             
                  m_trade.PositionClosePartial(m_position.Ticket(),NuevoLote,5);
               }
            }   
          }   
    }  
}