
Strategi penyambungan SMA dengan penyambungan ADX adalah sistem perdagangan kuantitatif yang menggabungkan penyambungan rata-rata bergerak sederhana (SMA) dengan penapis arah rata-rata (ADX). Strategi ini mengesahkan kekuatan trend pasaran melalui penunjuk ADX, melaksanakan isyarat perdagangan penyambungan SMA hanya jika terdapat cukup momentum, dan menggunakan mekanisme stop loss dan tracking stop loss untuk melindungi keuntungan dan mengehadkan risiko.
Logik utama strategi ini adalah berdasarkan beberapa komponen utama:
Isyarat silang SMA: Menggunakan purata bergerak sederhana jangka pendek (default 3 kitaran) yang menghasilkan isyarat melakukan banyak apabila harga melintasi SMA ke atas dan isyarat melakukan banyak apabila harga melintasi SMA ke bawah.
Penapis ADX: Pengiraan manual ADX (default period 15), hanya disahkan apabila nilai ADX lebih besar daripada nilai set (default 15) untuk memastikan bahawa pasaran mempunyai kekuatan trend yang mencukupi untuk melakukan perdagangan. Ini berkesan menyaring isyarat palsu di pasaran goyah.
Pengurusan risiko dinamik:
Pentadbiran sesiUntuk mengelakkan risiko bermalam, anda perlu memaksa semua pemegang saham anda untuk meletakkan kedudukan kosong pada waktu akhir sesi perdagangan yang ditetapkan (default: 16:00).
Isyarat amaran dalam masa nyata: Apabila isyarat perdagangan dicetuskan, mesej amaran format JSON dihasilkan yang mengandungi arah perdagangan, harga masuk, harga henti dan harga henti.
Fungsi anti-pementasan semula: menyediakan fungsi reso_no_repaint untuk memastikan penunjuk tidak dilukis semula, meningkatkan kebolehpercayaan strategi.
Mekanisme pengesahan trendDengan menggabungkan SMA cross dan ADX, strategi ini dapat mengesan trend yang kuat dan mengurangkan isyarat salah dalam pasaran yang bergolak. Strategi ini meningkatkan kemungkinan kejayaan perdagangan berbanding dengan strategi SMA cross semata-mata.
Pengurusan risiko yang fleksibel: Menyediakan langkah-langkah kawalan risiko yang komprehensif, termasuk berhenti tetap, berhenti sasaran dan berhenti pengesanan, yang membolehkan peniaga menyesuaikan parameter mengikut keutamaan risiko mereka.
Fungsi pentadbiran sesi: Automatik menutup kedudukan pada akhir hari dagangan, mengelakkan risiko semalaman, terutamanya untuk peniaga dalam hari atau peniaga yang ingin mengelakkan berita dan peristiwa ekonomi utama.
Sistem amaran masa nyata: Menyediakan amaran berformat JSON yang tersusun untuk memudahkan integrasi ke dalam sistem perdagangan automatik atau mekanisme pemberitahuan.
Mudah dan Berkesan: Strategi logik yang jelas, parameter yang lebih sedikit, mudah difahami dan disesuaikan, sesuai untuk semua peringkat peniaga.
Reka bentuk anti pencitraan semula: Memastikan kebolehpercayaan strategi dalam persekitaran cakera tetap dengan fungsi anti-gambar semula.
Ketidaktentuan jangka pendek SMA: 3 kitaran SMA yang digunakan secara lalai mungkin terlalu sensitif, mungkin menghasilkan terlalu banyak isyarat perdagangan dalam pasaran yang bergelombang tinggi, meningkatkan kos perdagangan dan mungkin menyebabkan kerugian berterusan. Penyelesaian adalah dengan menyesuaikan panjang SMA mengikut keadaan pasaran dan jangka masa yang berbeza.
Pengurusan risiko mata tetapStrategi menggunakan titik tetap dan bukannya peratusan atau ATR untuk menetapkan stop loss, yang mungkin tidak cukup fleksibel dalam persekitaran yang berlainan. Hentian pasaran yang bergelombang tinggi mungkin terlalu kecil, dan hentian pasaran yang bergelombang rendah mungkin terlalu besar. Pengurusan risiko dinamik berdasarkan ATR boleh dipertimbangkan.
Keterlambatan ADX: ADX adalah penunjuk ketinggalan dan mungkin memberi isyarat pengesahan hanya selepas trend telah ditubuhkan, menyebabkan kemasukan lewat. Ia boleh diperbaiki dengan mengoptimumkan parameter ADX atau menggabungkan dengan penunjuk utama lain.
Kekurangan perbezaan status pasaranStrategi ini tidak membezakan antara keadaan pasaran yang berbeza (seperti trend, pergerakan dalam jangka masa), menggunakan logik perdagangan yang sama dalam semua persekitaran pasaran, yang boleh menyebabkan prestasi yang buruk dalam pasaran bukan trend.
Sekatan kerangka masa tunggalStrategi ini hanya berdasarkan analisis jangka masa tunggal, kekurangan pengesahan jangka masa berbilang, dan mungkin terlepas perubahan pasaran penting dalam konteks trend yang lebih besar.
Peningkatan dalam pengurusan risiko dinamik: Menggantikan stop loss dengan nombor titik tetap dengan sistem pengurusan risiko dinamik berdasarkan ATR, yang membolehkan strategi menyesuaikan diri dengan keadaan pasaran yang berbeza. Sebagai contoh, anda boleh menetapkan stop loss sebanyak 1.5 kali ATR dan stop loss sebanyak 3 kali ATR.
Analisis pelbagai kerangka masa: Tambah pengesahan trend pada jangka masa yang lebih tinggi, hanya berdagang ke arah trend yang lebih besar, meningkatkan kadar kemenangan. Anda boleh menambah jangka masa SMA yang lebih lama sebagai penapis trend.
Pengiktirafan status pasaran: Memperkenalkan mekanisme klasifikasi keadaan pasaran, seperti penunjuk turun naik atau penunjuk kekuatan trend, menggunakan parameter strategi atau logik perdagangan yang berbeza dalam keadaan pasaran yang berbeza.
Pengoptimuman kemasukanPertimbangkan untuk menambah petunjuk pengesahan kemasukan tambahan, seperti RSI (Relative Strength Index) atau Brinks, untuk meningkatkan kualiti isyarat kemasukan. Anda juga boleh melaksanakan strategi pembinaan gudang secara kumpulan untuk mengurangkan risiko kemasukan satu titik.
Parameter penyesuaianMekanisme penyesuaian parameter yang membolehkan strategi menyesuaikan diri dengan perubahan keadaan pasaran dengan menyesuaikan panjang SMA, ADX, dan parameter pengurusan risiko secara automatik berdasarkan pergerakan pasaran terkini.
Penapis masaMenambah penapis masa dagangan untuk mengelakkan pergerakan rendah atau pergerakan tinggi semasa siaran berita, mengurangkan risiko tergelincir dan pergerakan yang tidak normal.
Strategi penyambungan SMA yang dipertingkatkan ADX yang mengikuti dinamik adalah sistem perdagangan lengkap yang menggabungkan analisis teknikal dan pengurusan risiko. Dengan menggabungkan isyarat penyambungan SMA sederhana dengan pengesahan trend ADX, strategi ini dapat mengenal pasti peluang perdagangan yang menguntungkan dengan lebih tepat.
Walaupun terdapat beberapa batasan, seperti pengurusan risiko titik tetap dan analisis kerangka masa tunggal, masalah ini dapat diselesaikan melalui arah pengoptimuman yang dikemukakan dalam artikel ini. Dengan memperkenalkan pengurusan risiko dinamik berasaskan ATR, analisis kerangka masa berbilang dan pengenalan keadaan pasaran, strategi ini berpotensi menjadi sistem perdagangan yang lebih mantap dan beradaptasi.
Pada akhirnya, kejayaan strategi ini bergantung kepada penyesuaian parameter yang halus oleh peniaga dan kesesuaian mereka dengan pasaran dan jangka masa tertentu. Ia disyorkan untuk melakukan pengesanan dan simulasi perdagangan yang mencukupi sebelum berdagang secara langsung untuk mengesahkan bagaimana strategi ini berfungsi dalam keadaan pasaran yang berbeza.
/*backtest
start: 2024-08-04 00:00:00
end: 2025-08-02 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("safa bot alert", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === INPUTS ===
smaLength = input.int(3, title="SMA Length")
tpPoints = input.float(80, title="Take Profit (Points)")
slPoints = input.float(35, title="Stop Loss (Points)")
trailPoints = input.float(15, title="Trailing Stop (Points)")
sessionCloseHour = input.int(16, "Session Close Hour (24h)")
sessionCloseMinute = input.int(0, "Session Close Minute")
// === ADX INPUTS ===
adxLength = input.int(15, title="ADX Length")
adxThreshold = input.float(15, title="Minimum ADX to Trade")
// === INDICATORS ===
sma = ta.sma(close, smaLength)
plot(sma, title="3 SMA", color=color.orange)
// === MANUAL ADX CALCULATION ===
upMove = high - high[1]
downMove = low[1] - low
plusDM = (upMove > downMove and upMove > 0) ? upMove : 0
minusDM = (downMove > upMove and downMove > 0) ? downMove : 0
trur = ta.rma(ta.tr, adxLength)
plusDI = 100 * ta.rma(plusDM, adxLength) / trur
minusDI = 100 * ta.rma(minusDM, adxLength) / trur
dx = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
adx = ta.rma(dx, adxLength)
plot(adx, title="ADX", color=color.blue)
// === ENTRY CONDITIONS ===
longCondition = ta.crossover(close, sma) and adx > adxThreshold
shortCondition = ta.crossunder(close, sma) and adx > adxThreshold
// === STRATEGY EXECUTION ===
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Exit", from_entry="Long", limit=close + tpPoints, stop=close - slPoints, trail_points=trailPoints, trail_offset=trailPoints)
// FIRE ALERT
string alertMsg = '{"signal":"BUY","entry":' + str.tostring(close) +
',"SL":' + str.tostring(close - slPoints) +
',"TP":' + str.tostring(close + tpPoints) +
',"time":"' + str.tostring(time) + '"}'
alert(alertMsg, alert.freq_once_per_bar_close)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Exit", from_entry="Short", limit=close - tpPoints, stop=close + slPoints, trail_points=trailPoints, trail_offset=trailPoints)
// FIRE ALERT
string alertMsg = '{"signal":"SELL","entry":' + str.tostring(close) +
',"SL":' + str.tostring(close + slPoints) +
',"TP":' + str.tostring(close - tpPoints) +
',"time":"' + str.tostring(time) + '"}'
alert(alertMsg, alert.freq_once_per_bar_close)
// === FORCE EXIT AT SESSION CLOSE ===
sessionCloseTime = (hour == sessionCloseHour and minute == sessionCloseMinute)
if (sessionCloseTime)
strategy.close_all(comment="Session Close")
// === NO-REPAINT FUNCTION ===
reso_no_repaint(exp, use, res) =>
use ? request.security(syminfo.tickerid, res, exp[1], lookahead=barmerge.lookahead_off, gaps=barmerge.gaps_on)[0] : exp