Estratégia de cruzamento de regressão linear longa-curta

Autora:ChaoZhang, Data: 2024-03-27 17:52:02
Tags:

img

Resumo

A Estratégia de Crossover de Regressão Linear de Curto e longo prazo é uma estratégia de análise técnica que usa um modelo de regressão linear para prever os movimentos futuros dos preços de uma ação. O princípio básico da estratégia é: os movimentos dos preços das ações geralmente seguem uma certa tendência linear e, calculando a regressão linear do preço, o preço futuro pode ser previsto. A estratégia vai longo quando o preço previsto cruza acima do preço atual e sai da posição quando cruza abaixo.

Princípios de estratégia

A estratégia primeiro calcula a regressão linear do preço das ações durante um determinado período de tempo. A regressão linear se encaixa em uma linha reta usando o método do menor quadrado, que representa a tendência de mudança de preço ao longo do tempo. A estratégia então traça a linha de preço prevista e o preço atual no gráfico.

A estratégia define dois sinais:

  1. Signo longo: desencadeado quando o preço previsto ultrapassa o preço atual
  2. Signo curto: desencadeado quando o preço previsto cruza abaixo do preço atual

Quando o sinal longo aparece, a estratégia abre uma posição longa; quando o sinal curto aparece, fecha a posição.

As principais etapas da estratégia são as seguintes:

  1. Calcular a regressão linear do preço durante um período de tempo
  2. Traçar a linha de preço prevista e o preço atual no gráfico
  3. Definir os sinais longos e curtos
  4. Abrir uma posição longa quando o sinal longo é acionado
  5. Fechar a posição quando o sinal de curto é acionado

Análise das vantagens

A estratégia de cruzamento de regressão linear de curta duração tem as seguintes vantagens:

  1. Simples e eficaz: a lógica da estratégia é clara e fácil de implementar, e pode capturar a tendência linear do preço.
  2. Ampla aplicabilidade: A estratégia pode gerar sinais de negociação em mercados de tendências e variáveis.
  3. Forte otimização: a estratégia contém alguns parâmetros-chave, tais como período de regressão linear, médias móveis, etc., que podem ser otimizados para melhorar o desempenho.

Análise de riscos

Apesar de suas muitas vantagens, a Estratégia de Crossover de Regressão Linear de Curto e Longo Prazo também tem alguns riscos:

  1. Risco de reconhecimento de tendência: quando o movimento dos preços não segue uma tendência linear, como em um mercado variável, a estratégia pode gerar sinais falsos.
  2. O desempenho da estratégia é sensível às configurações dos parâmetros, e parâmetros inadequados podem levar a perdas.
  3. Risco de sobreajuste: se os parâmetros forem otimizados demais, isso pode fazer com que a estratégia se sobreajuste aos dados históricos e tenha um desempenho ruim no futuro.

Orientações de otimização

  1. Combinar com outros indicadores: o sinal de regressão linear pode ser combinado com outros indicadores técnicos, como MACD, Bandas de Bollinger, etc., para melhorar a precisão dos sinais.
  2. Optimização dinâmica dos parâmetros: um mecanismo adaptativo para os parâmetros pode ser projetado para ajustar dinamicamente os parâmetros de acordo com as condições do mercado, melhorando a adaptabilidade.
  3. Adicionar um módulo de controlo de risco: Incorporar na estratégia medidas de controlo de risco, como o stop-loss e a gestão de fundos, para reduzir o risco de uma única transacção e aumentar os rendimentos cumulativos.
  4. Otimização de aprendizado de máquina: algoritmos de aprendizado de máquina podem ser usados para otimizar continuamente o modelo de regressão linear para tornar suas previsões mais precisas.

Resumo

A estratégia de cruzamento de regressão linear de curto prazo gera sinais de negociação com base na comparação do preço previsto a partir da regressão linear e do preço atual. A lógica da estratégia é simples e clara, e pode capturar a tendência linear do preço e é aplicável a várias condições de mercado. Ao mesmo tempo, a estratégia é fácil de implementar e otimizar, e os parâmetros podem ser ajustados de forma flexível, combinados com outros indicadores, módulos de controle de risco podem ser adicionados, etc., para melhorar continuamente o desempenho da estratégia. No entanto, a estratégia também tem riscos como reconhecimento de tendência impreciso, configurações de parâmetros inadequadas e excesso de dados históricos, por isso é necessário cuidado na aplicação prática.


/*backtest
start: 2024-02-25 00:00:00
end: 2024-03-26 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © stocktechbot
//@version=5
strategy("Linear Cross", overlay=true, margin_long=100, margin_short=0)

//Linear Regression

vol = volume

// Function to calculate linear regression
linregs(y, x, len) =>
    ybar = math.sum(y, len)/len
    xbar = math.sum(x, len)/len
    b = math.sum((x - xbar)*(y - ybar),len)/math.sum((x - xbar)*(x - xbar),len)
    a = ybar - b*xbar
    [a, b]

// Historical stock price data
price = close

// Length of linear regression
len = input(defval = 21, title = 'Strategy Length')
linearlen=input(defval = 9, title = 'Linear Lookback')
[a, b] = linregs(price, vol, len)

// Calculate linear regression for stock price based on volume
//eps = request.earnings(syminfo.ticker, earnings.actual)
//MA For double confirmation

out = ta.sma(close, 200)
outf = ta.sma(close, 50)
outn = ta.sma(close, 90)
outt = ta.sma(close, 21)
outthree = ta.sma(close, 9)

// Predicted stock price based on volume
predicted_price = a + b*vol

// Check if predicted price is between open and close
is_between = open < predicted_price and predicted_price < close

//MACD
//[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

// Plot predicted stock price
plot(predicted_price, color=color.rgb(65, 59, 150), linewidth=2, title="Predicted Price")
plot(ta.sma(predicted_price,linearlen), color=color.rgb(199, 43, 64), linewidth=2, title="MA Predicted Price")
//offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
plot(out, color=color.blue, title="MA200")
[macdLine, signalLine, histLine] = ta.macd(predicted_price, 12, 26, 9)

//BUY Signal

longCondition=false
mafentry =ta.sma(close, 50) > ta.sma(close, 90)
//matentry = ta.sma(close, 21) > ta.sma(close, 50)
matwohun = close > ta.sma(close, 200)
twohunraise = ta.rising(out, 2)
twentyrise = ta.rising(outt, 2)
macdrise = ta.rising(macdLine,2)
macdlong = ta.crossover(predicted_price, ta.wma(predicted_price,linearlen))  and (signalLine < macdLine)
if macdlong and macdrise
    longCondition := true

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
lastEntryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)
daysSinceEntry = len
daysSinceEntry := int((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) / (24 * 60 * 60 * 1000))
percentageChange = (close - lastEntryPrice) / lastEntryPrice * 100
//trailChange = (ta.highest(close,daysSinceEntry) - close) / close * 100

//label.new(bar_index, high, color=color.black, textcolor=color.white,text=str.tostring(int(trailChange)))
shortCondition=false
mafexit =ta.sma(close, 50) < ta.sma(close, 90)
matexit = ta.sma(close, 21) < ta.sma(close, 50)
matwohund = close < ta.sma(close, 200)
twohunfall = ta.falling(out, 3)
twentyfall = ta.falling(outt, 2)
shortmafall = ta.falling(outthree, 1)
macdfall = ta.falling(macdLine,1)
macdsell = macdLine < signalLine
if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2)
    shortCondition := true

if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)




Mais.