Ayuda! Problemas con Trailing Stop y Cierre por Indicadores. Uno desactiva el otro.

 

Buenas espero que me puedan ayudar. Luego de mucho logre hacer funcionar el trailing stop en un multicurrency, en su mayoría gracias a 2 usuarios de la comunidad (David y Antonio).


Ahora presento otro problema, resulta que estoy intentando habilitar otro cierre aparte del trailing stop, este cierre lo estoy haciendo con el ADX, exactamente en el cruce de las Di para evitar cambios de tendencias.


El problema es que cuando agrego el cierre del ADX se me deshabilita el sistema de Trailing Stop, le he dado mil vueltas a la cabeza e intentado mil cosas pero no logro hacer funcionar ambos a la vez. Dejo el pedazo de código a ver si me pueden dar una mano.


for(int i=0; i<SymbolsTotal(false); i++)
     {
      string name_symbol= SymbolName(i,false);
      int posTotal=PositionsTotal();
      for(int posIndex=posTotal-1; posIndex>=0; posIndex--)
        {
         ulong ticket=PositionGetTicket(posIndex);
         if(PositionSelectByTicket(ticket) && PositionGetInteger(POSITION_MAGIC)==MagicNumber)
           {
            if(PositionGetString(POSITION_SYMBOL) == name_symbol)
              {
               if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
                 {
                  if(iADXMQL4(name_symbol,Temporalidad,ADXPeriodo,PRICE_CLOSE,1,0)<iADXMQL4(name_symbol,Temporalidad,ADXPeriodo,PRICE_CLOSE,2,0)
            &&iADXMQL4(name_symbol,Temporalidad,ADXPeriodo,PRICE_CLOSE,2,1)<iADXMQL4(name_symbol,Temporalidad,ADXPeriodo,PRICE_CLOSE,1,1))
                    {
                     trade.PositionClose(ticket);
                     break;
                    }
                  if(TrailingStop>0)
                    {
                     if((SymbolInfoDouble(name_symbol,SYMBOL_BID)-TakeP*_Point)-PositionGetDouble(POSITION_PRICE_OPEN)>MyPoint*TrailingStop)
                       {
                        if(PositionGetDouble(POSITION_SL)<SymbolInfoDouble(name_symbol,SYMBOL_BID)-MyPoint*TrailingStop)
                          {
                           trade.PositionModify(ticket,SymbolInfoDouble(name_symbol,SYMBOL_BID)-MyPoint*TrailingStop,PositionGetDouble(POSITION_TP));
                           return;
                          }
                       }
                    }
                 }

               if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
                 {
                  if(iADXMQL4(name_symbol,Temporalidad,ADXPeriodo,PRICE_CLOSE,1,0)>iADXMQL4(name_symbol,Temporalidad,ADXPeriodo,PRICE_CLOSE,2,0)
            &&iADXMQL4(name_symbol,Temporalidad,ADXPeriodo,PRICE_CLOSE,2,1)>iADXMQL4(name_symbol,Temporalidad,ADXPeriodo,PRICE_CLOSE,1,1))
                    {
                     trade.PositionClose(ticket);
                     break;
                    }
                  if(TrailingStop>0)
                    {
                     if(PositionGetDouble(POSITION_PRICE_OPEN)-(SymbolInfoDouble(name_symbol,SYMBOL_ASK)+TakeP*_Point)>MyPoint*TrailingStop)
                       {
                        if(PositionGetDouble(POSITION_SL)>SymbolInfoDouble(name_symbol,SYMBOL_ASK)+MyPoint*TrailingStop)
                          {
                           trade.PositionModify(ticket,SymbolInfoDouble(name_symbol,SYMBOL_ASK)+MyPoint*TrailingStop,PositionGetDouble(POSITION_TP));
                           return;
                          }
                       }
                    }
                 }
              }
           }
        }
     }
   return;
  }
 
Carlos Ricardo Manrique Rojas:

Buenas espero que me puedan ayudar. Luego de mucho logre hacer funcionar el trailing stop en un multicurrency, en su mayoría gracias a 2 usuarios de la comunidad (David y Antonio).


Ahora presento otro problema, resulta que estoy intentando habilitar otro cierre aparte del trailing stop, este cierre lo estoy haciendo con el ADX, exactamente en el cruce de las Di para evitar cambios de tendencias.


El problema es que cuando agrego el cierre del ADX se me deshabilita el sistema de Trailing Stop, le he dado mil vueltas a la cabeza e intentado mil cosas pero no logro hacer funcionar ambos a la vez. Dejo el pedazo de código a ver si me pueden dar una mano.


El operador break finaliza la ejecución del interruptor externo anidado más cercano, while, do-while o for operator.

El control se pasa al operador que sigue al terminado. Uno de los propósitos de este operador es terminar la ejecución del bucle cuando se asigna un cierto valor a una variable.

 
Carlos Ricardo Manrique Rojas:

Buenas espero que me puedan ayudar. Luego de mucho logre hacer funcionar el trailing stop en un multicurrency, en su mayoría gracias a 2 usuarios de la comunidad (David y Antonio).


Ahora presento otro problema, resulta que estoy intentando habilitar otro cierre aparte del trailing stop, este cierre lo estoy haciendo con el ADX, exactamente en el cruce de las Di para evitar cambios de tendencias.


El problema es que cuando agrego el cierre del ADX se me deshabilita el sistema de Trailing Stop, le he dado mil vueltas a la cabeza e intentado mil cosas pero no logro hacer funcionar ambos a la vez. Dejo el pedazo de código a ver si me pueden dar una mano.


Pues no veas la suerte que tienes. Vaya por delante que el indicador ADX por sí solo no te dará buenas señales de entrada y salida ya que va con mucho retraso pero de eso ya se ha hablado en otros hilos.
Razón de la queja: