La Estrategia de cruce estocástico de múltiples plazos es una estrategia típica de seguimiento de tendencias. Calcula los valores de desviación estándar en diferentes plazos (por ejemplo, diarios, semanales, mensuales, etc.), construye múltiples líneas K y D, toma el promedio de estas líneas para construir promedios móviles, y va largo cuando la línea rápida cruza por encima de la línea lenta y corta cuando la línea rápida cruza por debajo de la línea lenta. Al combinar líneas de desviación estándar en múltiples plazos, esta estrategia puede filtrar eficazmente el ruido del mercado y capturar la tendencia predominante.
La lógica central de esta estrategia es calcular la desviación estándar en múltiples marcos de tiempo y luego tomar el promedio para generar señales comerciales.
En primer lugar, la estrategia calcula los valores de K de la desviación estándar bajo diferentes parámetros en 5 grupos, correspondientes a plazos diarios, semanales y mensuales:
smoothK = input(55)
SMAsmoothK = input(13)
k = sma(stoch(price, high, low, smoothK), SMAsmoothK)
smoothK1 = input(89)
SMAsmoothK1 = input(8)
k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1)
...
smoothK4 = input(377)
SMAsmoothK4 = input(2)
k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4)
Luego calcula D líneas con diferentes parámetros respectivamente:
smoothD = input(34)
d = sma(k, smoothD)
...
smoothD4 = input(233)
d4 = sma(k4, smoothD4)
A continuación, calcula el promedio de las líneas K y D para obtener la línea rápida Kavg y la línea lenta Davg:
Kavg = avg(k,k1,k2,k3,k4)
Davg = avg(d,d1,d2,d3,d4)
Por último, es largo cuando Kavg cruza por encima de Davg, y es corto cuando Kavg cruza por debajo de Davg:
long = crossover(Kavg, Davg)
short = crossunder(Kavg, Davg)
Al combinar líneas de desviación estándar en múltiples marcos de tiempo, esta estrategia puede filtrar el ruido del mercado en marcos de tiempo más grandes y capturar la dirección de tendencia predominante.
Soluciones:
Añadir filtros para evitar señales de fuga falsas
Utilizar períodos de adaptación basados en la volatilidad del mercado
Emplear paradas de seguimiento para salir de las operaciones a tiempo
Optimizar los períodos de media móvil para obtener el mejor equilibrio
Incorporar más indicadores para mejorar la robustez
Esta estrategia puede mejorarse aún más en los siguientes ámbitos:
Incorporar otras señales de indicadores como MACD, Bandas de Bollinger para mejorar la calidad de la señal
Añadir filtros de tendencia como dirección SMA, ADX para evitar operaciones contra tendencia
Utilizar períodos de adaptación basados en la volatilidad del mercado
Implementar paradas de seguimiento basadas en parámetros de estrategia para salir de las operaciones
Optimizar los períodos de media móvil rápida y lenta para obtener los mejores parámetros
Añadir filtros de entrada para evitar señales falsas de ruido a corto plazo
Entrada de ruptura del ensayo después del cruce de medias móviles
Evaluar diferentes estrategias de salida como la salida de la lámpara para optimizar las salidas
La Estrategia de Cruce Estocástico Multiframe combina la capacidad de seguimiento de tendencia del indicador estocástico y la estabilidad de las estrategias de promedio móvil. Al tomar el promedio de las líneas de desviación estándar K y D de varios períodos para generar señales, utiliza eficazmente el poder predictivo de la desviación estándar en diferentes marcos de tiempo, filtra el ruido del mercado y captura la tendencia predominante.
/*backtest start: 2023-09-23 00:00:00 end: 2023-10-23 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title="Slow Stochastic Multi K&D Average Crossover Strategy", overlay=false, pyramiding=0, calc_on_order_fills=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100) price = input(close) /////////////////////////////// smoothK = input(55) SMAsmoothK = input(13) k = sma(stoch(price, high, low, smoothK), SMAsmoothK) smoothD = input(34) d = sma(k, smoothD) /////////////////////////// smoothK1 = input(89) SMAsmoothK1 = input(8) k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1) smoothD1 = input(55) d1 = sma(k1, smoothD1) ////////////////////////////////////// smoothK2 = input(144) SMAsmoothK2 = input(5) k2 = sma(stoch(price, high, low, smoothK2), SMAsmoothK2) smoothD2 = input(89) d2 = sma(k2, smoothD2) ///////////////////////////////////// smoothK3 = input(233) SMAsmoothK3 = input(3) k3 = sma(stoch(price, high, low, smoothK3), SMAsmoothK3) smoothD3 = input(144) d3 = sma(k3, smoothD3) //////////////////////////////////////////////// smoothK4 = input(377) SMAsmoothK4 = input(2) k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4) smoothD4 = input(233) d4 = sma(k4, smoothD4) ///////////////////////////////////////////////// Kavg = avg(k,k1,k2,k3,k4, k4) plot(Kavg, color=green) Davg = avg(d,d1,d2,d3,d4, d4) plot(Davg, color=red) /////////////////////////////////////// hline(50, color=gray) long = crossover(Kavg, Davg)// and d < 50 short = crossunder(Kavg, Davg)// and d > 50 last_long = long ? time : nz(last_long[1]) last_short = short ? time : nz(last_short[1]) long_signal = crossover(last_long, last_short) short_signal = crossover(last_short, last_long) strategy.entry("Long", strategy.long, when=long_signal) strategy.entry("Short", strategy.short, when=short_signal) //len1 = input(3) //closelong = d[1] < k[len1] //closeshort = d[1] > k[len1] //strategy.close("Long", when=closelong) //strategy.close("Short", when=closeshort)