Estrategia de avance de oscilación de media móvil doble

El autor:¿ Qué pasa?, Fecha: 2023-11-27 17:44:49
Las etiquetas:

img

Resumen general

La estrategia de avance de oscilación de media móvil dual calcula dos promedios móviles de diferentes períodos para formar un canal y juzgar la tendencia oscilante de los precios.

Principio de la estrategia

Las principales etapas de esta estrategia son:

  1. Calcular dos promedios móviles, uno con un período más corto y otro con un período más largo.

  2. Se añade un ATR por encima y por debajo del MA más corto para formar un canal.

  3. Una señal de compra se genera cuando el precio rompe el canal hacia arriba. Una señal de venta se genera cuando el precio rompe el canal hacia abajo.

  4. Las señales comerciales válidas solo se generan cuando el avance a corto plazo se alinea con la dirección de la tendencia principal.

Al seguir estos pasos, esta estrategia captura puntos de avance en las tendencias oscilantes y evita señales falsas al referirse a la tendencia principal.

Análisis de ventajas

Las ventajas de esta estrategia:

  1. El canal de doble MA refleja el rango actual de oscilación de los precios.

  2. El parámetro ATR permite que el rango del canal realice un seguimiento de la volatilidad del mercado en tiempo real.

  3. El filtrado de tendencias generalizadas evita señales falsas en los mercados oscilantes.

  4. Las reglas son sencillas y fáciles de entender, adecuadas para aprender e investigar.

Análisis de riesgos

Los riesgos:

  1. Los avances fracasados pueden llevar a perder buenas oportunidades, que pueden mitigarse mediante la obtención de beneficios y la reentrada.

  2. El juicio de tendencia principal tiene un retraso de tiempo y no puede eliminar todas las señales falsas.

  3. El stop loss puede penetrar en mercados volátiles y puede ajustar el ATR dinámicamente.

Direcciones de optimización

Maneras de optimizar esta estrategia:

  1. Optimizar los parámetros de la MA para diferentes productos.

  2. Optimice el parámetro ATR para controlar mejor la volatilidad.

  3. Añadir filtros adicionales como indicadores de volumen y volatilidad para evitar aún más señales falsas.

  4. Utilice el aprendizaje automático para optimizar los parámetros automáticamente.

Conclusión

Esta estrategia de avance de oscilación de doble MA captura las tendencias oscilantes a través del canal de doble MA y el filtrado de la corriente principal. Con sus reglas simples y claras, es un excelente ejemplo para aprender estrategias comerciales de avance.


/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Anuj4912
//@version=4
strategy("Anuj4912", overlay=true)
res = input(title="Time Frame",  defval="120")
Factor=input(1, minval=1,maxval = 100)
Pd=input(1, minval=1,maxval = 100)

tp = input(500,title="Take Profit")
sl = input(400,title="Stop Loss")


Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
MUp=request.security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=request.security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))

Mclose=request.security(syminfo.tickerid,res,close)

TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn

MTrendUp=Mclose[1]>MTrendUp[1]? max(MUp,MTrendUp[1]) : MUp
MTrendDown=Mclose[1]<MTrendDown[1]? min(MDn,MTrendDown[1]) : MDn

Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown

MTrend = Mclose > MTrendDown[1] ? 1: Mclose< MTrendUp[1]? -1: nz(MTrend[1],1)
MTsl = MTrend==1? MTrendUp: MTrendDown

linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")

Mlinecolor = MTrend == 1 ? blue : orange
plot(MTsl, color = Mlinecolor , style = line , linewidth = 2,title = "Main SuperTrend")

plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)

up = Trend == 1 and Trend[1] == -1 and MTrend == 1 
down = Trend == -1 and Trend[1] == 1 and MTrend == -1 
plotarrow(up ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(down ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)


golong = Trend == 1 and Trend[1] == -1 and MTrend == 1 
goshort = Trend == -1 and Trend[1] == 1 and MTrend == -1 

strategy.entry("Buy", strategy.long,when=golong)
strategy.exit("Close Buy","Buy",profit=tp,loss=sl)
   
   
strategy.entry("Sell", strategy.short,when=goshort)
strategy.exit("Close Sell","Sell",profit=tp,loss=sl)



Más.