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.
Os principais indicadores são:
Velocidade média móvel: Reflete a dinâmica do preço.
STOCH: sobrevenda/compra excessiva para mudanças de tendência.
MACD: Mudanças de tendência de médias móveis duplas.
As regras de negociação são as seguintes:
Aumento da velocidade média móvel dá sinal de alta.
O STOCH na zona de sobrecompra dá sinal de baixa.
O cruzamento positivo do MACD dá um sinal de alta.
Insira quando dois indicadores alinharem os sinais.
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.
Em comparação com os indicadores únicos, a estratégia combinada tem os seguintes benefícios:
A visão combinada melhora a precisão.
A filtragem de conjunto reduz os falsos sinais.
Inclui indicadores de tendência e de reversão média.
Os sinais alinhados têm uma alta convicção, evitando falsas fugas.
Regras simples e claras, fáceis de implementar.
Ajuste flexível de parâmetros, robustez.
Aplicável a diferentes prazos.
Pode treinar pesos de indicador com aprendizagem de máquina.
Estabilidade e rendibilidade globais melhores do que os indicadores individuais.
Apesar dos méritos, os riscos a considerar incluem:
Maior complexidade com múltiplos indicadores.
Otimizar e ponderar parâmetros desafiadores.
Podem ocorrer sinais de indicador conflitantes.
Há sempre algum atraso, não se pode evitar todas as perdas.
Período de espera unidirecional incerto com fator sorte.
Os sinais conjuntos não podem eliminar os riscos inerentes à negociação de tendências.
A alta frequência do comércio aumenta os custos das transacções.
Precisam de monitorizar as relações recompensa/risco.
Com base na análise, as melhorias podem incluir:
Avaliar a eficácia dos indicadores em diferentes mercados.
Adicionar verificações de robustez dos parâmetros para evitar a sobreajuste.
Otimizar a ponderação dos indicadores para reduzir os conflitos.
Implementar paradas para limitar perdas graves.
Usar saídas de tempo para controlar períodos de espera ilimitados.
Avaliar o impacto da frequência de negociação nos custos de transação.
Incorporar restrições de métricas de risco.
Teste a robustez em vários mercados.
Validar continuamente a eficácia da estratégia.
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)