
La estrategia utiliza un doble promedio móvil, un promedio móvil de 8 y un promedio móvil de 21 períodos respectivamente. Haga más cuando use un promedio móvil de largo plazo sobre un promedio móvil de corto plazo; y haga un hueco cuando use un promedio móvil de largo plazo debajo de un promedio móvil de corto plazo.
La estrategia también introdujo un indicador de inclinación de las medias móviles para filtrar los intervalos sin tendencia y generar señales de negociación solo cuando la tendencia es más evidente.
El núcleo de la estrategia está en la intersección de las medias móviles a corto plazo y las medias móviles a largo plazo. Las medias móviles a corto plazo capturan más rápidamente las tendencias de los cambios en los precios, mientras que las medias móviles a largo plazo tienen un mejor efecto de filtración del ruido.
La estrategia también establece un umbral de inclinación. La señal de multiplicación se genera solo cuando la inclinación es mayor que el umbral positivo, y la señal de vacío se genera solo cuando la inclinación es menor que el umbral negativo. Esto puede filtrar algunos intervalos sin una tendencia obvia, lo que hace que la calidad de la señal de negociación sea mayor.
En concreto, la lógica de generación de señales de transacción de la estrategia es la siguiente:
La estrategia tiene las siguientes ventajas:
La estrategia también tiene sus riesgos:
En cuanto a los riesgos, se puede optimizar en los siguientes aspectos:
La estrategia también puede ser optimizada en las siguientes direcciones:
La estrategia de la media móvil doble es sencilla y práctica en general, capta diferentes características de la tendencia a través de los parámetros de los dos períodos de los diffs y se fusiona para generar señales de negociación. Al mismo tiempo, la introducción de un umbral de inclinación mejora la calidad de la señal. La estrategia puede usarse como estrategia básica y ampliarse, con mucho espacio para optimización y extensión.
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//written by sixpathssenin
//@version=4
strategy(title="Dual Moving Average",initial_capital=10000,overlay=true)
ma1= sma(close,8)
ma2= sma(close,21)
angleCriteria = input(title="Angle", type=input.integer, defval=7, minval=1, maxval=13)
i_lookback = input(2, "Angle Period", input.integer, minval = 1)
i_atrPeriod = input(10, "ATR Period", input.integer, minval = 1)
i_angleLevel = input(6, "Angle Level", input.integer, minval = 1)
i_maSource = input(close, "MA Source", input.source)
f_angle(_src, _lookback, _atrPeriod) =>
rad2degree = 180 / 3.141592653589793238462643 //pi
ang = rad2degree * atan((_src[0] - _src[_lookback]) / atr(_atrPeriod)/_lookback)
ang
_angle = f_angle(ma2, i_lookback, i_atrPeriod)
plot(ma1,color=#FF0000)
plot(ma2,color=#00FF00)
crosso=crossover(ma1,ma2)
crossu=crossunder(ma1,ma2)
_lookback = 15
f_somethingHappened(_cond, _lookback) =>
bool _crossed = false
for i = 1 to _lookback
if _cond[i]
_crossed := true
_crossed
longcrossed = f_somethingHappened(crosso,_lookback)
shortcrossed = f_somethingHappened(crossu,_lookback)
long = longcrossed and _angle > angleCriteria
short= shortcrossed and _angle < -(angleCriteria)
if(long)
strategy.entry("Long",strategy.long)
if(short)
strategy.entry("short",strategy.short)