
A estratégia de retorno dinâmico do Papai Noel é uma estratégia de negociação quantitativa para identificar pontos de entrada e saída potenciais com base na relação de retorno dinâmico entre o preço e o indicador da linha de coluna. A estratégia usa uma linha média dinâmica de parâmetros ajustáveis em comprimento para traçar a linha de tendência de retorno do preço.
O núcleo da estratégia é calcular a relação de regressão linear entre o preço e o índice de coluna. Primeiro, calcula-se uma média móvel simples e um desvio padrão de comprimento N. Em seguida, com base nos coeficientes relevantes da amostra e no valor do desvio padrão, obtém-se a inclinação k e a interseção b da linha de regressão.
y = kx + b
onde x é o índice da coluna e y é o preço.
Se a linha de retorno sobe e o preço de fechamento está acima do preço de abertura e do preço máximo da hora anterior, gera um sinal de compra; Se a linha de retorno cai e o preço de fechamento está abaixo do preço de abertura e do preço mínimo da hora anterior, gera um sinal de venda.
A estratégia de retorno dinâmico do Papai Noel utiliza a relação de retorno dinâmico do preço e do tempo para realizar um sistema de negociação quantitativa flexível, intuitivo e ajustável aos parâmetros. A lógica da estratégia é clara e fácil de entender, e pode ser aplicada a diferentes produtos e ciclos de negociação através da otimização dos parâmetros. A inovação da estratégia consiste na introdução de um fator de tempo para criar um modelo dinâmico, tornando o julgamento mais tendencioso.
/*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')