Estratégia de ciclo de tendência de Schaff com acompanhamento de momentum


Data de criação: 2023-11-01 16:08:35 última modificação: 2023-11-01 16:08:35
cópia: 2 Cliques: 855
1
focar em
1617
Seguidores

Estratégia de ciclo de tendência de Schaff com acompanhamento de momentum

Visão geral

Esta estratégia baseia-se no indicador de ciclo de tendências de Schaff, combinando o princípio de supercompra e supervenda do Stoch RSI, para determinar e acompanhar a tendência por meio de indicadores dinâmicos. Quando o preço entra na zona de supervenda, faça mais; Quando o preço entra na zona de supervenda, faça mais; A estratégia capta pontos de mudança na tendência de preços, ajusta dinamicamente a posição e segue a movimentação dos preços.

Princípio da estratégia

    1. Calcule o MACD, em que o valor padrão do comprimento rápido é 23, o valor padrão do comprimento lento é 50. O MACD reflete a diferença entre as médias móveis de curto e longo prazo para determinar o movimento dos preços.
    1. O MACD é processado pelo Stoch RSI, formando um valor K, onde o valor padrão de Cycle Length é de 10, refletindo a sobrecompra e a sobrevenda do indicador de dinâmica do MACD.
    1. A média móvel ponderada de K, formando um valor de D, cujo 1st %D Length é o valor padrão de 3, excluindo o ruído no valor de K.
    1. O valor de D é novamente processado pelo RSI de Stoch para formar o valor inicial de STC, em que o valor padrão de 2nd %D Length é de 3, formando um sinal exato de sobrevenda.
    1. A média móvel ponderada do valor inicial do STC, obtendo o valor final do STC, na faixa de 0 a 100. STC acima de 75 é o supermercado e abaixo de 25 é o supermercado.
    1. Quando o STC de baixo para cima ultrapassa 25, faça mais; quando o STC de cima para baixo ultrapassa 75, faça vazio.

Vantagens estratégicas

    1. O indicador STC combina o design do Stoch RSI para identificar claramente as áreas de sobrevenda e sobrevenda, formando um sinal de tendência mais forte.
    1. A dupla filtragem Stoch RSI permite a filtragem eficaz de false breakouts.
    1. O STC forma uma faixa padronizada de 0 a 100, o que facilita a formação de sinais de negociação mecanizados.
    1. A estratégia de retrospecção permite a visualização de sinais de ruptura e alarmes de janela de texto para capturar oportunidades de negociação de forma clara e intuitiva.
    1. A estratégia usa uma combinação de parâmetros otimizada para controlar eficazmente as transações sem sentido e evitar a hipersensibilidade.

Risco estratégico

    1. Os indicadores STC são sensíveis aos parâmetros e precisam de ajustar a combinação de parâmetros de diferentes moedas e períodos de tempo para se adaptar às características do mercado.
    1. A estratégia de breakout é facilmente manipulada e requer um stop loss para controlar o risco.
    1. Falsa ruptura em mercados de baixa liquidez pode desencadear sinais errados, que necessitam de filtragem de indicadores como volume de transação em combinação.
    1. A estratégia baseia-se apenas no indicador STC e pode ser combinada com outros fatores para determinar a confirmação de tendências e evitar a reversão do stop loss.
    1. É necessário prestar atenção aos pontos críticos de resistência de suporte para evitar sinais errados na região.

Direção de otimização da estratégia

    1. Otimizar a combinação de parâmetros do MACD para adaptar-se a diferentes períodos e moedas.
    1. Optimizar os parâmetros de K e D para o Stoch RSI, suavizando a curva STC.
    1. Combinação de indicadores de volume de transação para evitar falsas rupturas em mercados de baixa liquidez.
    1. Adicionar outros indicadores de julgamento para confirmar sinais de tendência, como a faixa de Bryn.
    1. Aumentar os mecanismos de stop loss, como stop loss móvel ou stop loss ATR.
    1. Ajustes na posição de entrada, como a entrada de retorno após a ruptura, para garantir a confirmação da tendência.

Resumir

A estratégia de ciclo de tendência de Schaff determina áreas de sobrevenda e sobrevenda por meio de indicadores de dinâmica e, com isso, avalia a mudança de tendência de curto prazo nos preços. A estratégia é simples e clara, pode ser ajustada de acordo com os diferentes parâmetros do mercado, mas também existe o risco de se encaixar. Pode ser otimizada por meio de indicadores auxiliares de julgamento e parada de perdas, para ter melhor efeito em tendências fortes.

Código-fonte da estratégia
/*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)