
A estratégia de negociação de dupla linha de equilíbrio e aceleração combinada é uma estratégia de negociação quantitativa que utiliza a geração e a verificação de sinais de negociação com a utilização de médias móveis e indicadores dinâmicos. A estratégia combina a capacidade de acompanhamento de tendências da linha de equilíbrio e a característica dinâmica do indicador de aceleração, que, através de condições rigorosas de entrada e saída, permite capturar efetivamente o contorno da tendência do mercado, evitando o menor risco possível de redução de lucro ou até mesmo de perda, enquanto a tendência é confirmada.
A estratégia é baseada em uma combinação de uma média móvel simples de 20 períodos (SMA) e uma média móvel indexada de 5 períodos (EMA). A SMA de 20 períodos permite suavizar as flutuações do mercado e determinar a tendência de preços de médio e longo prazo; a EMA de 5 períodos permite capturar a tendência de mudanças de preços de curto prazo com maior agilidade, atribuindo maior peso aos preços de curto prazo.
A estratégia também introduz o indicador MACD para a verificação da tendência após a geração do sinal de negociação. Concretamente, ao gerar o sinal de compra, é necessário que a linha DIFF do MACD apareça com a linha DEA e mantenha vários ciclos para confirmar que a tendência de compra está em alta; ao contrário, ao gerar o sinal de venda, é necessário observar a tendência de queda do MACD após a formação de um forquilho morto.
Por fim, tanto para o over quanto para o under, a estratégia estabelece um limite de perda razoável. Concretamente, o limite de perda do over é definido abaixo do valor mínimo abaixo do ponto de entrada; o limite de perda do over é definido acima do valor máximo acima do ponto de entrada. Além disso, o limite de perda é atualizado em tempo real com a flutuação dos preços.
Pode-se obter uma melhor combinação através da adaptação dos parâmetros do indicador MACD. Além disso, os parâmetros do ciclo de equilíbrio devem ser otimizados de acordo com as características de diferentes variedades. Finalmente, a amplitude de parada de perda pode ser relaxada de forma adequada para garantir que os ganhos da grande direção sejam liberados.
A estratégia pode ser melhorada em várias direções:
A introdução de um algoritmo de linha de equilíbrio auto-adaptável. A combinação de linhas de equilíbrio com um ciclo dinâmico pode se adaptar automaticamente às mudanças do mercado, sem a necessidade de intervenção humana nos parâmetros de otimização.
Combinado com um modelo de aprendizagem de máquina. Algoritmos como o aprendizado profundo podem ser usados para identificar automaticamente as características de diferentes variedades de mercado, e produzir a melhor configuração de parâmetros em tempo real.
Adição de condições de filtragem adicionais. Outros indicadores técnicos podem ser adicionados à base dos sinais de negociação existentes como critérios de julgamento auxiliares, como a introdução de fatores de volume de transação.
Optimizar a estratégia de parada de perdas. Pode-se estudar a forma mais inteligente de parar perdas, tais como a interrupção do tipo de parada, o rastreamento de perdas, para obter maiores lucros ao mesmo tempo que controlar o risco.
A dupla linha de equilíbrio e a combinação de estratégias MACD consideram integralmente as características da tendência, os fatores dinâmicos e o controle de risco em várias dimensões, superando até certo ponto as limitações de um único indicador técnico, o que pode melhorar efetivamente a estabilidade da negociação quantitativa. A estratégia pode ser bem adaptada a diferentes ambientes de mercado por meio de parâmetros e vale a pena ser aplicada em disco e otimizada continuamente.
/*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)