
A estratégia de canal de regressão linear adaptativa é uma estratégia de negociação quantitativa baseada na análise de regressão linear. A estratégia forma um canal ascendente e descendente, calculando a equação de regressão linear do preço de um título em um determinado período de tempo, e usa o caminho ascendente e descendente do canal como sinal de negociação, para negociação intercalar ou acompanhamento de tendências.
O núcleo da estratégia de canal de regressão linear adaptativa é o cálculo de uma equação de regressão linear de preço de fechamento de um determinado número de linhas K-radical K, formando uma linha central que representa o dígito médio do preço, uma linha superior que representa o limite superior do preço e uma linha inferior que representa o limite inferior do preço. O processo de cálculo específico é o seguinte:
Recolha os parâmetros de entrada para as variáveis independentes x e y da linha K definida pela raiz K da linha K. Onde x é um inteiro de 1 a longitude e y é o valor de encerramento da linha K correspondente.
Coeficiente de regressão:
Calcule o valor de regressão linear correspondente a cada linha K para y’, diferença padrão STDDEV
A linha central é a equação de regressão y’ = mx + b, com os traços ascendentes e descendentes flutuando na linha central por um intervalo de multiplicador de diferença padrão.
Com a chegada da nova linha K, o cálculo acima é atualizado, formando um canal de adaptação ascendente e descendente. De acordo com o cruzamento do canal ascendente e descendente, faça mais decolagem e pare perto da linha média.
A estratégia de canal de regressão linear auto-adaptável tem as seguintes vantagens em comparação com a estratégia de linha média tradicional:
Modelos de análise de regressão mais científicos e racionais, com maior relevância estatística do que a média
Mais flexível, com um canal que se ajusta automaticamente à mudança de preço
Melhor detecção e, em algumas variedades, superior à estratégia linear
O teste em disco foi bem feito e funcionou de forma satisfatória em disco real.
A estratégia tem os seguintes riscos:
A volatilidade dos preços pode causar grandes prejuízos. A solução é definir o stop loss e otimizar os parâmetros.
A falha de corredor leva a um mau desempenho de rastreamento. A solução é ajustar os parâmetros, em combinação com outros indicadores técnicos.
A detecção parece ser boa, mas o disco rígido não é tão bom. A solução é ajustar os parâmetros e verificar.
A estratégia pode ser melhorada a partir das seguintes dimensões:
Teste mais combinações de parâmetros para encontrar o melhor
Combinação com outros indicadores técnicos para evitar sinais de falha quando o movimento é intenso
Aumentar as estratégias de suspensão de perdas, controlar o risco de perdas e proteger o capital
Adição de módulo de gerenciamento de posições para ajustar o tamanho das posições de acordo com as condições do mercado
A estratégia de corredor de regressão linear auto-adaptável é uma estratégia de quantificação que, em geral, tem um bom desempenho. Sua base teórica é sólida, seu desempenho prático é bom, merece mais pesquisa e otimização e pode ser uma parte efetiva do sistema de negociação quantitativa. Mas também é necessário reconhecer suas limitações, evitar riscos e praticar com cautela.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Stealthy 7 Linear Regression Channel Strategy", overlay=true)
source = open
length = input(100, minval=1)
mult1 = input(1, minval=0.001, maxval=50)
mult2 = input(1, minval=0.001, maxval=50)
DayTrader = input(title="Range Mode", type=bool, defval=false)
//Making the first least squares line
sum_x = length * (length + 1) / 2
sum_y = 0
sum_xy = 0
xyproductsum = 0
sum_xx = 0
for i = 1 to length
sum_y := sum_y + close[i]
sum_xy := i * close[i] + sum_xy
sum_xx := i * i + sum_xx
m = (length*sum_xy - (sum_x * sum_y)) / (length * sum_xx - (sum_x * sum_x))
b = sum_y / length - (m * sum_x / length)
//Finding the first standard deviation from the line
difference = 0
for i = 1 to length
y = i * m + b
difference := pow(abs(close[i] - y),2) + difference
STDDEV = sqrt(difference / length)
//Creating trading zones
dev = mult1 * STDDEV
dev2 = mult2 * STDDEV
upper = b + dev
lower = b - dev2
middle = b
if DayTrader == false
if crossover(source, upper)
strategy.entry("RGLONG", strategy.long, oca_name="RegChannel", comment="RegLong")
else
strategy.cancel(id="RGLONG")
if crossunder(source, lower)
strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel", comment="RegShort")
else
strategy.cancel(id="RGSHORT")
if crossover(source, middle) and strategy.position_size < 0
strategy.close_all()
if crossunder(source,middle) and strategy.position_size > 0
strategy.close_all()
if DayTrader == true
if crossover(source, lower)
strategy.entry("RGLONG", strategy.long, oca_name="RegChannel", comment="RegLong")
else
strategy.cancel(id="RGLONG")
if crossunder(source, upper)
strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel", comment="RegShort")
else
strategy.cancel(id="RGSHORT")
plot(upper, title="UpperBand", color=purple, linewidth=1, style=line)
plot(lower, title="LowerBand", color=purple, linewidth=1, style=line)
plot(middle, title="MiddleBand", color=black, linewidth=1, style=line)