Esta estrategia combina el doble cruce de la media móvil y el oscilador estocástico para identificar oportunidades de inversión de tendencia para una operación eficiente a corto plazo.
La estrategia se basa en la combinación de doble cruce de media móvil y oscilador estocástico.
El cruce de la media móvil doble consiste en una media móvil rápida, una media móvil lenta y una media móvil ultra lenta. Cuando el MA rápido cruza por encima del MA lento, es una señal de compra. Cuando el MA rápido cruza por debajo del MA lento, es una señal de venta. El cruce de la MA doble puede identificar puntos de inversión de tendencia a mediano plazo.
El oscilador estocástico contiene los valores %K y %D. %K muestra donde el cierre actual es relativo a los precios más altos y más bajos de los últimos N días. %D es el promedio móvil simple de M-day de %K. Los valores superiores a 80 significan niveles de sobrecompra y los valores inferiores a 20 significan niveles de sobreventa. El oscilador estocástico puede identificar zonas de sobrecompra / sobreventa a corto plazo.
Esta estrategia combina el cruce de doble MA y el oscilador estocástico. Busca señales de reversión de tendencia del cruce de doble MA cuando el estocástico muestra niveles de sobrecompra / sobreventa.
Las ventajas de esta estrategia:
Combinar el cruce de doble MA y el oscilador estocástico para identificar inversiones de tendencia a mediano y corto plazo.
El uso de señales estocásticas de sobrecompra/sobreventa para seleccionar operaciones de inversión cruzada de doble MA más eficaces.
Reglas comerciales claras y fáciles de aplicar.
Parámetros ajustables de tiempo y mes de negociación adecuados para diferentes productos y períodos de tiempo.
Detener las pérdidas para controlar los riesgos.
Los riesgos de esta estrategia:
El doble MA puede tener breakouts falsos. El estocástico puede tener divergencias bull/bear inválidas, lo que conduce a señales comerciales incorrectas. Ajuste fino de parámetros o agregue otros indicadores para la confirmación de combos.
Basado únicamente en indicadores técnicos sin tener en cuenta los fundamentos. Puede fallar en eventos económicos importantes. Añadir control de riesgo de eventos económicos.
Difícil de determinar el momento exacto de la reversión de MA, puede tener problemas de paradas demasiado estrechas o demasiado anchas.
Optimiza los parámetros para diferentes productos y marcos de tiempo mediante backtesting.
Sólo es adecuado para operaciones a corto plazo, no para tenencias a largo plazo.
La estrategia se puede optimizar en varios aspectos:
Prueba más combinaciones de indicadores como KDJ, MACD, etc. para mejorar la validez de la señal.
Añadir análisis de volumen de operaciones para evitar falsos breakouts.
Optimizar los parámetros de doble MA para identificar puntos de inversión más precisos.
Optimice la estrategia de stop loss para reducir la posibilidad de ser detenido.
Añadir módulos de control de riesgos de eventos económicos para evitar los impactos de eventos importantes.
Utilice técnicas de aprendizaje automático para optimizar automáticamente los parámetros para una mejor adaptabilidad.
Prueba de retroceso en más productos y plazos para encontrar las mejores aplicaciones.
Esta estrategia opera en puntos de inversión de tendencia a mediano plazo identificados por el cruce de doble MA y las divergencias estocásticas toro/oso. En comparación con el uso de un solo indicador, puede mejorar la rentabilidad comercial con reglas claras. Pero también tiene riesgos que requieren optimización de parámetros y stop loss, y más filtros y controles de riesgos. En general, es una estrategia de negociación a corto plazo confiable y de frecuencia media.
/*backtest start: 2022-10-26 00:00:00 end: 2023-10-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="Intraday Stochiastic Strategy", shorttitle="Intraday Stochiastic Strategy", overlay=true, initial_capital = 1000) //WORKS FOR BTCUSD M30 //OBVERVED GOOD PERFORMANCES FOR SELL MODE M15 : US30USD / UK100GBP / JP225USD / SPX500USD / BCOUSD / EURGBP //Best Forex Hours are 7-21 //0 is Long Position //1 is Short Position //2 No position mode=input(1, maxval=2, title="Mode") lossLimit=input(10000, maxval=10000, title="Loss Limit") hourStart=input(2, maxval=24, title="Hour Start") hourStop=input(13, maxval=24, title="Hour Stop") //Month selected for back testing. 0 is maximum number of months monthSelected = input(0, maxval=12, title="Month Selected") ///////////////////////////////////////////////// fast = 20, slow = 50, ultraSlow = 200 fastMA = sma(close, fast) slowMA = sma(close, slow) ultraSlowMA = sma(close, ultraSlow) colorFast = red colorSlow = black colorUltraSlowMA = purple if(timeframe.period == "1" or timeframe.period == "3" or timeframe.period == "5" or timeframe.period == "15" or timeframe.period == "30" or timeframe.period == "45" or timeframe.period == "60" or timeframe.period == "120" or timeframe.period == "180" or timeframe.period == "240") fastMA := ema(close, fast) slowMA := ema(close, slow) ultraSlowMA := ema(close, ultraSlow) colorFast := orange colorSlow := gray colorUltraSlowMA := blue p1 = plot(fastMA, color=colorFast) p2 = plot(slowMA, color=colorSlow, linewidth=2) p3 = plot(ultraSlowMA, color=colorUltraSlowMA, linewidth=3) fill(p1, p2, color = fastMA > slowMA ? green : red) //////////////////////////////////////////////// ema150 = 200 ema150MA = ema(close, ema150) smooth = input(3, minval=1), K = input(14, minval=1), D=input(3,minval=1) hh=highest(high,K) ll=lowest(low,K) k = sma((close-ll)/(hh-ll)*100, smooth) d = sma(k, 3) //plot(k, color=blue) //plot(d, color=red) //h0 = hline(80) //h1 = hline(20) //fill(h0, h1, color=purple, transp=95) //plot(hour*100, color=red, linewidth=2) stochiasticHigh = 80 stochiasticLow = 20 data = close < ema150MA and k>stochiasticHigh and d>stochiasticHigh and close>open plotshape(data, style=shape.triangledown, location=location.belowbar, color=red) data2 = close > ema150MA and k<stochiasticLow and d<stochiasticLow and close<open plotshape(data2, style=shape.triangleup, location=location.abovebar, color=green) isData = 0 isData := isData[1] if(isData == 0) if(data) if(mode==1 and hour>hourStart and hour<hourStop and (monthSelected==0 or month==monthSelected)) //DOW hours : 2-13 strategy.entry("SCALP SHORT", strategy.short) isData := 1 else if(k<stochiasticLow and d<stochiasticLow) if(mode==1) strategy.close_all(when = true) isData := 0 isData2 = 0 isData2 := isData2[1] if(isData2 == 0) if(data2) if(mode==0 and hour>hourStart and hour<hourStop and (monthSelected==0 or month==monthSelected)) strategy.entry("SCALP LONG", strategy.long) isData2 := 1 else if(k>stochiasticHigh and d>stochiasticHigh) if(mode==0) strategy.close_all(when = true) isData2 := 0 strategy.exit("STOP LOSS", "SCALP LONG", loss=lossLimit) strategy.exit("STOP LOSS", "SCALP SHORT", loss=lossLimit)