Die dynamische Weihnachtsmann-Regressionsstrategie ist eine quantitative Handelsstrategie, die potenzielle Ein- und Ausstiegspunkte auf der Grundlage der dynamischen Regressionsbeziehung zwischen Preis und Barindex identifiziert.
Der Kern dieser Strategie besteht darin, die lineare Regressionsbeziehung zwischen Preis und Balkenindex zu berechnen. Er berechnet zunächst einfache gleitende Durchschnitte und Standardabweichungen von Länge N. Anhand der Stichprobenkorrelationskoeffizienten und Standardabweichungsquoten erhält er dann die Steigung k und den Schnittpunkt b der Regressionslinie. Dies führt zu einer dynamisch angepassten linearen Regressionsgleichung:
y = kx + b
wo x der Stabindex ist und y der Preis.
Nach dem Größenverhältnis zwischen den aktuellen und vorherigen Werten der Regressionslinie wird die Trendrichtung bestimmt. Wenn die Regressionslinie steigt und der Schlusskurs höher ist als der Eröffnungspreis und der höchste Preis des vorherigen Moments, wird ein Kaufsignal generiert. Wenn die Regressionslinie fällt und der Schlusskurs niedriger ist als der Eröffnungspreis und der niedrigste Preis des vorherigen Moments, wird ein Verkaufssignal generiert.
Eine unsachgemäße Einstellung des N-Wertes kann dazu führen, dass die Regressionslinie zu glatt oder empfindlich ist
Kurzfristige Preisvolatilität, Regressionsverhältnisse scheitern
Das Ringverhältnis berücksichtigt nur einen Punkt in der Zeit und kann lokale Extreme übersehen
Die Dynamic Santa Claus Regression Strategy nutzt die dynamische Regressionsbeziehung zwischen Preis und Zeit, um ein flexibles, intuitives und anpassbares quantitatives Handelssystem zu implementieren. Die Logik dieser Strategie ist klar und leicht zu verstehen. Durch Parameteroptimierung kann sie auf verschiedene Handelsprodukte und -zyklen angewendet werden. Die Innovation dieser Strategie liegt in der Einführung von Zeitfaktoren, um ein dynamisches Modell zu etablieren, wodurch die Urteile trendiger werden.
/*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')