Estrategia de reversión de cruce de medias móviles dobles


Fecha de creación: 2023-11-22 10:07:19 Última modificación: 2023-11-22 10:07:19
Copiar: 1 Número de Visitas: 605
1
Seguir
1617
Seguidores

Estrategia de reversión de cruce de medias móviles dobles

Descripción general

La idea principal de esta estrategia es utilizar el cruce de las medias de movimiento rápido y las medias de movimiento lento para juzgar la tendencia del mercado y entrar en juego cuando se produce una reversión de las medias de movimiento corto y largo, para lograr el efecto de seguir la tendencia.

Principio de estrategia

  1. Configuración de los períodos de promedio de movimiento rápido shortma ((7 días por defecto) y el período de promedio de movimiento lento longma ((77 días por defecto)
  2. Cuando la línea corta cruza la línea media por la línea larga se juzga como una señal de compra, registrada barssince(mabuy), la línea larga significa entrar en la tendencia; cuando la línea corta cruza la línea media por la línea larga se juzga como una señal de venta, registrada barssince(masell), la línea larga significa el final de la tendencia
  3. Comparando el tamaño de barssince, el mayor número de barras que la línea media corta cruza de arriba a abajo indica la mayor duración de la tendencia; al contrario, el mayor número de columnas que la línea media corta cruza de abajo a arriba indica la mayor fuerza de la señal de reversión
  4. Se emite una señal de compra cuando el número de barras de la señal de venta es mayor que el número de barras de la señal de compra; una señal de venta cuando el número de barras de la señal de compra es mayor que el número de barras de la señal de venta
  5. La estrategia such es esencialmente una estrategia de reversión de doble línea media, que determina el punto de inflexión de la tendencia a través de la reversión de la línea media rápida y la línea media lenta.

Ventajas estratégicas

  1. El uso de un juicio bidireccional para filtrar parte del ruido de las señales de transacción
  2. Aumentar la comparación de barssince para evitar falsas brechas y señales erróneas de reversión de precios de cierre
  3. Fácil de entender y hacer
  4. Parámetros de promedio móvil personalizables para diferentes períodos y mercados

Riesgo estratégico

  1. Las estrategias de doble línea son más propensas a generar más señales y a operar con más frecuencia.
  2. La configuración incorrecta de los parámetros de la media móvil puede perder oportunidades de tendencia más largas
  3. Cuando se rompe la línea media a largo plazo, el punto de parada puede estar muy lejos y hay una gran retirada
  4. No puede filtrar la espiral y la oscilación del mercado

Dirección de optimización de la estrategia

  1. Añadir filtros de otros indicadores para evitar quedar atrapados en situaciones de crisis
  2. Aumentar el mecanismo de suspensión de pérdidas
  3. Optimización de la combinación de parámetros de la línea media móvil
  4. Parámetros de la media móvil ajustados a la dinámica del ciclo del mercado

Resumir

La estrategia en general es lógica y fácil de entender, y los puntos de inflexión de la tendencia del mercado se juzgan a través de la línea media rápida y la línea media lenta invertida. En teoría, es capaz de seguir la tendencia de manera efectiva. Pero en la aplicación práctica, aún se necesita optimizar el algoritmo de la estrategia en sí y la configuración de los parámetros para que sea más estable y realista.

Código Fuente de la Estrategia
/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Up Down", "Up Down", precision = 6, pyramiding = 1, default_qty_type = strategy.percent_of_equity, default_qty_value = 99, commission_type = strategy.commission.percent, commission_value = 0.0, initial_capital = 1000, overlay = true)

buy = close > open and open > close[1]
sell = close < open and open < close[1]

longma = input(77,"Long MA Input")
shortma = input(7,"Short MA Input")
long = sma(close,longma)
short = sma(close, shortma)
mabuy = crossover(short,long) or buy and short > long
masell = crossunder(short,long) or sell and short > long

num_bars_buy = barssince(mabuy)
num_bars_sell = barssince(masell)
//plot(num_bars_buy, color = teal)
//plot(num_bars_sell, color = orange)

xbuy = crossover(num_bars_sell, num_bars_buy)
xsell = crossunder(num_bars_sell, num_bars_buy)
plotshape(xbuy,"Buy Up Arrow", shape.triangleup, location.belowbar, white, size = size.tiny)
plotshape(xsell,"Sell Down Arrow", shape.triangledown, location.abovebar, white, size = size.tiny)
plot(long,"Long MA", fuchsia, 2)

// Component Code Start
// Example usage:
// if testPeriod()
//   strategy.entry("LE", strategy.long)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(7, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

if testPeriod()
    strategy.entry("buy", true, when = xbuy, limit = close)
    strategy.close("buy", when = xsell)