
Die Dynamische Santa Claus-Rückkehr-Strategie ist eine quantitative Handelsstrategie, die potenzielle Ein- und Ausstiegspunkte anhand der dynamischen Rückkehr-Beziehung zwischen dem Preis und dem Pylon-Index identifiziert. Die Strategie verwendet eine dynamische Durchschnittslinie mit Längenverstellbaren Parametern, um die Rückkehr-Trendlinie des Preises zu zeichnen.
Der Kern der Strategie ist die Berechnung der linearen Regressionsbeziehung zwischen den Preisen und dem Pylonindex. Zuerst werden die einfachen Moving Averages und die Standarddifferenz mit einer Länge von N berechnet. Anschließend werden die Schwerpunkte k und die Schnittstelle b der Regressionslinie auf der Grundlage der relevanten Faktoren und der Standarddifferenzwerte der Stichprobe ermittelt.
y = kx + b
Dabei ist x der Index für die Kolonne und y der Preis.
Beurteilen Sie die Richtung des Trends anhand des Verhältnisses zwischen der Größe der Rückkehrlinie im aktuellen Moment und der vorherigen Stunde. Wenn die Rückkehrlinie steigt und der Schlusskurs über dem Eröffnungspreis und dem Höchstpreis der vorherigen Stunde liegt, erzeugt dies ein Kaufsignal. Wenn die Rückkehrlinie fällt und der Schlusskurs unter dem Eröffnungspreis und dem Mindestpreis der vorherigen Stunde liegt, erzeugt dies ein Verkaufssignal.
Die Dynamische Weihnachtsmann-Rückkehrstrategie nutzt die dynamische Rückkehrbeziehung zwischen Preis und Zeit, um ein flexibles, intuitives und parametergesteuerbares Quantifizierungsgeschäftssystem zu realisieren. Die Logik der Strategie ist klar und leicht verständlich und kann durch Parameteroptimierung für verschiedene Handelsprodukte und -zyklen angewendet werden. Die Innovation dieser Strategie liegt in der Einführung von Zeitfaktoren, um ein dynamisches Modell zu erstellen, das die Beurteilung tendenzieller macht.
/*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')