Estratégia combinada de interceptação de inversão e regressão linear

Autora:ChaoZhang, Data: 23 de janeiro de 2023
Tags:

Resumo

Esta estratégia combina a estratégia de reversão 123 e a estratégia de interceptação de regressão linear para implementar uma estratégia de combo de negociação orientada por múltiplos fatores. A estratégia de reversão 123 julga a relação de preços entre os dois últimos dias de negociação e combina o indicador Stoch para determinar o sinal de reversão. A estratégia de interceptação de regressão linear usa análise de regressão linear para julgar a relação entre o preço e a linha de tendência e gerar sinais de negociação. As duas estratégias se verificam e podem filtrar efetivamente os falsos sinais.

Princípio da estratégia

123 Estratégia de reversão

A estratégia baseia-se nos seguintes princípios:

  1. Se a relação do preço de fechamento entre os dois últimos dias de negociação for superior ao preço de fechamento de hoje e a linha rápida do Stoch for inferior à linha lenta, considera-se que há um sinal de reversão de alta

  2. Se a relação do preço de fechamento entre os dois últimos dias de negociação for inferior ao preço de fechamento de ontem e a linha rápida do Stoch for superior à linha lenta, considera-se que existe um sinal de reversão de baixa

As regras de julgamento são as seguintes:

  • Se o preço de fechamento de hoje > o preço de fechamento de ontem e a linha rápida de Stoch < linha lenta de Stoch e linha rápida de Stoch > definirem o parâmetro, gerar sinal de compra

  • Se o preço de fechamento de hoje < o preço de fechamento de ontem e a linha rápida de Stoch > a linha lenta de Stoch e a linha rápida de Stoch < parameter definido, gerar sinal de venda

A estratégia deve definir parâmetros do indicador de Stoch, incluindo: comprimento do ciclo da linha K para o cálculo de Stoch, ciclo de suavização KS suavização para a linha rápida de Stoch, ciclo de suavização DLength para a linha lenta de Stoch, nível limiar para o julgamento da linha rápida de Stoch.

Estratégia de interceptação de regressão linear

A estratégia baseia-se na análise de regressão linear para julgar a relação entre o preço e a linha de tendência de regressão linear.

  • Se o preço de fechamento for superior à interceptação de regressão linear, é gerado um sinal de compra

  • Se o preço de fechamento for inferior à interceptação de regressão linear, é gerado um sinal de venda

A estratégia deve definir o ciclo de regressão linear LengthLRI e a fonte de dados de entrada de regressão linear xSeria.

Estratégia combinada

A estratégia combinada requer sinais de compra/venda simultâneos da estratégia de reversão 123 e da estratégia de interceptação de regressão linear para gerar ordens de negociação reais, o que efetivamente filtra falsos sinais e melhora o desempenho da negociação.

Análise das vantagens

A estratégia apresenta as seguintes vantagens:

  1. Aumentar a qualidade do sinal

A combinação de dois tipos diferentes de estratégias requer sinais de ambas as estratégias para efetivamente colocar ordens.

  1. A monitorização em tempo real das relações entre preços e tendências evita ficar preso

A interceptação de regressão linear pode refletir a relação entre o preço e a linha de tendência em tempo real. Se o preço se desviar significativamente da tendência, ele imediatamente solicitará à estratégia para ajustar a direção da posição. Isso permite que as perdas de parada sejam oportunas e evite ser preso em tendências históricas.

  1. Ter em conta as oportunidades de negociação tanto para tendências como para reversões

A estratégia de regressão linear é melhor na identificação de pontos de compra e venda da tendência. Enquanto a estratégia de reversão 123 se concentra na identificação de pontos de reversão.

  1. Optimização de parâmetros personalizáveis de estratégias

Ambas as estratégias fornecem certos parâmetros de personalização, que podem ser otimizados para diferentes variedades e tendências diferentes para otimizar o efeito da estratégia combinada.

Análise de riscos

A estratégia apresenta igualmente os seguintes riscos:

  1. Os condutores multifatores podem perder algumas oportunidades

