
La stratégie de retour dynamique de Santa Claus est une stratégie de trading quantitative qui identifie les points d’entrée et de sortie potentiels en fonction de la relation de retour dynamique entre le prix et l’indice de la ligne de pilier. La stratégie utilise une moyenne dynamique paramétrique de longueur réglable pour tracer la ligne de tendance de retour du prix.
Le cœur de la stratégie est de calculer la relation de régression linéaire entre le prix et l’indice de la colonne. On calcule d’abord une moyenne mobile simple et un écart-type de longueur N. Puis, sur la base des coefficients pertinents de l’échantillon et des valeurs de l’écart-type, on obtient la pente k et l’intersection b de la ligne de régression.
y = kx + b
où x est l’index de la colonne et y est le prix.
La direction de la tendance est déterminée en fonction de la relation entre la taille de la ligne de régression à l’heure actuelle et à l’heure précédente. Si la ligne de régression est en hausse et que le prix de clôture est supérieur au prix d’ouverture et au prix le plus élevé de l’heure précédente, un signal d’achat est généré.
La stratégie de retour dynamique du Père Noël utilise la relation de retour dynamique du prix et du temps pour réaliser un système de trading quantitatif flexible, intuitif et paramétrable. La logique de la stratégie est claire et facile à comprendre, et peut être appliquée à différents produits et cycles de trading grâce à l’optimisation des paramètres. L’innovation de cette stratégie réside dans l’introduction d’un facteur de temps pour construire un modèle dynamique, ce qui rend les jugements plus tendancieux.
/*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')