Estrategia de ruptura de tendencia de doble MA


Fecha de creación: 2024-01-08 16:43:38 Última modificación: 2024-01-08 16:43:38
Copiar: 0 Número de Visitas: 653
1
Seguir
1617
Seguidores

Estrategia de ruptura de tendencia de doble MA

Descripción general

La estrategia de ruptura de la tendencia de la MA doble es una estrategia de comercio cuantitativa que utiliza las medias móviles de dos períodos diferentes para determinar la tendencia y la entrada. La estrategia se basa en determinar la dirección de la tendencia general a través de la MA lenta y filtrar la entrada a través de la MA rápida.

Principio de estrategia

La estrategia se compone principalmente de las siguientes partes:

En cuanto a las tendencias:Al calcular el MA de 21 ciclos, definido como el MA lento, su posición es más estable y se puede usar para determinar la dirección de la tendencia general. Cuando el precio sube, se aproxima al MA como tendencia alcista, y cuando el precio baja, se acerca al MA como tendencia bajista.

El filtro de entrada es:Calcula el MA de 5 ciclos, definido como el MA rápido. La señal de negociación se produce solo cuando el precio rompe el MA lento y rompe el MA rápido al mismo tiempo. Este diseño es principalmente para filtrar la posibilidad de una falsa ruptura adicional.

El filtro de línea K:La estrategia solo hace más cuando la línea K del ciclo es negativa, o cuando la línea K del ciclo es positiva. Esto se considera teniendo en cuenta que la entrada en la línea K inversa tiene una mayor tasa de éxito. Al mismo tiempo, se combina con el indicador RSI rápido para evitar entrar en zonas de sobrecompra o sobreventa excesivas.

El filtro de acumulación:En el caso de las criptomonedas, la estrategia añade un requisito adicional de alza de la brecha de la oscilación de tres veces, para filtrar la oportunidad de una caída excesiva en el proceso de caída a gran escala.

Diseño para detener el daño:La estrategia soporta un stop-loss móvil. Una vez abierta la posición, el stop-loss se actualiza en tiempo real según el porcentaje de stop-loss establecido.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. El diseño de doble MA es sencillo, práctico y fácil de entender y dominar.
    1. El uso de filtros de combinación de MA de forma rápida y fiable para determinar tendencias;
  2. La entrada de la línea K invertida aumenta la probabilidad de éxito de la operación.
  3. La metodología global es robusta y adecuada para todos los niveles de transacción.
  4. El objetivo de este proyecto es mejorar la calidad de vida de las personas con discapacidad.
  5. Tenga en cuenta especialmente las características del mercado de criptomonedas, y agregue la oportunidad de aumentar la posición por encima de la caída, para obtener ganancias adicionales.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. En las oscilaciones de los MA dobles, se producen pequeñas pérdidas en varias ocasiones.
  2. La entrada en la línea K inversa puede ocurrir en ciertos niveles cuando la tasa de victoria no es alta.
  3. El mercado de las criptomonedas es muy volátil y hay una alta probabilidad de que se produzca un stop loss.
  4. La posibilidad de subir y bajar es escasa, y la volatilidad de las ganancias es alta.

Los riesgos pueden ser optimizados en los siguientes aspectos:

  1. El aumento de las condiciones de ingreso para evitar la invalidez de los temblores;
  2. Ajustar el ciclo de la línea K o añadir filtros de otros indicadores;
  3. Optimización de los algoritmos de parada de pérdidas para rastrear la parada de pérdidas cerca del eje central;
  4. Evaluación de la efectividad de las estrategias de subida y bajada.

Dirección de optimización

La estrategia se puede optimizar principalmente en los siguientes aspectos:

  1. Optimización de parámetros: Optimización de la combinación de parámetros de ciclo de la MA rápida y lenta a través de una retroalimentación más sistemática, para mejorar la relación de riesgo-beneficio general.

  2. Reconocimiento de patronesAumentar otros indicadores como KDJ, MACD y otros para identificar señales de reversión más fiables.

  3. Optimización de pérdidasDesarrollo de algoritmos para la detección de pérdidas y el seguimiento de las pérdidas para reducir la probabilidad de que se produzcan.

  4. Aprendizaje automáticoEn la actualidad, el sistema de monitoreo automático de las transacciones en el mercado de divisas en el Reino Unido utiliza el método de aprendizaje automático para generar reglas de transacciones.

  5. Cambios cuantitativos en las posicionesLa estrategia de gestión de posiciones se ajusta automáticamente según la situación del mercado.

Resumir

La estrategia de ruptura de tendencia de doble MA es una estrategia de seguimiento de tendencias más sencilla y práctica en general. La estrategia es más fácil de interpretar y dominar que los algoritmos de aprendizaje de máquina complejos, y tiene una mayor fiabilidad. Con la optimización de parámetros, la extensión de funciones y la introducción de aprendizaje de máquina, la estrategia tiene un gran potencial de mejora y es un buen punto de partida para el comercio cuantitativo.

Código Fuente de la Estrategia
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-07 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs Strategy v2.0 +CB", shorttitle = "Trend MAs str 2.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
useohlc4 = input(false, defval = false, title = "Use OHLC4")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needarr = input(false, defval = false, title = "Need entry arrows?")
needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)")

src = useohlc4 == true ? ohlc4 : close

//PriceChannel 1
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2

//PriceChannel 2
lasthigh2 = highest(src, fastlen)
lastlow2 = lowest(src, fastlen)
center2 = (lasthigh2 + lastlow2) / 2

//Trend
trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend[1]

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0

//Fast RSI
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//CryptoBottom
mac = sma(close, 10)
len = abs(close - mac)
sma = sma(len, 100)
max = max(open, close)
min = min(open, close)
up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0

//Signals
up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0
dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0

up2 = high < center and high < center2 and bar == -1 ? 1 : 0
dn2 = low > center and low > center2 and bar == 1 ? 0 : 0

//Lines
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")
plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2")

//Arrows
plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0)
plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0)

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//Alerts
alertcondition(up == 1, title='buy', message='Uptrend')
alertcondition(dn == 1, title='sell', message='Downtrend')

//Trading
stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]

longCondition = up == 1 or (up2 == 1 and needex == true) or up3 == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
    strategy.exit("Stop Long", "Long", stop = stoplong)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    strategy.exit("Stop Short", "Short", stop = stopshort)