
La estrategia utiliza el cruce de dos medias móviles como una señal de negociación, en combinación con el ATR para realizar operaciones de seguimiento de tendencias. La idea central es hacer más cuando se atraviesa la media móvil a corto plazo y hacer un espacio cuando se atraviesa la media móvil a largo plazo, mientras se utiliza el ATR para establecer paradas de pérdida y paradas de seguimiento dinámico.
La estrategia se basa en dos grupos de medias móviles para determinar la dirección de la tendencia. Las medias móviles rápidas tienen una duración de 25 días y las medias móviles lentas tienen una duración de 100 días.
Para filtrar algunas señales falsas, la estrategia añade un contador de cruces crossCount. La señal se activa solo si el promedio móvil rápido tiene menos cruces que maxNoCross durante el período de lookback (por defecto 25 días) (por defecto 10 veces).
Además, la estrategia añade un mecanismo de confirmación, es decir, que la señal se confirma si el precio vuelve a entrar entre dos medias móviles después de la emisión de la señal inicial.
Después de la entrada, la estrategia utiliza el indicador ATR para establecer la distancia de parada. El ATR mide el rango de fluctuación de los precios en el último período determinado, donde se utiliza 14 veces el ATR para establecer la distancia de parada. La línea de parada se mantiene flotando con el movimiento de los precios.
La estrategia tiene las siguientes ventajas:
El uso de medias móviles dobles en combinación con un mecanismo de filtración cruzada puede filtrar eficazmente las señales falsas y capturar tendencias más fuertes.
El gobierno de la República Democrática del Congo (RDC) ha anunciado el inicio de una nueva fase de la operación de rescate de refugiados.
El uso de un ATR flotante para rastrear los pérdidas permite asegurar el máximo de ganancias y evitar una retirada excesiva.
La optimización de los parámetros es más sencilla y fácil de aplicar.
Puede aplicarse en una variedad de mercados, incluyendo monedas digitales y mercados básicos tradicionales.
La integración de varios indicadores para la construcción de la estrategia hace que la estrategia sea más sólida.
El principal riesgo de esta estrategia es:
En la fase de ajuste de la oscilación, las medias móviles se cruzan con frecuencia y pueden causar pérdidas múltiples.
La configuración incorrecta de los parámetros de ATR puede causar un frenado demasiado relajado o demasiado apretado.
Un salto muy alto o un Gap pueden desencadenar directamente el stop loss.
Los eventos de gran magnitud que causan grandes fluctuaciones en los precios también pueden causar pérdidas directas.
Los parámetros de media móvil no razonables pueden causar tendencias perdidas o generar demasiadas señales falsas.
Los cambios recientes en el rango de fluctuación de los precios pueden causar que el ATR no se adapte a la distancia de pérdida.
La estrategia puede ser optimizada en los siguientes aspectos:
Optimiza los parámetros de las medias móviles para encontrar la combinación más adecuada. Puede probar diferentes parámetros de periodicidad y medias móviles ponderadas.
Prueba diferentes parámetros de ciclo ATR para encontrar la mejor distancia de pérdida.
Añadir condiciones de filtración adicionales, como aumento de volumen de transacciones, indicadores de oscilación, etc., para mejorar la calidad de la señal.
En este caso, el indicador de tendencia se utiliza para evaluar la situación y evitar que la economía se vea afectada por el impacto de la crisis.
Aumentar el algoritmo de aprendizaje automático para optimizar automáticamente el conjunto de parámetros a través del entrenamiento de datos históricos.
Busque más confirmaciones en los gráficos de gran escala y evite ser engañado por el ruido de las líneas cortas.
Establecer las reglas de reducción de la posición de ganancias y bloquear las ganancias gradualmente.
Esta estrategia integra el uso de múltiples indicadores técnicos, como el cruce de medias móviles dobles, filtración de tendencias, mecanismos de confirmación y paradas dinámicas ATR. Hay espacio para mejorar en la optimización de los parámetros y el control de riesgos, pero su idea de negociación es simple y clara, fácil de implementar y copiar, es una estrategia de seguimiento de tendencias más sólida.
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("QuantCat Intraday Strategy (15M)", overlay=true)
//MA's for basic signals, can experiment with these values
fastEMA = sma(close, 25)
slowEMA = sma(close, 100)
//Parameters for validation of position
lookback_value = 25
maxNoCross=10 //value used for maximum number of crosses on a certain MA to mitigate noise and maximise value from trending markets
//Amount of crosses on MA to filter out noise
ema25_crossover = (cross(close, fastEMA)) == true ? 1 : 0
ema25_crossover_sum = sum(ema25_crossover, lookback_value) ///potentially change lookback value to alter results
crossCount = (ema25_crossover_sum <= maxNoCross)
//Entries long
agrLong = ((crossover(fastEMA, slowEMA)) and (crossCount == true)) ? true : false
consLong = ((close < fastEMA) and (close > slowEMA) and (fastEMA > slowEMA) and (crossCount == true)) ? true : false
//Entries short
agrShort = ((crossunder(fastEMA, slowEMA)) and (crossCount == true)) ? true : false
consShort = ((close > fastEMA) and (close < slowEMA) and (fastEMA < slowEMA) and (crossCount == true)) ? true : false
//ATR
atrLkb = input(14, minval=1, title='ATR Stop Period')
atrRes = input("15", title='ATR Resolution')
atr = request.security(syminfo.tickerid, atrRes, atr(atrLkb))
//Strategy
longCondition = ((agrLong or consLong) == true)
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = ((agrShort or consShort) == true)
if (shortCondition)
strategy.entry("Short", strategy.short)
//Stop multiplier
stopMult = 4
//horizontal stoplosses
longStop = na
longStop := shortCondition ? na : longCondition and strategy.position_size <=0 ? close - (atr * stopMult) : longStop[1]
shortStop = na
shortStop := longCondition ? na : shortCondition and strategy.position_size >=0 ? close + (atr * stopMult) : shortStop[1]
//Strategy exit functions
strategy.exit("Long ATR Stop", "Long", stop=longStop)
strategy.exit("Short ATR Stop", "Short", stop=shortStop)
//Plots
redgreen = (fastEMA > slowEMA) ? green : red
p1 = plot(fastEMA, title="Fast EMA", color=redgreen, linewidth=2)
p2 = plot(slowEMA, title="Slow EMA", color=redgreen, linewidth=2)
fill(p1, p2, color=redgreen)
s1 = plot(longStop, style=linebr, color=red, linewidth=2, title='Long ATR Stop')
s2 = plot(shortStop, style=linebr, color=red, linewidth=2, title='Short ATR Stop')
fill(p2, s1, color=red, transp=95)
fill(p2, s2, color=red, transp=95)