Estrategia de ciclo de tendencia de Schaff con seguimiento del impulso


Fecha de creación: 2023-11-01 16:08:35 Última modificación: 2023-11-01 16:08:35
Copiar: 2 Número de Visitas: 855
1
Seguir
1617
Seguidores

Estrategia de ciclo de tendencia de Schaff con seguimiento del impulso

Descripción general

Esta estrategia se basa en el indicador de ciclo de tendencias de Schaff, combinado con el principio de sobreventa y sobreventa de Stoch RSI, para determinar y seguir la tendencia a través del indicador de dinámica. Haga más cuando el precio se rompe de la zona de sobreventa a la zona de sobreventa; Haga vacío cuando el precio se rompe de la zona de sobreventa a la zona de sobreventa.

Principio de estrategia

    1. Calcula el MACD, donde el valor predeterminado de la Longitud Rápida es 23 y el valor predeterminado de la Longitud Lenta es 50. El MACD refleja la diferencia entre las medias móviles a corto y largo plazo para determinar el movimiento de los precios.
    1. El MACD es tratado por el RSI de Stoch para formar un valor de K, donde el valor predeterminado de Cycle Length es de 10, que refleja el exceso de compra y venta del indicador de movimiento del MACD.
    1. El promedio móvil ponderado de los valores de K forma un valor de D, donde el valor predeterminado del 1st %D Length es 3, eliminando el ruido de los valores de K.
    1. El valor de D se vuelve a procesar con el Stoch RSI para formar el valor inicial de STC, donde el valor predeterminado del 2nd %D Length es de 3, formando una señal de sobrecompra y sobreventa precisa.
    1. El promedio móvil ponderado de los valores STC iniciales, obtenidos los valores STC finales, en el rango 0-100 ◦ STC superior a 75 es zona de sobrecompra, y inferior a 25 es zona de sobreventa ◦
    1. Cuando el STC de abajo hacia arriba rompe el 25, haga más; cuando el STC de arriba hacia abajo rompe el 75, haga vacío.

Ventajas estratégicas

    1. El indicador STC, combinado con el diseño del RSI de Stoch, permite identificar claramente las zonas de sobreventa y sobrecompra, formando una señal de tendencia más fuerte.
    1. Se puede filtrar eficazmente la brecha falsa a través del doble filtro RSI de Stoch.
    1. El STC forma un rango estandarizado de 0-100, lo que facilita la formación de señales de negociación mecanizadas.
    1. La estrategia de retroalimentación permite la visualización de marcas de brecha y alertas de ventana de texto que permiten capturar las oportunidades de negociación de manera clara e intuitiva.
    1. La estrategia utiliza una combinación optimizada de parámetros para controlar eficazmente las transacciones sin sentido y evitar la hipersensibilidad.

Riesgo estratégico

    1. Los indicadores STC son sensibles a los parámetros y necesitan ajustar la combinación de parámetros para diferentes monedas y períodos de tiempo para adaptarse a las características del mercado.
    1. Las estrategias de ruptura son fácilmente manipulables y requieren el establecimiento de un stop loss para controlar el riesgo.
    1. Las falsas rupturas en mercados con baja liquidez pueden desencadenar señales erróneas, que requieren filtración de indicadores como el volumen de negocios combinado.
    1. La estrategia se basa únicamente en el indicador STC y puede combinarse con otros factores para determinar la confirmación de la tendencia y evitar la reversión de los paros.
    1. Se debe prestar atención a los puntos de resistencia de soporte clave para evitar señales erróneas en la zona.

Dirección de optimización de la estrategia

    1. Optimizar la combinación de parámetros de MACD para adaptarse a diferentes períodos y monedas.
    1. Optimización de los parámetros de los valores K y D del RSI de Stoch, suavizando la curva STC.
    1. La combinación de indicadores de volumen de negocios evita falsas rupturas en mercados con baja liquidez.
    1. Añadir otros indicadores para juzgar y confirmar señales de tendencia, como la banda de Bryn.
    1. Aumentar los mecanismos de detención de pérdidas, como el detención móvil o el detención ATR.
    1. Ajuste de la posición de entrada, por ejemplo, el regreso de entrada después de la ruptura, para asegurar la confirmación de la tendencia.

Resumir

La estrategia de ciclo de tendencias de Schaff determina las zonas de sobreventa y sobrecompra a través de indicadores de dinámica y, a partir de ellos, los cambios en la tendencia a corto plazo en los precios. La estrategia es simple y clara, se puede ajustar según los diferentes parámetros del mercado, pero también existe el riesgo de ser ajustada. Se puede optimizar mediante el juicio auxiliar de indicadores y el stop loss, para tener un mejor efecto en las tendencias fuertes.

Código Fuente de la Estrategia
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Copyright (c) 2018-present, Alex Orekhov (everget)
// Schaff Trend Cycle script may be freely distributed under the MIT license.
strategy("Schaff Trend Cycle", shorttitle="STC Backtest", overlay=true)

fastLength = input(title="MACD Fast Length",  defval=23)
slowLength = input(title="MACD Slow Length",  defval=50)
cycleLength = input(title="Cycle Length",  defval=10)
d1Length = input(title="1st %D Length",  defval=3)
d2Length = input(title="2nd %D Length",  defval=3)
src = input(title="Source",  defval=close)
highlightBreakouts = input(title="Highlight Breakouts ?", type=bool, defval=true)

macd = ema(src, fastLength) - ema(src, slowLength)

k = nz(fixnan(stoch(macd, macd, macd, cycleLength)))

d = ema(k, d1Length)

kd = nz(fixnan(stoch(d, d, d, cycleLength)))

stc = ema(kd, d2Length)
stc := 	stc > 100 ? 100 : stc < 0 ? 0 : stc

//stcColor = not highlightBreakouts ? (stc > stc[1] ? green : red) : #ff3013
//stcPlot = plot(stc, title="STC", color=stcColor, transp=0)

upper = input(75, defval=75)
lower = input(25, defval=25)

transparent = color(white, 100)

upperLevel = plot(upper, title="Upper", color=gray)
// hline(50, title="Middle", linestyle=dotted)
lowerLevel = plot(lower, title="Lower", color=gray)

fill(upperLevel, lowerLevel, color=#f9cb9c, transp=90)

upperFillColor = stc > upper and highlightBreakouts ? green : transparent
lowerFillColor = stc < lower and highlightBreakouts ? red : transparent

//fill(upperLevel, stcPlot, color=upperFillColor, transp=80)
//fill(lowerLevel, stcPlot, color=lowerFillColor, transp=80)

long =  crossover(stc, lower) ? lower : na
short = crossunder(stc, upper) ? upper : na

long_filt = long and not short
short_filt = short and not long

prev = 0
prev := long_filt ? 1 : short_filt ? -1 : prev[1]

long_final = long_filt and prev[1] == -1
short_final = short_filt and prev[1] == 1

strategy.entry("long", strategy.long, when = long )
strategy.entry("short", strategy.short, when = short)

plotshape(crossover(stc, lower) ? lower : na, title="Crossover", location=location.absolute, style=shape.circle, size=size.tiny, color=green, transp=0)
plotshape(crossunder(stc, upper) ? upper : na, title="Crossunder", location=location.absolute, style=shape.circle, size=size.tiny, color=red, transp=0)

alertcondition(long_final, "Long", message="Long")
alertcondition(short_final,"Short", message="Short")

plotshape(long_final, style=shape.arrowup, text="Long", color=green, location=location.belowbar)
plotshape(short_final, style=shape.arrowdown, text="Short", color=red, location=location.abovebar)