
Strategi perdagangan sinkronisasi penunjuk kuantitatif dua hala adalah sistem perdagangan kuantitatif berdasarkan analisis teknikal yang menggabungkan dengan cerdiknya kelebihan penunjuk yang agak kuat (RSI) dan penunjuk penyebaran penutup rata-rata bergerak (MACD), yang memberi tumpuan kepada menangkap trend naik yang kuat di pasaran. Strategi ini hanya menjalankan perdagangan berbilang kepala, mewujudkan proses keputusan perdagangan yang sistematik dengan mengenal pasti isyarat penembusan kuantitatif dan menggabungkan mekanisme pengurusan risiko.
Strategi ini beroperasi berdasarkan sinergi dua petunjuk teknikal utama. Pertama, strategi ini menggunakan indikator RSI untuk mengukur kelajuan dan besarnya perubahan harga untuk menentukan sama ada pasaran berada dalam keadaan overbought atau oversold; kedua, menggunakan indikator MACD untuk mengenal pasti perubahan dan kekuatan pergerakan pasaran.
Syarat penyertaan:
Syarat penapisan tambahan:
Syarat kejohanan:
Strategi ini direka bentuk mekanisme pengesanan status untuk memastikan bahawa anda boleh masuk ketika posisi kosong dan keluar ketika memegang posisi, mengelakkan masalah isyarat berulang. Reka bentuk ini menjadikan setiap masuk hanya satu keluar, menjaga kejelasan dan konsistensi logik perdagangan.
Kesan sinergiGabungan RSI dan MACD, RSI bertindak balas dengan cepat terhadap perubahan harga, dan MACD dapat mengesahkan trend jangka menengah dan panjang, meningkatkan kebolehpercayaan isyarat.
Mekanisme penapisan yang fleksibelStrategi ini menyediakan dua mekanisme pilihan untuk penapisan trend EMA dan penapisan konteks oversold, yang membolehkan peniaga menyesuaikan strategi mereka mengikut keadaan pasaran yang berbeza.
Pengurusan risiko yang baikSistem Stop Loss terbina dalam yang membolehkan peniaga menetapkan parameter peratusan mengikut keutamaan risiko mereka sendiri untuk mengawal risiko perdagangan tunggal.
Kawalan status jelas: Mengesan kedudukan melalui pembolehubah keadaan, memastikan kekompakan dan logik isyarat perdagangan, mengelakkan masalah masuk atau keluar berulang.
Kustomisasi yang tinggiStrategi menyediakan pelbagai parameter yang boleh disesuaikan, termasuk panjang RSI, parameter MACD, syarat penapisan dan parameter pengurusan risiko, yang membolehkan peniaga mengoptimumkan mengikut keadaan pasaran yang berbeza dan jenis perdagangan.
Pembantu visualStrategi menyediakan ciri visual seperti penanda masuk / keluar, K line coloring, dan latar belakang pemicu untuk memudahkan pedagang memahami dan menyesuaikan strategi secara intuitif.
Risiko penembusan palsuDalam pasaran yang bergolak, RSI dan MACD mungkin menghasilkan isyarat pecah palsu yang kerap, yang menyebabkan perdagangan kerugian berturut-turut. Untuk mengurangkan risiko ini, penapis keadaan pasaran tambahan seperti indikator kadar turun naik atau indikator kekuatan trend boleh ditambah.
Batasan transaksi satu arahStrategi ini hanya menjalankan perdagangan multihead dan akan kehilangan peluang shorting yang berpotensi dalam tren turun. Dalam sistem perdagangan yang komprehensif, anda boleh mempertimbangkan untuk menambah strategi kosong yang sesuai, atau menghentikan perdagangan dalam tren turun yang jelas.
Kepekaan ParameterPrestasi strategi adalah sensitif terhadap parameter yang ditetapkan, kerana pasaran dan jangka masa yang berbeza mungkin memerlukan kombinasi parameter yang berbeza. Adalah disyorkan untuk mengoptimumkan parameter dengan mengkaji semula beberapa keadaan pasaran, dan mempertimbangkan untuk menggunakan kaedah parameter yang sesuai.
Setup risiko stop lossPenutupan yang terlalu kecil boleh menyebabkan ia sering dipicu, manakala penutupan yang terlalu besar boleh menyebabkan kerugian tunggal yang terlalu besar. Persentase penutupan harus disesuaikan dengan sifat turun naik pasaran sasaran, atau pertimbangkan untuk menggunakan kaedah penutupan dinamik seperti ATR.
Lagging isyaratSebagai penunjuk ketinggalan, isyarat RSI dan MACD mungkin muncul selepas harga telah berubah dengan ketara, mempengaruhi harga masuk dan kadar pulangan. Anda boleh mempertimbangkan untuk mengoptimumkan masa masuk dengan menggabungkan petunjuk terdahulu yang lebih sensitif.
Sistem parameter yang beradaptasiPembangunan mekanisme penyesuaian parameter penyesuaian yang berasaskan kadar turun naik pasaran atau kekuatan trend, yang membolehkan parameter RSI dan MACD dioptimumkan secara automatik mengikut keadaan pasaran semasa, meningkatkan penyesuaian strategi dalam keadaan pasaran yang berbeza.
Analisis pelbagai kerangka masaMemperkenalkan mekanisme pengesahan pelbagai jangka masa, seperti pengesahan arah trend pada jangka masa yang lebih besar, dan kemudian melakukan perdagangan tertentu pada jangka masa yang lebih kecil, untuk mengurangkan isyarat palsu dan meningkatkan kadar kemenangan.
Mekanisme Hentikan Kerosakan Dinamik: Mengubah peratusan berhenti tetap kepada berhenti dinamik berdasarkan ATR (Average True Rate) untuk lebih menyesuaikan diri dengan perubahan dalam turun naik pasaran, memberikan ruang untuk harga yang cukup sambil melindungi dana.
Pengurusan wang yang lebih baikMemperkenalkan algoritma pengurusan kedudukan berdasarkan nilai bersih, turun naik, dan peluang kemenangan akaun, seperti formula Kelly atau model risiko peratusan tetap, yang menjadikan setiap risiko perdagangan sesuai dengan keadaan akaun semasa dan keadaan pasaran.
Penapis persekitaran pasaran bersepaduTambah penapis yang dapat mengenal pasti keadaan pasaran (trend, goyah atau berbalik), seperti ADX (indices arah rata-rata), indikator kadar turun naik atau alat analisis kitaran, untuk melakukan perdagangan dalam keadaan pasaran yang sesuai dengan strategi.
Tambah logik perdagangan kosongStrategi untuk memperluaskan strategi untuk memasukkan peraturan perdagangan kosong, yang membolehkan ia sama berkesan dalam trend menurun, untuk membina sistem perdagangan yang komprehensif.
Strategi perdagangan sinkron binomial dinamika menghasilkan sistem perdagangan kuantitatif yang jelas secara logik dan terkawal risiko dengan menggabungkan kelebihan dua petunjuk teknikal klasik, RSI dan MACD. Strategi ini memberi tumpuan kepada menangkap peluang dinamika dalam trend yang meningkat, sambil meningkatkan kualiti perdagangan melalui pelbagai mekanisme penapisan dan alat pengurusan risiko. Walaupun terdapat risiko yang wujud seperti penembusan palsu dan kepekaan parameter, strategi ini berpotensi untuk meningkatkan lagi prestasi dalam pelbagai keadaan pasaran melalui arah pengoptimuman yang disyorkan seperti penyesuaian parameter, analisis bingkai masa berbilang dan pengurusan risiko dinamik.
/*backtest
start: 2025-02-28 00:00:00
end: 2025-08-10 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
// Vibe coded by Andrew Grothe 2025-08-08. Adjust the TP/SL on lines 28 & 29 to fine tune the strategy
strategy("RSI + MACD Long-Only Strategy", overlay=true, pyramiding=0, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.0)
// Inputs — RSI
rsiLen = input.int(14, "RSI Length", minval=1, group="RSI")
rsiOB = input.int(70, "RSI Overbought", minval=50, maxval=100, group="RSI")
rsiOS = input.int(30, "RSI Oversold", minval=0, maxval=50, group="RSI")
rsiMid = input.int(50, "RSI Midline", minval=0, maxval=100, group="RSI")
// Inputs — MACD
fastLen = input.int(12, "MACD Fast Length", minval=1, group="MACD")
slowLen = input.int(26, "MACD Slow Length", minval=1, group="MACD")
sigLen = input.int(9, "MACD Signal Length", minval=1, group="MACD")
requireAboveZero = input.bool(false, "Require MACD > 0 (trend filter)", group="MACD")
// Inputs — Filters & Visuals
useOversoldContext = input.bool(false, "Entry must be within N bars after RSI < Oversold", group="Signals")
oversoldWindowBars = input.int(10, "N bars after oversold", minval=1, group="Signals")
useEMATrend = input.bool(false, "Only Long if price > EMA", group="Signals")
emaLen = input.int(200, "EMA Length", minval=1, group="Signals")
showMarkers = input.bool(true, "Plot Entry/Exit Markers", group="Visuals")
colorBars = input.bool(false, "Color Bars on Signals", group="Visuals")
// Inputs — Risk
// 1 hour = 2.0/1.0, 2 hour = 10.5/2.5
useTPSL = input.bool(true, "Use Take Profit / Stop Loss", group="Risk")
tpPerc = input.float(11.5, "Take Profit %", minval=0.0, step=0.1, group="Risk")
slPerc = input.float(2.5, "Stop Loss %", minval=0.0, step=0.1, group="Risk")
// Core calculations
rsi = ta.rsi(close, rsiLen)
[macd, macdSignal, macdHist] = ta.macd(close, fastLen, slowLen, sigLen)
emaTrend = ta.ema(close, emaLen)
// Conditions
macdBull = macd > macdSignal and (not requireAboveZero or macd > 0)
rsiBull = rsi > rsiMid
recentlyOversold = ta.barssince(rsi < rsiOS) <= oversoldWindowBars
trendOk = not useEMATrend or close > emaTrend
// Precompute cross events to avoid conditional execution warnings
rsiCrossUpMid = ta.crossover(rsi, rsiMid)
macdCrossUp = ta.crossover(macd, macdSignal)
rsiCrossDownMid = ta.crossunder(rsi, rsiMid)
macdCrossDown = ta.crossunder(macd, macdSignal)
// Signals (long-only)
longTrigger = (rsiCrossUpMid and macdBull) or (macdCrossUp and rsi >= rsiMid)
longEntry = longTrigger and (not useOversoldContext or recentlyOversold) and trendOk
exitSignal = rsiCrossDownMid or (macdCrossDown and macdHist <= 0)
// Stateful gating so we only get one exit per entry
var bool inLong = false
inLongPrev = barstate.isfirst ? false : inLong[1]
finalLongEntry = longEntry and not inLongPrev
finalExit = exitSignal and inLongPrev
inLong := (inLongPrev or finalLongEntry) and not finalExit
// Plots
plot(useEMATrend ? emaTrend : na, title="EMA", color=color.orange, linewidth=2)
plotshape(showMarkers and finalLongEntry, title="Long Entry", style=shape.triangleup, location=location.belowbar, color=color.lime, size=size.tiny, text="Long")
plotshape(showMarkers and finalExit, title="Exit", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, text="Exit")
barcolor(colorBars ? (finalLongEntry ? color.lime : finalExit ? color.red : na) : na)
// Debug background to visualize when raw long trigger occurs
bgcolor(longTrigger ? color.new(color.lime, 90) : na)
// Alerts
//alertcondition(finalLongEntry, title="RSI+MACD Long Entry", message="RSI+MACD Long Entry on {{ticker}} {{interval}} at {{close}}")
//alertcondition(finalExit, title="RSI+MACD Exit", message="RSI+MACD Exit on {{ticker}} {{interval}} at {{close}}")
// Strategy Orders — Long only
if finalLongEntry
strategy.entry("Long", strategy.long)
// Protective exits (TP/SL) while in position
if useTPSL and strategy.position_size > 0
longSL = strategy.position_avg_price * (1 - slPerc / 100.0)
longTP = strategy.position_avg_price * (1 + tpPerc / 100.0)
strategy.exit("Long TP/SL", from_entry="Long", stop=longSL, limit=longTP)
// Signal-based exit
if finalExit and strategy.position_size > 0
strategy.close("Long", comment="Signal Exit")