Estrategia de media móvil dinámica multiperiodo


Fecha de creación: 2023-10-27 16:07:16 Última modificación: 2023-10-27 16:07:16
Copiar: 1 Número de Visitas: 647
1
Seguir
1617
Seguidores

Estrategia de media móvil dinámica multiperiodo

Esta estrategia permite la generación de señales de negociación mediante la selección dinámica de diferentes tipos de promedios móviles y su combinación con varios períodos de tiempo.

Principio de estrategia

La estrategia permite elegir cinco indicadores de media móvil: SMA, EMA, TEMA, WMA, HMA, y establecer la duración del período de la línea media. La estrategia traza diferentes tipos de líneas medias según la dinámica elegida. Haga más cuando el precio de cierre sube por encima de la línea media; y haga un descuento cuando el precio de cierre baja por encima de la línea media.

En concreto, la estrategia primero define el ciclo de retraso en función de los parámetros de entrada. Luego se calculan los cinco indicadores medios:

  • El SMA es el promedio móvil simple.
  • Las medias móviles de la EMA
  • TEMA promedio móvil de tres índices
  • Medias móviles ponderadas de la WMA
  • HMA Hull promedio móvil

De acuerdo con la elección, trazar la línea media correspondiente. Cuando el precio de cierre sea superior a la línea media, hacer más; Cuando el precio de cierre sea inferior a la línea media, hacer un vacío.

La estrategia utiliza diferentes tipos de líneas medias en combinación para suavizar los datos de precios, filtrar el ruido del mercado y generar una señal de negociación más confiable. La estrategia permite la personalización de la longitud del ciclo de la línea mediana, que se puede negociar en función de las tendencias de los diferentes períodos.

Ventajas estratégicas

  • Combinación de varios indicadores de línea media, con una mayor fiabilidad
  • Período medíocre personalizable para diferentes operaciones de ciclo
  • Tipo de línea media de conmutación dinámica, parámetros de optimización flexibles
  • Estrategias de seguimiento de tendencias simples e intuitivas, fáciles de implementar

Riesgo estratégico

  • La línea media se retrasa y puede perder el punto de inflexión de la tendencia
  • Los parámetros fijos se ajustan fácilmente, y el efecto del disco duro puede ser más débil que el retroceso
  • En la fase de varios jefes, se puede hacer más activamente, y en la fase de los jefes vacíos, se puede hacer menos activamente, lo que puede afectar la eficiencia en el uso de los fondos.

El riesgo puede reducirse optimizando:

  • En combinación con otros indicadores para determinar las tendencias, determinar el momento de ingreso más preciso
  • Parámetros de optimización de disco duro, ajuste del ciclo de la línea media para adaptarse a diferentes entornos de mercado
  • Optimizar la gestión de las posiciones, ajustando las posiciones de acuerdo con el tamaño de los fondos y el control del riesgo

Dirección de optimización

La estrategia puede ser optimizada en las siguientes direcciones:

  1. Se añaden filtros de otros indicadores para una señal de negociación más estable

Por ejemplo, se puede agregar un indicador de capacidad de volumen, que genera señales de transacción solo en caso de que el volumen de transacción sea mayor, para filtrar algunos brechas falsas.

  1. Optimización de la lógica de entrada y salida

Se puede establecer un canal, que se abre solo cuando el precio rompe el canal; se puede establecer una línea de parada, que se cierra después de que el precio toque la línea de parada. Esto reduce las pérdidas innecesarias.

  1. Dinámica de ajuste al ciclo de la media

Se puede ajustar el ciclo de la media en función de la dinámica de la situación del mercado, usar la media de largo período cuando la tendencia es más evidente, y usar la media de corto período cuando se recoge.

  1. Optimización de las estrategias de gestión de fondos

Se puede ajustar el tamaño de la posición en función de la situación de retirada, reducir la posición en la retirada y aumentar la posición moderadamente cuando se gana.

Resumir

La estrategia utiliza una combinación de varios indicadores de línea media, combinados con varios períodos de tiempo, para formar un efecto de seguimiento de tendencias más estable. El espacio de optimización de la estrategia es grande, y se puede mejorar desde el filtro de entrada, salida, optimización de parámetros, etc., para que la estrategia obtenga mejores resultados en el disco.

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

//@version=3
strategy("MA_strategy ", shorttitle="MA_strategy", overlay=true, initial_capital=100000)

qty = input(100000000, "Buy quantity")

testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")

testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,testStartMin)

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


testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false


ma1 = input( "SMA",title="Select MA", options=["SMA", "EMA","TEMA", "WMA","HMA"])


len1 = input(7, minval=1, title="Period")

s=sma(close,len1)

e=ema(close,len1)


xEMA1 = ema(close, len1)
xEMA2 = ema(xEMA1, len1)
xEMA3 = ema(xEMA2, len1)
t = 3 * xEMA1 - 3 * xEMA2 + xEMA3


f_hma(_src, _length)=>
    _return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))

h = f_hma(close, len1)

w = wma(close, len1)

ma = ma1 == "SMA"?s:ma1=="EMA"?e:ma1=="WMA"?w:ma1=="HMA"?h:ma1=="TEMA"?t:na

buy= close>ma
sell= close<ma

alertcondition(buy, title='buy', message='buy')
alertcondition(sell, title='sell', message='sell')

ordersize=floor(strategy.equity/close)

if testPeriod()
    strategy.entry("long",strategy.long,ordersize,when=buy)
    strategy.close("long", when = sell )