
Strategi ini membuat keputusan perdagangan berdasarkan ciri-ciri perubahan dinamik MACD. Inti strategi ini adalah untuk meramalkan trend yang mungkin berlaku dengan melihat perubahan dalam carta MACD. Histogram, untuk meramalkan kemungkinan terowong dan terowong mati, dan dengan itu merangka perdagangan lebih awal.
Strategi ini menggunakan sistem penunjuk MACD versi yang diperbaiki, yang merangkumi pengiraan perbezaan rata-rata bergerak cepat (EMA12) dan rata-rata bergerak perlahan (EMA26), dan garis isyarat berdasarkan 2 kitaran. Logik perdagangan teras berdasarkan beberapa titik utama:
Strategi ini menggunakan ciri-ciri perubahan dinamik carta MACD secara inovatif untuk memperbaiki dan mengoptimumkan sistem perdagangan MACD tradisional. Mekanisme penilaian strategi dapat memberikan isyarat masuk lebih awal, sementara syarat perdagangan yang ketat dan langkah-langkah kawalan risiko memastikan kestabilan strategi. Dengan pengoptimuman dan penyempurnaan lebih lanjut, strategi ini dijangka dapat mencapai prestasi yang lebih baik dalam perdagangan sebenar.
/*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")