
Esta es una estrategia de negociación inversa basada en un doble indicador de media móvil. La estrategia determina la tendencia de los precios en función de su cambio de dirección mediante el cálculo de una media móvil de dos conjuntos de diferentes parámetros, y establece un parámetro de sensibilidad al cambio de dirección para generar una señal de negociación.
El indicador central de la estrategia es el doble promedio móvil. La estrategia permite elegir el tipo de promedio móvil (SMA, EMA, etc.), la longitud y la fuente de precios (precio de cierre, precio típico, etc.). Después de calcular los dos grupos de promedios móviles, se determina su dirección mediante la definición de un parámetro de reacción.
Además, la estrategia también establece la dirección del cambio y la determinación de las condiciones de subida / bajada continua, para evitar la generación de señales erróneas. Y muestra el estado de caída del precio con una visualización de diferentes colores. Cuando el precio continúa subiendo, la línea movavg se muestra en verde y cuando baja en rojo.
Esta estrategia de movvg doble, combinada con una línea rápida y lenta establecida con diferentes parámetros, puede filtrar eficazmente el ruido del mercado de operaciones de ondas y identificar tendencias más fuertes. En comparación con la estrategia de movvg simple, reduce las señales erróneas y puede entrar en juego cuando la tendencia es más clara, lo que genera una mayor probabilidad de victoria.
El parámetro de sensibilidad reaction permite a la estrategia la flexibilidad de adaptarse a diferentes ciclos y variedades. El proceso de la estrategia es intuitivo, sencillo de entender y de optimizar.
El mayor riesgo de esta estrategia es perder o invertir la posición al perder el punto de inflexión. Esto está relacionado con la configuración del parámetro de reacción. Si la reacción es demasiado pequeña, es fácil generar una señal errónea; si la reacción es demasiado grande, es posible que se pierda un buen punto de entrada.
Otro riesgo es la imposibilidad de controlar eficazmente las pérdidas. Cuando los precios fluctúan fuertemente, no se puede detener rápidamente, lo que provoca la expansión de las pérdidas. Esto requiere una estrategia de detención de pérdidas para controlar.
La dirección de optimización de esta estrategia se centra principalmente en la elección de los parámetros de reacción, el tipo y la duración de las medias móviles. La reacción se puede aumentar adecuadamente para reducir la señal errónea. Los parámetros de las medias móviles se pueden probar según diferentes períodos y variedades para seleccionar la combinación que produzca la señal óptima.
Además, la combinación de otros indicadores auxiliares como el RSI, KD, etc. para confirmar la señal de negociación también es una idea de optimización. O el uso de métodos de aprendizaje automático de parámetros de preferencia.
Esta estrategia es sencilla y práctica en su conjunto, puede identificar eficazmente el reverso de la tendencia a través de una doble filtración de media móvil y generar una señal de negociación. Es una estrategia típica de seguimiento de tendencias. Después de optimizar la combinación de parámetros, su capacidad de captura de avance y su capacidad de mantener posiciones contra el mercado se mejoran.
/*backtest
start: 2023-11-03 00:00:00
end: 2023-12-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(shorttitle="MA_color strategy", title="Moving Average Color", overlay=true)
// === INPUTS
ma_type = input(defval="HullMA", title="MA Type: ", options=["SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "ZEMA", "TMA", "SSMA"])
ma_len = input(defval=32, title="MA Lenght", minval=1)
ma_src = input(close, title="MA Source")
reaction = input(defval=2, title="MA Reaction", minval=1)
// SuperSmoother filter
// © 2013 John F. Ehlers
variant_supersmoother(src,len) =>
a1 = exp(-1.414*3.14159 / len)
b1 = 2*a1*cos(1.414*3.14159 / len)
c2 = b1
c3 = (-a1)*a1
c1 = 1 - c2 - c3
v9 = 0.0
v9 := c1*(src + nz(src[1])) / 2 + c2*nz(v9[1]) + c3*nz(v9[2])
v9
variant_smoothed(src,len) =>
v5 = 0.0
v5 := na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len
v5
variant_zerolagema(src,len) =>
ema1 = ema(src, len)
ema2 = ema(ema1, len)
v10 = ema1+(ema1-ema2)
v10
variant_doubleema(src,len) =>
v2 = ema(src, len)
v6 = 2 * v2 - ema(v2, len)
v6
variant_tripleema(src,len) =>
v2 = ema(src, len)
v7 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len)
v7
variant(type, src, len) =>
type=="EMA" ? ema(src,len) :
type=="WMA" ? wma(src,len):
type=="VWMA" ? vwma(src,len) :
type=="SMMA" ? variant_smoothed(src,len) :
type=="DEMA" ? variant_doubleema(src,len):
type=="TEMA" ? variant_tripleema(src,len):
type=="HullMA"? wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len))) :
type=="SSMA" ? variant_supersmoother(src,len) :
type=="ZEMA" ? variant_zerolagema(src,len) :
type=="TMA" ? sma(sma(src,len),len) : sma(src,len)
// === Moving Average
ma_series = variant(ma_type,ma_src,ma_len)
direction = 0
direction := rising(ma_series,reaction) ? 1 : falling(ma_series,reaction) ? -1 : nz(direction[1])
change_direction= change(direction,1)
change_direction1= change(direction,1)
pcol = direction>0 ? lime : direction<0 ? red : na
plot(ma_series, color=pcol,style=line,join=true,linewidth=3,transp=10,title="MA PLOT")
/////// Alerts ///////
alertcondition(change_direction,title="Change Direction MA",message="Change Direction MA")
longCondition = direction>0
shortCondition = direction<0
if (longCondition)
strategy.entry("BUY", strategy.long)
if (shortCondition)
strategy.entry("SELL", strategy.short)