La stratégie de régression dynamique du Père Noël est une stratégie de trading quantitative qui identifie les points d'entrée et de sortie potentiels en fonction de la relation de régression dynamique entre le prix et l'indice de barre.
Le noyau de cette stratégie est de calculer la relation de régression linéaire entre le prix et l'indice de barre. Il calcule d'abord les moyennes mobiles simples et les écarts types de longueur N. Ensuite, sur la base des coefficients de corrélation d'échantillon et des ratios d'écarts types, il obtient la pente k et l'intersection b de la ligne de régression.
y = kx + b
où x est l'indice de barre, et y est le prix.
Selon la relation de magnitude entre les valeurs actuelles et précédentes de la ligne de régression, la direction de la tendance est déterminée. 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é du moment précédent, un signal d'achat est généré. Si la ligne de régression tombe et que le prix de clôture est inférieur au prix d'ouverture et au prix le plus bas du moment précédent, un signal de vente est généré.
Un réglage incorrect de la valeur N peut entraîner une ligne de régression trop lisse ou trop sensible.
Volatilité des prix à court terme, jugement de la relation de régression échoue
Le rapport d'anneau ne prend en compte qu'un point dans le temps et peut manquer les extrêmes locaux
La stratégie de régression dynamique du Père Noël utilise la relation de régression dynamique entre le prix et le temps pour mettre en œuvre un système de trading quantitatif flexible, intuitif et réglable. La logique de cette stratégie est claire et facile à comprendre. Grâce à l'optimisation des paramètres, elle peut être appliquée à différents produits et cycles de trading. L'innovation de cette stratégie réside dans l'introduction de facteurs de temps pour établir un modèle dynamique, rendant les jugements plus tendance. En résumé, cette stratégie fournit un échantillon utile pour le trading quantitatif.
/*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')