Estratégia de regressão linear inversa

Autora:ChaoZhang, Data: 29 de dezembro de 2023 17:15:07
Tags:

img

Resumo

A estratégia de regressão linear reversa é uma estratégia de negociação de reversão baseada em flutuações de preços. Ela combina análise de regressão linear e indicador AVERAGE TRUE RANGE, define as condições para ascensões consecutivas de linhas K ou descidas consecutivas de linhas K e realiza operações reversas quando a análise de regressão linear julga a reversão de preços.

Princípio da estratégia

A estratégia primeiro calcula a inclinação da regressão linear. Quando a inclinação da regressão linear é maior ou igual a 0, indica que o preço está em uma tendência ascendente; quando é menor que 0, indica uma tendência descendente nos preços. Ao mesmo tempo, combinado com a comparação entre o preço de fechamento e o preço de abertura da última linha K, é julgado se a última linha K subiu ou caiu. Quando a inclinação da regressão linear é maior ou igual a 0 e o preço de fechamento da última linha K é menor que o preço de abertura, um sinal de compra é gerado; quando a inclinação da regressão linear é menor que 0 e o preço de fechamento da última linha K é maior que o preço de abertura, um sinal de venda é gerado.

Ao definir o número de linhas K ascendentes consecutivas e o número de linhas K descendentes consecutivas, a frequência de negociação pode ser controlada. Quando se determina que o número de linhas K ascendentes consecutivas atinge o número definido, um sinal de venda é gerado sob a condição de que a inclinação de regressão linear seja menor que 0 para alcançar a negociação de reversão perto do ponto mais alto; quando se determina que as linhas K descendentes consecutivas atingem o número de configuração, quando a inclinação de regressão linear é maior ou igual a 0, um sinal de compra é gerado para alcançar a negociação de reversão perto do ponto mais baixo.

Análise das vantagens

A estratégia combina a negociação de tendência e a negociação de reversão, e pode realizar operações de reversão em pontos críticos, obtendo assim a vantagem após o ajuste de preços. A análise de regressão linear fornece um meio para determinar a tendência geral dos preços e evitar a reversão de posições curtas ou longas quando os preços ainda estão subindo ou caindo.

Em comparação com as estratégias de reversão simples, esta combina múltiplos indicadores técnicos para controlar com mais precisão o calendário das transações, o que pode efetivamente evitar o risco de falhas e aumentar a rentabilidade.

Análise de riscos

O principal risco enfrentado por esta estratégia é o fracasso da reversão. Se for julgado que o sinal de reversão do preço, o preço continua a manter a tendência original, isso causará perdas. Além disso, a definição de parâmetros de análise de regressão linear e indicadores ATR também afetará a receita da estratégia.

Stop loss pode ser usado para controlar a perda única. Avalie razoavelmente a frequência de flutuações do mercado, ajuste adequadamente o número de linhas K consecutivas e reduza a frequência de negociação. Otimize os parâmetros do ciclo de regressão linear e os parâmetros ATR para torná-los mais alinhados com as características de diferentes variedades.

Direcção de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Adicionar outros indicadores técnicos para melhorar a precisão do julgamento, por exemplo, MACD, Bollinger Band, etc.

  2. Aumentar os componentes de aprendizagem de máquina para otimização automática de parâmetros e ajuste dinâmico das regras de negociação.

  3. Incorporar mecanismos de gestão de riscos, tais como gestão de capital e estratégias de stop loss, para controlar os riscos comerciais.

  4. Optimização da carteira que combina estratégias com outras estratégias não relacionadas para reduzir os drawdowns globais e melhorar a estabilidade.

  5. Expandir para mais variedades, avaliar configurações de parâmetros para diferentes variedades para tornar a estratégia mais versátil.

Resumo

A estratégia de regressão linear reversa integra múltiplos indicadores técnicos e assume operações reversas ao julgar o momento da reversão de preços. É uma estratégia de negociação de reversão eficaz. Através da otimização de parâmetros e do gerenciamento aprimorado de riscos, a estratégia pode expandir ainda mais as margens de lucro e tem grande potencial de melhoria. Como uma idéia típica de estratégia de reversão, ela nos fornece referências valiosas.


/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Reverse Up/Down Strategy", currency=currency.USD, initial_capital=1000, pyramiding=2, default_qty_type=strategy.percent_of_equity, default_qty_value=100,overlay=true)

//User Options
consecutiveBarsUp   = input(title="Sell after how many bars up?",   type=input.integer, minval=1, defval=1)
consecutiveBarsDown = input(title="Buy after how many bars down?",  type=input.integer, minval=1, defval=1)
atrLength           = input(title="ATR Length",                     type=input.integer, minval=1, defval=14)
atrMult             = input(title="ATR Multiplier",                 type=input.float,   minval=0.1, defval=2.33)

//ATR Channel
adjustedATR     = sma(atr(atrLength),atrLength) * atrMult
longATR         = low - adjustedATR
shortATR        = high + adjustedATR
plot(shortATR,  title="Short ATR",  color=color.red)
plot(longATR,   title="Long ATR",   color=color.lime)


// This is the true linear regression slope rather than an approximation given by numerical differentiation
src = hlc3
len = input(defval=14, minval=1, title="Slope Length")
lrc = linreg(src, len, 0)
lrc1 = linreg(src, len,1)
lrs = (lrc-lrc1)

//Check if last candle was up or down
priceOpen = open
priceClose = close
longCondition = priceOpen > priceClose
shortCondition = priceOpen < priceClose
ups = 0.0
dns = 0.0

ups := shortCondition ? nz(ups[1]) + 1 : 0
dns := longCondition ? nz(dns[1]) + 1 : 0

if (shortCondition)
    strategy.close("buy", qty_percent=100, comment="Close")
    if (ups >= consecutiveBarsUp and lrs <= 0)
    	strategy.entry("sell", strategy.short, comment="Sell")
    	

if (longCondition)
    strategy.close("sell", qty_percent=100, comment="Close")
    if (dns >= consecutiveBarsDown and lrs >= 0)
	    strategy.entry("buy", strategy.long, comment = "Buy")


Mais.