
A estratégia de regressão linear inversa é uma estratégia de negociação inversa baseada na oscilação dos preços. Combina a análise de regressão linear e o indicador AVERAGE TRUE RANGE, definindo condições de ascensão contínua da linha K ou queda contínua da linha K. A análise de regressão linear determina a inversão dos preços.
A estratégia primeiro calcula a inclinação da regressão linear. Quando a inclinação da regressão linear é maior do que 0, o preço está em uma tendência ascendente; quando menor do que 0, o preço está em uma tendência descendente. Ao mesmo tempo, a relação entre o preço de fechamento e o preço de abertura da última linha K é combinada para determinar se a última linha K está alta ou baixa.
A frequência de negociação pode ser controlada através da configuração de um número de linhas K ascendentes e descendentes consecutivas. Quando a linha K ascendente consecutiva atinge um número definido, um sinal de venda é gerado com uma inclinação de regressão linear menor que 0 para realizar uma negociação de reversão perto do ponto alto; Quando a linha K descendente consecutiva atinge um número definido, um sinal de compra é gerado com uma inclinação de regressão linear maior que 0 para realizar uma negociação de reversão perto do ponto baixo.
A estratégia combina tendência e reversão de negociação, permitindo a reversão de negociação perto do ponto crítico, obtendo vantagem após o ajuste de preço. A análise de regressão linear fornece meios para determinar a tendência geral dos preços, evitando a reversão de zero ou mais quando os preços continuam subindo ou caindo.
Em comparação com a estratégia de inversão simples, a estratégia combina vários indicadores técnicos, o controle do tempo de negociação é mais preciso, evita o risco de brechas falsas e aumenta a probabilidade de lucro.
A estratégia enfrenta principalmente o risco de reversão de falha. Se o preço continuar a operar na tendência original após o julgamento de um sinal de reversão de preço, isso causará prejuízos. Além disso, a análise de regressão linear e a configuração de parâmetros do indicador ATR também afetam os ganhos da estratégia.
Pode-se controlar a perda individual através de stop loss. Avaliação racional da frequência de flutuação do mercado, ajuste adequado do número de linhas K consecutivas, redução da frequência de negociação. Optimização dos parâmetros do ciclo de regressão linear e dos parâmetros ATR, para que sejam mais adequados às características de diferentes variedades.
A estratégia pode ser melhorada em vários aspectos:
A adição de outros indicadores técnicos de julgamento, em combinação com diferentes indicadores de períodos de tempo, aumenta a precisão de julgamento. Por exemplo, a inclusão do MACD, Bollinger Band, etc.
Adicionar componentes de aprendizado de máquina, otimizar automaticamente os parâmetros através de algoritmos e ajustar dinamicamente as regras de negociação.
Adotar mecanismos de gestão de risco, como gestão de fundos, estratégias de stop loss, etc., para controlar o risco de transação.
Optimizar o portfólio, combinando a estratégia com outras estratégias não relevantes, reduzindo a retirada global e aumentando a estabilidade.
Expandir para mais variedades, avaliar a configuração de parâmetros de diferentes variedades, tornar a estratégia mais universal.
A estratégia de regressão linear inversa, que integra vários indicadores técnicos e opera de forma inversa ao determinar o momento da reversão do preço, é uma estratégia de negociação inversa eficaz. A estratégia pode ampliar ainda mais a margem de lucro através da otimização de parâmetros e do fortalecimento do gerenciamento de riscos, com grande potencial de melhoria.
/*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")