A estratégia de negociação combinada de média móvel dupla e MACD é uma estratégia de negociação quantitativa que utiliza médias móveis e indicadores de momento para geração e validação de sinais de negociação. Combinando a capacidade de seguir tendências de médias móveis e a característica de momento do MACD, esta estratégia pode efetivamente capturar o contorno das tendências do mercado através da definição de critérios de entrada e saída rigorosos, evitando o risco de estreitamento da faixa de lucro ou flutuação do mercado que pode levar a um lucro reduzido ou mesmo perda.
Esta estratégia emprega uma combinação da média móvel simples de 20 períodos (SMA) e da média móvel exponencial de 5 períodos (EMA). A SMA de 20 períodos pode suavizar as flutuações do mercado efetivamente e determinar as tendências de preços de médio a longo prazo, enquanto a EMA de 5 períodos atribui pesos mais altos aos preços recentes e reage de forma sensível às mudanças de preços de curto prazo. Os sinais de compra são gerados quando o preço cruza acima da linha de 5 períodos enquanto está acima da linha de 20 períodos e os sinais de venda são gerados quando o preço cruza abaixo da linha de 5 períodos enquanto está abaixo da linha de 20 períodos. Essa combinação de média móvel dupla garante que os sinais comerciais sigam as principais tendências, melhorando a sensibilidade e o tempo dos sinais através da introdução de médias móveis de curto prazo.
Após os sinais de negociação serem gerados, o indicador MACD é introduzido para validar a tendência. Especificamente, quando os sinais de compra são acionados, a linha MACD DIFF precisa ver uma
Por fim, são definidos níveis razoáveis de stop-loss para posições longas e curtas. A linha de stop-loss longa é definida abaixo do ponto mais baixo desde a entrada, enquanto a linha de stop-loss curta é definida acima do ponto mais alto desde a entrada. Os níveis de stop-loss são atualizados dinamicamente com as flutuações de preços.
Os parâmetros do MACD podem ser ajustados para uma melhor cooperação. Além disso, os parâmetros do período de média móvel precisam de otimização por características do produto. Finalmente, o intervalo de stop loss pode ser afrouxado razoavelmente para permitir a liberação total de lucros para grandes movimentos direcionais.
A estratégia pode ser prosseguida nas seguintes direcções:
Introduzir algoritmos de média móvel adaptativa.
Incorporar modelos de aprendizagem de máquina. Algoritmos como o aprendizado profundo podem identificar automaticamente as características do mercado de diferentes produtos e obter configurações de parâmetros ideais em tempo real.
Adicionar filtros suplementares. Outros indicadores técnicos podem ser introduzidos em cima dos sinais de corrente como padrões de julgamento auxiliares, como a integração de fatores de volume.
Otimize as estratégias de stop loss. Técnicas de stop loss mais inteligentes, como breakout stop loss e tracking stop loss, devem ser pesquisadas, a fim de obter maior recompensa enquanto controla o risco.
A estratégia de combinação de média móvel dupla e MACD considera abrangentemente aspectos como tendência, impulso, controle de risco além das limitações de indicadores técnicos únicos e pode efetivamente melhorar a estabilidade da negociação quantitativa. Esta estratégia se adapta bem a diferentes ambientes de mercado através do ajuste de parâmetros e vale a pena aplicação ao vivo e otimização contínua.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Band Strategy with Early Signal (v5)", overlay=true) // Inputs length = 20 mult = 1.5 src = close riskRewardRatio = input(3.0, title="Risk-Reward Ratio") // Calculating Bollinger Bands basis = ta.ema(src, length) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plotting Bollinger Bands plot(upper, "Upper Band", color=color.red) plot(lower, "Lower Band", color=color.green) // Tracking Two Candles Ago Crossing Bollinger Bands var float twoCandlesAgoUpperCrossLow = na var float twoCandlesAgoLowerCrossHigh = na if (close[2] > upper[2]) twoCandlesAgoUpperCrossLow := low[2] if (close[2] < lower[2]) twoCandlesAgoLowerCrossHigh := high[2] // Entry Conditions longCondition = (not na(twoCandlesAgoLowerCrossHigh)) and (high > twoCandlesAgoLowerCrossHigh) shortCondition = (not na(twoCandlesAgoUpperCrossLow)) and (low < twoCandlesAgoUpperCrossLow) // Plotting Entry Points plotshape(longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL") // Strategy Execution if (longCondition) stopLoss = low - (high - low) * 0.05 takeProfit = close + (close - stopLoss) * riskRewardRatio strategy.entry("Buy", strategy.long) strategy.exit("Exit Buy", "Buy", stop=stopLoss, limit=takeProfit) if (shortCondition) stopLoss = high + (high - low) * 0.05 takeProfit = close - (stopLoss - close) * riskRewardRatio strategy.entry("Sell", strategy.short) strategy.exit("Exit Sell", "Sell", stop=stopLoss, limit=takeProfit)