
Die Strategie basiert auf den dynamischen Veränderungsmerkmalen der MACD. Der Kern der Strategie besteht darin, die möglichen Gold- und Todesforken durch die Beobachtung der Veränderungstrends der MACD-Säulen zu beobachten. Die Strategie konzentriert sich nicht nur auf die traditionellen MACD-Säulen-Kreuzsignale, sondern auch auf die dynamischen Veränderungsmerkmale der Säulen-Säulen, um durch die vorherige Bestimmung der Kreuzsignale bessere Einstiegsmöglichkeiten zu erhalten.
Die Strategie verwendet eine verbesserte Version des MACD-Indikatorensystems, das die Differenzberechnung zwischen dem schnellen Moving Average (RMA) und dem langsamen Moving Average (RMA) enthält, sowie eine Signallinie, die auf 2 Perioden basiert. Die Kernhandelslogik basiert auf folgenden Schlüsselpunkten:
Durch die innovative Anwendung der dynamischen Veränderungsmerkmale der MACD-Spaltenkarte wird eine Verbesserung und Optimierung des herkömmlichen MACD-Handelssystems erreicht. Die Vorausbestimmungsmechanismen der Strategie ermöglichen ein früheres Einstiegssignal, während strenge Handelsbedingungen und Risikokontrollmaßnahmen die Stabilität der Strategie gewährleisten. Durch weitere Optimierung und Verbesserung wird die Strategie in der Lage sein, im tatsächlichen Handel besser zu funktionieren.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="Demo GPT - Moving Average Convergence Divergence", shorttitle="MACD", commission_type=strategy.commission.percent, commission_value=0.1, slippage=3, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Getting inputs
fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
src = input(title="Source", defval=close)
signal_length = input.int(title="Signal Smoothing", minval=1, maxval=50, defval=2) // Set smoothing line to 2
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])
// Date inputs
start_date = input(title="Start Date", defval=timestamp("2018-01-01T00:00:00"))
end_date = input(title="End Date", defval=timestamp("2069-12-31T23:59:59"))
// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
// Strategy logic
isInDateRange = true
// Calculate the rate of change of the histogram
hist_change = hist - hist[1]
// Anticipate a bullish crossover: histogram is negative, increasing, and approaching zero
anticipate_long = isInDateRange and hist < 0 and hist_change > 0 and hist > hist[1] and hist > hist[2]
// Anticipate an exit (bearish crossover): histogram is positive, decreasing, and approaching zero
anticipate_exit = isInDateRange and hist > 0 and hist_change < 0 and hist < hist[1] and hist < hist[2]
if anticipate_long
strategy.entry("Long", strategy.long)
if anticipate_exit
strategy.close("Long")
// Plotting
hline(0, "Zero Line", color=color.new(#787B86, 50))
plot(hist, title="Histogram", style=plot.style_columns, color=(hist >= 0 ? (hist > hist[1] ? #26A69A : #B2DFDB) : (hist < hist[1] ? #FF5252 : #FFCDD2)))
plot(macd, title="MACD", color=#2962FF)
plot(signal, title="Signal", color=#FF6D00)
// Plotting arrows when anticipating the crossover
plotshape(anticipate_long, title="Long +1", location=location.belowbar, color=color.green, style=shape.arrowup, size=size.tiny, text="Long +1")
plotshape(anticipate_exit, title="Short -1", location=location.abovebar, color=color.red, style=shape.arrowdown, size=size.tiny, text="Short -1")