A necessidade de atender aos sinais de negociação de ambas as estratégias perderá algumas oportunidades que podem ser lucrativas contando apenas com uma única estratégia.

  1. A regressão linear tem lag

A regressão linear requer alguns dados históricos para o cálculo e não pode responder em tempo real a eventos repentinos, resultando em algum atraso.

  1. É necessária uma otimização razoável dos parâmetros

Ambas as estratégias exigem uma selecção adequada de parâmetros, que podem ter de ser ajustados de forma independente para algumas variedades.

Os riscos podem ser reduzidos através dos seguintes métodos:

  1. Relaxar adequadamente as condições de desencadeamento do sinal combinado para evitar perder muitas oportunidades

  2. Combinar indicadores de tendência para substituir a regressão linear para obter mais julgamentos de tendência em tempo real

  3. Usar métodos de aprendizagem de máquina para auxiliar a otimização de parâmetros e melhorar a seleção de parâmetros

Orientações de otimização

A estratégia pode ser ainda melhorada das seguintes maneiras:

  1. Usar métodos de aprendizagem de máquina para otimização de parâmetros

Coletar dados históricos, projetar metas de otimização de parâmetros e usar algoritmos de aprendizado de máquina, como algoritmos genéticos e otimização bayesiana, para procurar as melhores combinações de parâmetros.

  1. Adicionar mecanismo de stop-loss

As regras de stop-loss podem ser definidas com base no ATR, indicadores de tendência, etc., para controlar a perda máxima por transação.

  1. Otimizar a lógica de entrada e saída

As condições auxiliares, tais como filtros de média móvel e bandas de Bollinger, podem ser adicionadas com base nos sinais de negociação para reduzir a frequência dos ajustamentos de posição e evitar ficarem presas.

  1. Análise combinada dos sentimentos

Usar técnicas de processamento de linguagem natural para determinar o sentimento dos participantes no mercado e auxiliar nas decisões comerciais.

  1. Adicionar módulo de previsão de aprendizagem de máquina

Usar modelos de aprendizagem profunda como LSTM e GRU para prever preços como uma referência importante para decisões estratégicas.

Resumo

Esta estratégia combina a estratégia de reversão 123 e a estratégia de interceptação de regressão linear para implementar a negociação quantitativa orientada por múltiplos fatores. O mecanismo de verificação pode efetivamente filtrar sinais falsos e capturar oportunidades de negociação de reversão e tendência. Mas também há certos riscos de atraso na estratégia que exigem atenção à otimização de parâmetros e expansão de mecanismos de controle de risco para melhorar ainda mais a estabilidade da estratégia. Combinar aprendizado de máquina e outras tecnologias para otimização de parâmetros e expansão de recursos é uma direção de otimização adicional que vale a pena para a estratégia explorar.


/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-19 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/01/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Linear Regression Intercept is one of the indicators calculated by using the 
// Linear Regression technique. Linear regression indicates the value of the Y 
// (generally the price) when the value of X (the time series) is 0. Linear 
// Regression Intercept is used along with the Linear Regression Slope to create 
// the Linear Regression Line. The Linear Regression Intercept along with the Slope 
// creates the Regression line.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

LRI(Length,xSeria) =>
    pos = 0.0
    xX = Length * (Length - 1) * 0.5
    xDivisor = xX * xX - Length * Length * (Length - 1) * (2 * Length - 1) / 6
    xXY = 0.0
    for i = 0 to Length-1
    	xXY := xXY + (i * xSeria[i])
    xSlope = (Length * xXY - xX * sum(xSeria, Length)) / xDivisor
    xLRI = (sum(xSeria, Length) - xSlope * xX) / Length
    pos:= iff(close > xLRI, 1,
           iff(close < xLRI, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Line Regression Intercept", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Line Regression Intercept ----")
LengthLRI = input(14, minval=1)
xSeria = input(title="Source", type=input.source, defval=close)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posLRI = LRI(LengthLRI,xSeria)
pos = iff(posReversal123 == 1 and posLRI == 1 , 1,
	   iff(posReversal123 == -1 and posLRI == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Mais.