Estratégia de avanço da linha média

Autora:ChaoZhang, Data: 2024-02-23 14:46:37
Tags:

img

Resumo

A estratégia de avanço da linha média é uma estratégia de negociação quantitativa típica que rastreia tendências.

Princípio da estratégia

A estratégia primeiro calcula a SMA móvel simples de N dias (default 50 dias), e depois calcula o desvio padrão StdDev do preço com base na SMA para este ciclo. Com a SMA como o eixo central e os trilhos superior e inferior como 2 vezes o StdDev, o canal de desvio padrão é construído. Quando o preço vai acima do trilho superior, vá curto; quando o preço cai abaixo do trilho inferior, vá longo.

Após entrar no mercado, a estratégia irá definir pontos de stop loss e take profit. Especificamente, depois de ir longo, a linha de stop loss é o preço de fechamento no momento da entrada (100 - porcentagem de stop loss); depois de ir curto, a linha de take profit é o preço de fechamento no momento da entrada (100 + porcentagem de take profit).

Análise das vantagens

A estratégia apresenta as seguintes vantagens:

  1. Forte capacidade de rastreamento de tendências. Usando canais de desvio padrão pode rastrear dinamicamente as flutuações do mercado.

  2. Forte capacidade de controle de retirada.

  3. Implementação simples, poupa muita otimização de parâmetros e é muito fácil de implementar.

Análise de riscos

A estratégia apresenta também alguns riscos:

  1. As estratégias de rastreamento de tendências são propensas a perdas e, em seguida, reversões.

  2. Risco de sensibilidade dos parâmetros: a escolha de parâmetros como o período de média móvel e o multiplicador do desvio padrão terá um impacto maior no desempenho da estratégia.

  3. A configuração incorreta do ponto de stop loss pode causar perdas adicionais.

As soluções para os riscos correspondentes são as seguintes:

  1. Combinar indicadores de volatilidade para evitar falhas.

  2. Otimizar parâmetros para encontrar a combinação de parâmetros ideal.

  3. Ajustar o mecanismo de stop loss para evitar uma agressão excessiva.

Orientações de otimização

Ainda há espaço para uma maior otimização da estratégia:

  1. Usar médias móveis de vários quadros de tempo para verificação para evitar curvas excessivamente sensíveis.

  2. Incorporar outros indicadores, como o MACD, para avaliar as tendências e as divergências.

  3. Introduzir algoritmos de aprendizagem de máquina para otimizar dinamicamente os parâmetros.

Resumo

Em geral, a estratégia de avanço de regressão da média móvel é uma estratégia quantitativa de negociação muito prática. Ela tem as vantagens de rastrear tendências e controlar os drawdowns, implementação simples e atende às necessidades da negociação quantitativa. Ao mesmo tempo, também deve-se prestar atenção a questões como seleção de parâmetros e configurações de stop loss. Com análise de eixo de tempo múltipla e otimização de parâmetros, um melhor desempenho da estratégia pode ser obtido.


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

//@version=5
strategy("Standard Deviation Bands with Buy/Sell Signals", overlay=true)

// Input for the number of standard deviations
deviationMultiplier = input.float(2.0, title="Standard Deviation Multiplier")

// Input for the length of the moving average
maLength = input.int(50, title="Moving Average Length")

// Input for the stop loss percentage
stopLossPercentage = input.float(12, title="Stop Loss Percentage")

// Calculate the moving average
sma = ta.sma(close, maLength)

// Calculate the standard deviation of the price
priceDeviation = ta.stdev(close, maLength)

// Calculate the upper and lower bands
upperBand = sma + (priceDeviation * deviationMultiplier)
lowerBand = sma - (priceDeviation * deviationMultiplier)

// Plot the bands
plot(upperBand, color=color.green, title="Upper Band")
plot(lowerBand, color=color.red, title="Lower Band")

// Plot the moving average
plot(sma, color=color.blue, title="SMA", linewidth=2)

// Buy Signal
buyCondition = ta.crossover(close, lowerBand)
sellCondition = ta.crossunder(close, upperBand)

// Calculate stop loss level
stopLossLevelBuy = close * (1 - stopLossPercentage / 100)
stopLossLevelSell = close * (1 + stopLossPercentage / 100)

// Create Buy and Sell Alerts
alertcondition(buyCondition, title="Buy Signal", message="Buy Signal - Price Crossed Below Lower Band")
alertcondition(sellCondition, title="Sell Signal", message="Sell Signal - Price Crossed Above Upper Band")

// Plot Buy and Sell Arrows on the chart
plotshape(buyCondition, style=shape.triangleup, location=location.belowbar, color=color.green, title="Buy Signal Arrow")
plotshape(sellCondition, style=shape.triangledown, location=location.abovebar, color=color.red, title="Sell Signal Arrow")

// Exit Long and Short Positions
var float stopLossBuy = na
var float stopLossSell = na

if ta.crossover(close, sma)
    stopLossBuy := stopLossLevelBuy
if ta.crossunder(close, sma)
    stopLossSell := stopLossLevelSell

strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.exit("Stop Loss/Take Profit Buy", from_entry = "Buy", stop = stopLossBuy)
strategy.entry("Sell", strategy.short, when = sellCondition)
strategy.exit("Stop Loss/Take Profit Sell", from_entry = "Sell", stop = stopLossSell)


Mais.