Strategi ini berasaskan keputusan dagangan pada ciri-ciri dinamik penunjuk MACD (Moving Average Convergence Divergence). Pendekatan teras memberi tumpuan kepada pemerhatian perubahan dalam histogram MACD untuk meramalkan potensi persilangan emas dan kematian, yang membolehkan penubuhan kedudukan awal. Strategi ini melampaui isyarat persilangan MACD tradisional dengan menekankan ciri-ciri dinamik histogram untuk mendapatkan masa kemasukan yang lebih baik.
Strategi ini menggunakan sistem penunjuk MACD yang diubah suai, menggabungkan perbezaan antara purata bergerak cepat (EMA12) dan perlahan (EMA26), bersama dengan garis isyarat 2 tempoh. Logik perdagangan teras berdasarkan beberapa titik utama:
Strategi ini secara inovatif menggunakan ciri dinamik histogram MACD untuk meningkatkan sistem perdagangan MACD tradisional. Mekanisme ramalan memberikan isyarat kemasukan lebih awal, sementara keadaan perdagangan yang ketat dan langkah-langkah kawalan risiko memastikan kestabilan strategi. Dengan pengoptimuman dan penyempurnaan lanjut, strategi ini menunjukkan janji untuk peningkatan prestasi dalam keadaan 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")