Estratégia de acompanhamento de tendências com vários indicadores

Autora:ChaoZhang, Data: 23 de setembro de 2023 15:19:46
Tags:

Resumo

Esta estratégia integra múltiplos indicadores para a identificação de tendências e gera sinais de negociação com base em mudanças direcionais alinhadas.

Estratégia lógica

Os principais indicadores são:

  1. Velocidade média móvel: Reflete a dinâmica do preço.

  2. STOCH: sobrevenda/compra excessiva para mudanças de tendência.

  3. MACD: Mudanças de tendência de médias móveis duplas.

As regras de negociação são as seguintes:

  1. Aumento da velocidade média móvel dá sinal de alta.

  2. O STOCH na zona de sobrecompra dá sinal de baixa.

  3. O cruzamento positivo do MACD dá um sinal de alta.

  4. Insira quando dois indicadores alinharem os sinais.

  5. Saia quando os sinais do indicador mudarem.

A combinação avalia a tendência a partir de múltiplas dimensões, filtrando o ruído para sinais de alta convicção.

Vantagens

Em comparação com os indicadores únicos, a estratégia combinada tem os seguintes benefícios:

  1. A visão combinada melhora a precisão.

  2. A filtragem de conjunto reduz os falsos sinais.

  3. Inclui indicadores de tendência e de reversão média.

  4. Os sinais alinhados têm uma alta convicção, evitando falsas fugas.

  5. Regras simples e claras, fáceis de implementar.

  6. Ajuste flexível de parâmetros, robustez.

  7. Aplicável a diferentes prazos.

  8. Pode treinar pesos de indicador com aprendizagem de máquina.

  9. Estabilidade e rendibilidade globais melhores do que os indicadores individuais.

Riscos

Apesar dos méritos, os riscos a considerar incluem:

  1. Maior complexidade com múltiplos indicadores.

  2. Otimizar e ponderar parâmetros desafiadores.

  3. Podem ocorrer sinais de indicador conflitantes.

  4. Há sempre algum atraso, não se pode evitar todas as perdas.

  5. Período de espera unidirecional incerto com fator sorte.

  6. Os sinais conjuntos não podem eliminar os riscos inerentes à negociação de tendências.

  7. A alta frequência do comércio aumenta os custos das transacções.

  8. Precisam de monitorizar as relações recompensa/risco.

Melhorias

Com base na análise, as melhorias podem incluir:

  1. Avaliar a eficácia dos indicadores em diferentes mercados.

  2. Adicionar verificações de robustez dos parâmetros para evitar a sobreajuste.

  3. Otimizar a ponderação dos indicadores para reduzir os conflitos.

  4. Implementar paradas para limitar perdas graves.

  5. Usar saídas de tempo para controlar períodos de espera ilimitados.

  6. Avaliar o impacto da frequência de negociação nos custos de transação.

  7. Incorporar restrições de métricas de risco.

  8. Teste a robustez em vários mercados.

  9. Validar continuamente a eficácia da estratégia.

Conclusão

Esta estratégia forma sinais de conjunto estáveis, integrando múltiplos indicadores para avaliação de tendências. Mas a otimização contínua é fundamental para qualquer estratégia, monitorando riscos e prevenindo o sobreajuste.


/*backtest
start: 2022-09-16 00:00:00
end: 2023-09-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// By TradeStation
//@version=5

strategy("Mov Avg Speed Strategy", overlay=true)

src = input(close, title="Source")

// MA Speed  
avg_len = input.int(50, minval=1, title="Avg Length", group="MA Speed")
roc_len = input.int(1, minval=1, title="Rate of Change Length", group="MA Speed")
avg_roc_len = input.int(10, minval=1, title="Avg Rate of Change Length", group="MA Speed")

// Stochastic
stoch_len = input.int(14, minval=1, title="Stochastic Length", group="Stochastic")
smooth_k = input.int(3, minval=1, title="Stochastic Smooth K", group="Stochastic")
overbought = input.float(80, title="Stochastic Overbought", group="Stochastic")
oversold = input.float(20, title="Stochastic Oversold", group="Stochastic")

// MACD
fast_length = input(12, title="Fast Length", group="MACD")
slow_length = input(26, title="Slow Length", group="MACD")
macd_avg_length = input.int(9, title="MACD Avg Length",  minval=1, group="MACD")

// MA Speed
avg = ta.sma(src, avg_len)
roc = ta.roc(avg, roc_len)
avg_roc = ta.sma(roc, avg_roc_len)
avg_roc_signal = avg_roc > 0 ? 1 : avg_roc < 0 ? -1 : 0 

// Stochastic k
k = ta.sma(ta.stoch(close, high, low, stoch_len), smooth_k)
stochastic_signal = k <= oversold ? 1 : k >= overbought ? -1 : 0

// MACD
fast_ma = ta.ema(src, fast_length)
slow_ma = ta.ema(src, slow_length)
macd = fast_ma - slow_ma
macd_avg = ta.ema(macd, macd_avg_length)
macd_signal = macd_avg > macd_avg[1] ? 1 : macd_avg < macd_avg[1] ? -1 : 0

// set the signal couint
long_count = 0
short_count = 0

if macd_signal == 1
    long_count += 1

else if macd_signal == -1
    short_count += 1
 
if stochastic_signal == 1
    long_count += 1

else if stochastic_signal == -1
    short_count += 1
 
if avg_roc_signal == 1
    long_count += 1

else if avg_roc_signal == -1
    short_count += 1

if (long_count >= 2)
    strategy.entry("Long", strategy.long)

if (short_count >= 2)
    strategy.entry("Short", strategy.short)

Mais.