Tendência após estratégia de negociação de regressão baseada em regressão linear e média móvel

Autora:ChaoZhang, Data: 2023-12-18 17:34:29
Tags:

img

Resumo

Esta estratégia projeta uma tendência simples seguindo o sistema de negociação baseado na linha de regressão linear e na linha média móvel. Ela vai longa quando a linha de regressão linear cruza acima da média móvel e vai curta quando a linha de regressão linear cruza abaixo. Enquanto isso, ela usa a inclinação da linha de regressão para filtrar alguns sinais de negociação e só entra quando a direção da tendência coincide.

Nome da estratégia

Tendência na sequência da estratégia de negociação de regressão

Princípio da estratégia

Os principais componentes desta estratégia incluem:

  1. Calcular a média móvel simples de N dias (SMA)
  2. Calcular a linha de regressão linear dos últimos N dias
  3. Ir longo quando o preço de fechamento cruza acima da SMA e é superior à linha de regressão
  4. Caso o preço de fechamento cruze abaixo da SMA e seja inferior à linha de regressão
  5. Defina o preço stop loss e o preço take profit

A linha de regressão linear pode se encaixar bem na direção da tendência nos períodos recentes. Ela pode ajudar a julgar a direção geral da tendência. Quando o preço quebra a linha SMA, precisamos determinar se a direção da linha de regressão linear é consistente com essa quebra. Somente quando as duas direções são consistentes, um sinal de negociação é gerado. Isso pode filtrar algumas falhas.

Além disso, a estratégia também define um mecanismo de stop loss. Quando o preço atinge a linha de stop loss, feche as posições para parar a perda.

Vantagens da estratégia

A estratégia apresenta as seguintes vantagens:

  1. Combinar indicador de tendência e indicador de ruptura para evitar falhas e melhorar a qualidade do sinal
  2. Use regressão linear para determinar a direção da tendência para filtragem da tendência, apenas vá longo na tendência de alta e vá curto na tendência de baixa
  3. Estabelecer o stop loss e o take profit para controlar o risco
  4. Regras claras e fáceis de entender
  5. Apenas alguns parâmetros para ajustar sem muita complexidade

Análise de riscos

A estratégia apresenta também alguns riscos:

  1. Podem ser gerados mais sinais de negociação errados no mercado de gama
  2. As configurações de médias móveis e períodos de regressão precisam de testes e otimização extensos, configurações inadequadas podem afetar o desempenho da estratégia
  3. O valor da posição em risco deve ser calculado de acordo com o método de classificação da posição em risco.
  4. Baseado apenas em indicadores técnicos sem combinar fatores fundamentais

Em relação a estes riscos, podemos otimizar a partir dos seguintes aspectos:

  1. Considerar a suspensão da estratégia ou a utilização de outros indicadores para filtragem no mercado limitado por intervalo
  2. Backtest extensivamente para encontrar os parâmetros ideais
  3. Otimizar e ajustar dinamicamente a posição de stop loss
  4. Combinar dados económicos e outros fatores fundamentais

Orientações de otimização

Os principais aspectos para otimizar a estratégia incluem:

  1. Adicionar outros indicadores auxiliares para avaliar as condições de mercado e evitar a negociação em períodos de variação
  2. Otimizar o tipo de média móvel, como média móvel dupla, média móvel tripla, etc.
  3. Analisar ainda mais a inclinação da linha de regressão e adicionar inclinação regras de julgamento
  4. Incorporar indicadores de volatilidade para definir níveis dinâmicos de stop loss e take profit
  5. Utilize métodos de aprendizagem de máquina para otimizar automaticamente parâmetros

Conclusão

Esta estratégia integra a função de tendência após as médias móveis e a capacidade de julgamento da tendência da regressão linear, formando um sistema de negociação relativamente simples. Pode alcançar bons resultados em mercados de forte tendência. Ainda precisamos de um extenso backtesting e otimização nos parâmetros e regras, e controle de risco adequado. Então esta estratégia deve ser capaz de obter retornos de investimento estáveis.


/*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))



Mais.