Estratégia de negociação de acompanhamento de tendências com base em regressão linear e médias móveis


Data de criação: 2023-12-18 17:34:29 última modificação: 2023-12-18 17:34:29
cópia: 4 Cliques: 890
1
focar em
1621
Seguidores

Estratégia de negociação de acompanhamento de tendências com base em regressão linear e médias móveis

Visão geral

A estratégia baseia-se na linha de regressão linear e na média móvel, projetando um sistema de negociação de acompanhamento de tendência simples. Faça mais quando atravessa a média móvel na linha de regressão linear e faça menos quando atravessa a média móvel abaixo da linha de regressão linear. Ao mesmo tempo, combine a inclinação da linha de regressão linear para filtrar parte dos sinais de negociação e só entrar em jogo quando a direção da tendência coincide.

Nome da política

Trend Following Regression Trading Strategy (Estratégia de negociação de regressão)

Princípio da estratégia

A estratégia inclui as seguintes partes-chave:

  1. Calcule a média móvel simples de N dias (SMA)
  2. Calcule a linha de regressão linear de N dias mais recentes
  3. Quando o preço de fechamento atravessa a linha SMA e está acima da linha de retorno, faça mais
  4. Caso o preço de fechamento atravesse a linha SMA e esteja abaixo da linha de retorno, faça um corte
  5. Estabeleça um preço de parada e um preço de parada

A linha de regressão linear se encaixa muito bem com a direção da tendência no período mais recente. Isso pode ser usado para auxiliar na determinação da direção da tendência geral. Quando os preços quebram a linha SMA, precisamos determinar ainda mais se a direção da linha de regressão linear está de acordo com a quebra.

Além disso, a estratégia também estabelece um mecanismo de stop loss. Quando o preço toca a linha de stop loss, a posição de equilíbrio é interrompida. Também estabelece uma linha de stop loss, bloqueando parte dos lucros.

Vantagens estratégicas

A estratégia tem as seguintes vantagens:

  1. Combinação de indicadores de tendência e indicadores de ruptura para evitar falsas rupturas e melhorar a qualidade do sinal
  2. Utilizando regressão linear para determinar a direção da tendência, filtrando a tendência, fazendo mais somente quando a tendência é alta, e fazendo vazio quando a tendência é baixa
  3. Mecanismos de suspensão e parada para controlar os riscos
  4. As regras são claras, fáceis de entender e de aplicar
  5. Só precisa de ajustar alguns parâmetros, não precisa ser muito complicado

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. Mais sinais falsos de negociação em situações de turbulência
  2. A configuração de médias móveis e ciclos de regressão requer otimização de testes repetidos, e configurações inadequadas podem afetar o desempenho da estratégia
  3. Cancelamento de perdas em situações extremas com risco de ruptura e maior perda
  4. Baseado apenas em indicadores técnicos, sem conjugação de fatores fundamentais

Para responder a esses riscos, podemos fazer otimizar as seguintes coisas:

  1. Considere uma estratégia de suspensão ou um filtro de outros indicadores em mercados de turbulência
  2. Repetindo os parâmetros para encontrar o melhor
  3. Optimizar e ajustar dinamicamente a posição de parada
  4. Factores básicos, como dados económicos.

Direção de otimização

A estratégia pode ser melhorada em:

  1. Adicionar outros indicadores auxiliares para avaliar a situação do mercado e evitar negociações em situações de turbulência
  2. Optimizar combinações de tipos de médias móveis, como médias móveis duplas e médias móveis triplos
  3. Análise adicional da inclinação da linha de regressão, adicionando regras de julgamento da inclinação
  4. Combinado com o indicador de taxa de flutuação, define a posição de parada de perda dinâmica
  5. Otimizar automaticamente os parâmetros usando métodos de aprendizagem de máquina

Resumir

A estratégia integra a função de acompanhamento de tendências das médias móveis com a função de julgamento de tendências de regressão linear, formando um sistema de negociação de acompanhamento de tendências relativamente simples e fácil de usar. Em mercados com tendências evidentes, a estratégia pode obter melhores efeitos.

Código-fonte da estratégia
/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Regression Trading Strategy", shorttitle="RTS", overlay=true)

// Input parameters
n = input(14, title="SMA Period")
stop_loss_percentage = input(2, title="Stop Loss Percentage")
take_profit_percentage = input(2, title="Take Profit Percentage")

// Calculate the SMA
sma = sma(close, n)

// Linear regression function
linear_regression(src, length) =>
    sumX = 0.0
    sumY = 0.0
    sumXY = 0.0
    sumX2 = 0.0
    for i = 0 to length - 1
        sumX := sumX + i
        sumY := sumY + src[i]
        sumXY := sumXY + i * src[i]
        sumX2 := sumX2 + i * i
    slope = (length * sumXY - sumX * sumY) / (length * sumX2 - sumX * sumX)
    intercept = (sumY - slope * sumX) / length
    line = slope * length + intercept
    line

// Calculate the linear regression
regression_line = linear_regression(close, n)

// Plot the SMA and regression line
plot(sma, title="SMA", color=color.blue)
plot(regression_line, title="Regression Line", color=color.red)

// Trading strategy conditions
long_condition = crossover(close, sma) and close > regression_line
short_condition = crossunder(close, sma) and close < regression_line

// Exit conditions
stop_loss_price = close * (1 - stop_loss_percentage / 100)
take_profit_price = close * (1 + take_profit_percentage / 100)

// Plot entry and exit points on the chart
plotshape(series=long_condition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=short_condition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
plotshape(series=crossunder(close, stop_loss_price), title="Stop Loss", location=location.abovebar, color=color.red, style=shape.labeldown, text="SL")
plotshape(series=crossover(close, take_profit_price), title="Take Profit", location=location.belowbar, color=color.green, style=shape.labelup, text="TP")

// Strategy orders
strategy.entry("Long", strategy.long, when = long_condition)
strategy.entry("Short", strategy.short, when = short_condition)
strategy.exit("Exit", from_entry = "Long", when = crossover(close, stop_loss_price) or crossover(close, take_profit_price))
strategy.exit("Exit", from_entry = "Short", when = crossunder(close, stop_loss_price) or crossunder(close, take_profit_price))