A Estratégia de Regressão Dinâmica do Papai Noel é uma estratégia quantitativa de negociação que identifica pontos de entrada e saída potenciais com base na relação de regressão dinâmica entre o preço e o índice de barra.
O núcleo desta estratégia é calcular a relação de regressão linear entre o preço e o índice de barras. Primeiro, calcula médias móveis simples e desvios padrão de comprimento N. Em seguida, com base em coeficientes de correlação da amostra e índices de desvio padrão, obtém a inclinação k e a interceptação b da linha de regressão. Isso resulta em uma equação de regressão linear ajustada dinamicamente:
y = kx + b
onde x é o índice de barras e y é o preço.
De acordo com a relação de magnitude entre os valores atuais e anteriores da linha de regressão, a direção da tendência é determinada. Se a linha de regressão está subindo e o preço de fechamento é maior do que o preço de abertura e o preço mais alto do momento anterior, um sinal de compra é gerado. Se a linha de regressão cair e o preço de fechamento for menor do que o preço de abertura e o preço mais baixo do momento anterior, um sinal de venda é gerado.
A definição incorreta do valor N pode fazer com que a linha de regressão seja demasiado lisa ou sensível
Volatilidade dos preços a curto prazo, fracasso do julgamento da relação de regressão
A proporção do anel considera apenas um ponto no tempo e pode perder extremos locais
A Estratégia de Regressão Dinâmica do Papai Noel utiliza a relação de regressão dinâmica entre preço e tempo para implementar um sistema de negociação quantitativa flexível, intuitivo e ajustável. A lógica desta estratégia é clara e fácil de entender. Através da otimização de parâmetros, pode ser aplicada a diferentes produtos e ciclos de negociação. A inovação desta estratégia está na introdução de fatores de tempo para estabelecer um modelo dinâmico, tornando os julgamentos mais tendências.
/*backtest start: 2023-01-05 00:00:00 end: 2024-01-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // Creator - TradeAI strategy('Moving Santa Claus Strategy | TradeAI', overlay=true) // Set the length of the moving average length = input(64) // Calculate the moving averages and standard deviations x = bar_index y = close x_ = ta.sma(x, length) y_ = ta.sma(y, length) mx = ta.stdev(x, length) my = ta.stdev(y, length) c = ta.correlation(x, y, length) slope = c * (my / mx) // Calculate the parameters of the regression line inter = y_ - slope * x_ reg = x * slope + inter // Set the line color based on whether EMA is moving up or down var color lineColor = na if (reg > reg[1] and (close > open and close > high[1])) lineColor := color.new(#d8f7ff, 0) if (reg < reg[1] and (close < open and close < low[1])) lineColor := color.new(#ff383b, 0) // Plot the EMA line with different thicknesses plot(reg, color=lineColor, title="EMA") var color lineColorrr = na if (reg > reg[1] and (close > open and close > high[1])) lineColorrr := color.new(#d8f7ff, 77) if (reg < reg[1] and (close < open and close < low[1])) lineColorrr := color.new(#ff383b, 77) plot(reg, color=lineColorrr, title="EMA", linewidth=5) var color lineColorr = na if (reg > reg[1] and (close > open and close > high[1])) lineColorr := color.new(#d8f7ff, 93) if (reg < reg[1] and (close < open and close < low[1])) lineColorr := color.new(#ff383b, 93) plot(reg, color=lineColorr, title="EMA", linewidth=10) var color lineColorrrr = na if (reg > reg[1] and (close > open and close > high[1])) lineColorrrr := color.new(#d8f7ff, 97) if (reg < reg[1] and (close < open and close < low[1])) lineColorrrr := color.new(#ff383b, 97) plot(reg, color=lineColorr, title="EMA", linewidth=15) var color lineColorrrrr = na if (reg > reg[1] and (close > open and close > high[1])) lineColorrrrr := color.new(#d8f7ff, 99) if (reg < reg[1] and (close < open and close < low[1])) lineColorrrrr := color.new(#ff383b, 99) plot(reg, color=lineColorr, title="EMA", linewidth=20) // Implement trading strategy based on EMA direction if reg > reg[1] and (close > open and close > high[1]) strategy.entry('buy', strategy.long) if reg < reg[1] and (close < open and close < low[1]) strategy.close('buy')