Estratégia de rastreamento de tendências de combinação de múltiplos indicadores


Data de criação: 2023-09-23 15:19:46 última modificação: 2023-09-23 15:19:46
cópia: 2 Cliques: 656
1
focar em
1617
Seguidores

Visão geral

Esta estratégia julga as grandes tendências através da integração de vários indicadores, gerando decisões de negociação com base na mudança simultânea dos sinais de combinação de indicadores. A estratégia combina a velocidade da média móvel, o indicador STOCH e o indicador MACD, formando um mecanismo de acompanhamento de tendências mais abrangente e robusto.

Princípio da estratégia

A estratégia baseia-se principalmente nos seguintes indicadores para determinar as tendências:

  1. Velocidade da média móvel: um indicador de tendência que reflete a velocidade com que os preços mudam.

  2. Indicador STOCH: A região de sobrecompra e sobrevenda julga a reversão da tendência.

  3. Indicador MACD: diferença de linha média dupla reflete mudança de tendência.

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

  1. A velocidade da média móvel para cima mostra mais sinais.

  2. O indicador STOCH entrou na zona de oversold, dando um sinal de baixa.

  3. A linha média do MACD está a cruzar-se, dando mais sinais.

  4. Quando dois sinais de indicador são sincronizados, uma decisão de entrada é tomada.

  5. A mudança no indicador é o mesmo que a saída.

A análise da estratégia considera vários fatores de tendência, formando um sistema de negociação estável com forte força de confirmação através da combinação de sinais de filtragem de fatores de erro.

Análise de vantagens

Em comparação com um único indicador, a estratégia combinada tem as seguintes vantagens:

  1. A avaliação global aumenta a precisão.

  2. O filtro combinado reduz os erros de negociação.

  3. A combinação de tendências e indicadores de reversão fornece uma visão global.

  4. Força de confirmação de sinal forte para evitar falsas brechas.

  5. As regras são simples, claras e fáceis de implementar.

  6. Parâmetros de ajuste são flexíveis e adaptáveis.

  7. O uso de diferentes períodos de tempo é generalizado e abrangente.

  8. Pode introduzir pesos de treinamento de aprendizagem de máquina.

  9. A estabilidade global e a rentabilidade são melhores do que um único indicador.

Análise de Riscos

Apesar das vantagens da estratégia, os seguintes riscos devem ser considerados:

  1. A complexidade da estratégia é aumentada com a multiplicação dos indicadores.

  2. Otimizar os parâmetros e definir os pesos é mais difícil.

  3. Pode haver sinais contraditórios entre os diferentes indicadores.

  4. A falta de transparência e a falta de transparência na gestão dos recursos públicos são os fatores que levam a um aumento da desigualdade social.

  5. O tempo de detenção de uma posição unilateral é incerto, e há um componente de sorte.

  6. Os sinais de combinação não eliminam a vigilância inerente às negociações de tendências.

  7. A alta frequência de transações é vulnerável a taxas de transação.

  8. A taxa de retração do rendimento deve ser observada.

Direção de otimização

De acordo com a análise acima, a estratégia pode ser melhorada:

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

  2. Aumentar os testes de estabilidade dos parâmetros para evitar otimização excessiva.

  3. Otimizar a configuração de pesos de indicadores para reduzir a confusão de sinais.

  4. Configure o Stop Loss Stop para evitar perdas graves.

  5. O uso de saídas de tempo para controlar posições unilaterais sem alvo.

  6. Avaliar o impacto da frequência de transações nas taxas de transação.

  7. Introdução de restrições de indicadores de risco.

  8. Teste de robustez multi-mercado.

  9. Verificar estratégias de forma contínua para evitar que elas se tornem obsoletas.

Resumir

Esta estratégia, por meio da integração de múltiplos indicadores de julgamento de tendências, forma um sistema de sinais de combinação estável. Mas qualquer estratégia precisa ser constantemente otimizada e avançada, com foco em indicadores de risco e prevenção de overfitting. A negociação quantitativa é um processo de aprendizagem contínua e repetição.

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