Oscilador estocástico intradiario con estrategia de cruce de media móvil doble

El autor:¿ Qué pasa?, Fecha: 2023-10-27 17:00:04
Las etiquetas:

img

Resumen general

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.

Estrategia lógica

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.

Análisis de ventajas

Las ventajas de esta estrategia:

  1. Combinar el cruce de doble MA y el oscilador estocástico para identificar inversiones de tendencia a mediano y corto plazo.

  2. El uso de señales estocásticas de sobrecompra/sobreventa para seleccionar operaciones de inversión cruzada de doble MA más eficaces.

  3. Reglas comerciales claras y fáciles de aplicar.

  4. Parámetros ajustables de tiempo y mes de negociación adecuados para diferentes productos y períodos de tiempo.

  5. Detener las pérdidas para controlar los riesgos.

Análisis de riesgos

Los riesgos de esta estrategia:

  1. 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.

  2. 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.

  3. Difícil de determinar el momento exacto de la reversión de MA, puede tener problemas de paradas demasiado estrechas o demasiado anchas.

  4. Optimiza los parámetros para diferentes productos y marcos de tiempo mediante backtesting.

  5. Sólo es adecuado para operaciones a corto plazo, no para tenencias a largo plazo.

Direcciones de optimización

La estrategia se puede optimizar en varios aspectos:

  1. Prueba más combinaciones de indicadores como KDJ, MACD, etc. para mejorar la validez de la señal.

  2. Añadir análisis de volumen de operaciones para evitar falsos breakouts.

  3. Optimizar los parámetros de doble MA para identificar puntos de inversión más precisos.

  4. Optimice la estrategia de stop loss para reducir la posibilidad de ser detenido.

  5. Añadir módulos de control de riesgos de eventos económicos para evitar los impactos de eventos importantes.

  6. Utilice técnicas de aprendizaje automático para optimizar automáticamente los parámetros para una mejor adaptabilidad.

  7. Prueba de retroceso en más productos y plazos para encontrar las mejores aplicaciones.

Conclusión

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) 

Más.