A Estratégia de Crossover Estocástico Multi-Tempo é uma estratégia típica de tendência. Ela calcula os valores de desvio padrão em diferentes prazos (por exemplo, diários, semanais, mensais, etc.), constrói várias linhas K e D, leva a média dessas linhas para construir médias móveis e vai longo quando a linha rápida cruza acima da linha lenta e vai curto quando a linha rápida cruza abaixo da linha lenta. Combinando linhas de desvio padrão em vários prazos, essa estratégia pode efetivamente filtrar o ruído do mercado e capturar a tendência predominante.
A lógica central desta estratégia é calcular o desvio padrão em vários prazos e, em seguida, tomar a média para gerar sinais de negociação.
Em primeiro lugar, a estratégia calcula os valores K do desvio-padrão sob diferentes parâmetros em 5 grupos, correspondentes a prazos diários, semanais e mensais:
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)
Então ele calcula D linhas com diferentes parâmetros, respectivamente:
smoothD = input(34)
d = sma(k, smoothD)
...
smoothD4 = input(233)
d4 = sma(k4, smoothD4)
Em seguida, ele calcula a média das linhas K e D para obter a linha rápida Kavg e linha lenta Davg:
Kavg = avg(k,k1,k2,k3,k4)
Davg = avg(d,d1,d2,d3,d4)
Finalmente, ele vai longo quando Kavg cruza acima de Davg, e vai curto quando Kavg cruza abaixo de Davg:
long = crossover(Kavg, Davg)
short = crossunder(Kavg, Davg)
Ao combinar linhas de desvio padrão em vários prazos, esta estratégia pode filtrar o ruído do mercado em prazos maiores e capturar a direção predominante da tendência.
Soluções:
Adicionar filtros para evitar falsos sinais de fuga
Utilização de períodos de adaptação baseados na volatilidade do mercado
Empregar trailing stops para sair das negociações em tempo hábil
Otimizar períodos de média móvel para melhor equilíbrio
Incorporar mais indicadores para melhorar a robustez
Esta estratégia pode ser melhorada nos seguintes domínios:
Incorporar outros sinais de indicadores como MACD, Bollinger Bands para melhorar a qualidade do sinal
Adicionar filtros de tendência como direção SMA, ADX para evitar negociações contra tendência
Utilização de períodos de adaptação baseados na volatilidade do mercado
Implementar trailing stops com base em parâmetros de estratégia para transações de saída
Otimizar períodos de média móvel rápida e lenta para melhores parâmetros
Adicionar filtros de entrada para evitar falsos sinais de ruído de curta duração
Entrada de ruptura do ensaio após cruzamento de médias móveis
Avalie diferentes estratégias de saída como Chandelier Exit para otimizar saídas
A Estratégia de Crossover Estocástico Multi Timeframe combina a capacidade de seguir a tendência do indicador estocástico e a estabilidade das estratégias de média móvel. Ao tomar a média das linhas de desvio padrão K e D de vários períodos para gerar sinais, ele utiliza efetivamente o poder preditivo do desvio padrão em diferentes prazos, filtra o ruído do mercado e capta a tendência predominante. Esta estratégia tem espaço para ajuste de parâmetros e melhorias adicionais como filtros, paradas, etc. No geral, integra os pontos fortes de várias ferramentas de análise técnica e é uma estratégia de tendência eficiente que vale a pena explorar e otimizar.
/*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)