
Strategi perdagangan kuantitatif yang dikenali sebagai “Multi-Timeframe Dynamic Trend Judging System” adalah sistem komprehensif yang menggabungkan pelbagai petunjuk teknikal, yang menggabungkan beberapa elemen seperti indeks bergerak rata-rata ((EMA) silang, indeks relatif kuat ((RSI), purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata purata
Prinsip teras strategi ini adalah berdasarkan pengesahan serentak indikator pasaran bertingkat-tingkat. Pertama, sistem mengira purata bergerak indeks untuk dua tempoh yang berbeza, iaitu EMA jangka pendek (9) dan EMA jangka panjang (21), untuk mengenal pasti arah trend dan titik perubahan trend yang berpotensi. Kedua, sistem memperoleh data RSI (14) dari jangka masa 15 minit, memperkenalkan analisis jangka masa untuk mengesahkan status pergerakan harga. Ketiga, sistem menggunakan VWAP dari jangka masa semasa sebagai penunjuk rujukan untuk penyertaan dana institusi, dan menetapkan margin perbezaan antara VWAP dan garis purata (~ 0.1%) untuk memfilter isyarat perdagangan.
Khususnya, syarat kemasukan short term perlu dipenuhi pada masa yang sama: EMA jangka pendek di bawah EMA jangka panjang ((kecenderungan turun naik), 15 minit RSI lebih besar daripada 30 ((tidak oversold), VWAP jauh di bawah dua EMA ((sekurang-kurangnya 0.1%), yang menunjukkan terdapat tekanan jual dan sentimen turun naik di institusi. Sementara itu, syarat kemasukan ganda hanya memerlukan 15 minit RSI di bawah 30 ((keadaan oversold), belum menyertai penapis EMA dan VWAP.
Di samping itu, strategi ini juga memperkenalkan penapis ADX pilihan, dengan mengira nilai ADX secara manual (panjang default 14) dan menetapkan had minimum (default 20) untuk memastikan perdagangan hanya dalam trend yang jelas. Pengguna boleh mengaktifkan atau menonaktifkan penapis ADX, meningkatkan fleksibiliti strategi.
Pengesahan serentakGabungan empat penunjuk EMA crossover, momentum RSI, aliran dana institusi VWAP dan kekuatan trend ADX, membentuk mekanisme pengesahan isyarat perdagangan bertingkat, meningkatkan kebolehpercayaan isyarat dengan ketara.
Analisis pelbagai kerangka masaDengan memperkenalkan data RSI pada bingkai waktu 15 minit, strategi ini dapat menilai pergerakan pasaran dari sudut yang lebih besar, mengurangkan titik buta yang mungkin disebabkan oleh analisis bingkai masa tunggal.
Perspektif kewangan institusiMenggunakan jurang antara VWAP dan EMA sebagai penunjuk penyertaan dana institusi, perspektif institusi ini membolehkan strategi untuk lebih mengenali tekanan dan kawasan sokongan pasaran yang sebenar.
Mod operasi yang fleksibelDengan parameter tradeDirection, pengguna boleh memilih hanya melakukan lebih, hanya melakukan lebih atau berdagang dua hala mengikut keadaan pasaran atau keutamaan peribadi, tanpa perlu mengekalkan pelbagai versi strategi.
Penapis trend dinamikFilter ADX pilihan membantu strategi untuk berdagang hanya dalam trend yang jelas, secara berkesan mengurangkan isyarat palsu dalam pasaran goyah, sambil mengekalkan fleksibiliti untuk menonaktifkan penapis ini.
Pengurusan risiko bersepaduStrategi ini mempunyai mekanisme hentian dan hentian dalaman (papan harga tetap), yang digabungkan dengan RSI overbought dan oversold sebagai isyarat keluar, membentuk gelung penutupan perdagangan yang lengkap.
Kode yang cekapStrategi: Struktur kod jelas, modular logik, proses pengiraan yang cekap, mudah untuk dijaga dan dioptimumkan lagi.
Syarat kemasukan yang tidak sempurnaLogik overdo strategi semasa hanya berdasarkan keadaan oversold RSI < 30, kekurangan penyaringan EMA dan VWAP yang boleh menyebabkan masuk terlalu awal atau sering melakukan overdo dalam trend menurun yang berterusan, meningkatkan risiko kerugian.
Tetapan penghentian kerosakan tetapStrategi menggunakan penutupan dinamik berdasarkan kadar turun naik atau peratusan dan bukannya penutupan dinamik berdasarkan kadar turun naik yang tetap ((100 stop, 200 stop). Ia mungkin tidak fleksibel dalam persekitaran turun naik yang berbeza. Ia mungkin terlalu longgar dan terlalu ketat dalam tempoh turun naik yang tinggi.
Kawalan frekuensi tanpa urus niagaKekurangan strategi. Opentrades == 0 Keputusan boleh menyebabkan masuk berulang apabila isyarat dihidupkan secara berturut-turut, membentuk kedudukan tumpang tindih, secara tidak sengaja meningkatkan celah risiko.
Kompleksiti pengiraan ADXPerhitungan ADX secara manual meningkatkan kerumitan kod, walaupun berfungsi dengan betul, tetapi kurang dapat dijaga, jika terdapat penyimpangan perhitungan yang mungkin menyebabkan penilaian trend yang salah.
Jarak VWAP tetap: 0.1% margin VWAP tetap mungkin tidak sesuai untuk semua keadaan pasaran, mungkin terlalu longgar dalam pasaran yang bergelombang tinggi, mungkin terlalu ketat dalam pasaran yang bergelombang rendah.
Kurangnya analisis sensitiviti pengesanan semula: Kod tidak menunjukkan hasil pengoptimuman parameter atau analisis sensitiviti, tidak dapat menentukan sama ada kombinasi parameter semasa (seperti EMA 9⁄21, RSI 14, ADX 14⁄20) adalah yang terbaik.
Mungkin ada kelewatan masaPermintaan data dalam bingkai masa ((request.security) mungkin memperkenalkan kelewatan data dalam beberapa kes, terutamanya dalam pasaran yang berubah dengan cepat, yang mempengaruhi ketepatan masa transaksi.
Memperbaiki logik berbilang entriUntuk menambah imej untuk pelbagai strategi, syarat VWAP dan penapisan silang EMA, iaitu memerlukan VWAP yang jauh lebih tinggi daripada dua EMA (seperti 0.1%) dan EMA jangka pendek untuk memakai EMA jangka panjang, untuk membuat simetri logik multirumah, meningkatkan kualiti isyarat untuk pelbagai.
Tambah kawalan frekuensi transaksiUntuk mengelakkan penumpukan kedudukan yang disebabkan oleh isyarat berturut-turut, lebih baik mengawal celah risiko.
Tetapan Henti Kerosakan Dinamik: Berdasarkan purata gelombang sebenar ((ATR) penyesuaian dinamik tahap hentian dan hentian, menjadikan pengurusan risiko lebih sesuai dengan keadaan pasaran yang bergolak semasa, menggantikan tetapan titik tetap semasa.
Mengoptimumkan pengiraan ADXPertimbangkan untuk menggunakan fungsi ta.adx ((() yang terbina dalam TradingView untuk menggantikan pengiraan manual, mempermudahkan kod dan meningkatkan pemeliharaan, sambil menambah penghakiman arah ADX (((+hubungan DI dengan -DI) untuk lebih menyempurnakan arah trend.
Dinamik VWAP jurang nilai terendah: Reka bentuk had jurang VWAP sebagai parameter dinamik berdasarkan turun naik pasaran, misalnya berkaitan dengan ATR, membolehkan syarat penapisan menyesuaikan diri dengan keadaan pasaran yang berbeza.
Tambah penapis masa transaksiMemperkenalkan kawalan masa perdagangan, mengelakkan masa kecairan rendah atau pengumuman berita utama, mengurangkan risiko tergelincir dan turun naik yang tidak dijangka.
Keserasian trend pelbagai kerangka masaPertimbangkan untuk menambah kerangka masa yang lebih tinggi (seperti 1 jam atau 4 jam) untuk menentukan arah trend, dan hanya berdagang apabila trend bersesuaian dalam beberapa kerangka masa, untuk mengurangkan lebih banyak isyarat palsu.
Memperkenalkan pengesahan jumlah transaksiMeningkatkan pengesahan indikator jumlah dagangan, seperti permintaan untuk jumlah dagangan pada masa EMA bersilang secara ketara lebih tinggi daripada purata beberapa kitaran sebelumnya, meningkatkan kebolehpercayaan isyarat perubahan trend.
“Multi-Timeframe Dynamic Trend Judging System” adalah strategi kuantitatif yang komprehensif yang menggabungkan pelbagai alat analisis teknikal, yang menyediakan pedagang dengan isyarat masuk dan keluar yang agak dipercayai melalui EMA crossover, dinamika RSI, aliran dana institusi VWAP, dan mekanisme pengesahan pelbagai kekuatan trend ADX. Strategi ini memberi perhatian khusus kepada analisis gabungan mengenai tingkah laku dana institusi dan sentimen runcit, sambil mengambil kira ciri-ciri pemantauan trend dan perdagangan berbalik.
Walaupun strategi menunjukkan prestasi yang baik dalam keserasian dan fleksibiliti pelbagai indikator, masih terdapat masalah seperti ketidakmampuan untuk melakukan banyak syarat, pengurusan risiko tetap, kemungkinan masuk berulang. Prestasi dan kestabilan strategi dijangka meningkat dengan ketara dengan menyempurnakan pelbagai logik, melaksanakan pengurusan risiko dinamik, menambahkan kawalan frekuensi perdagangan, mengoptimumkan pengiraan ADX, merancang nilai terhad VWAP dinamik, memperkenalkan langkah-langkah pengoptimuman seperti penapisan masa perdagangan dan keperluan kesesuaian pelbagai bingkai masa.
Secara keseluruhannya, strategi ini mewakili reka bentuk sistem perdagangan yang komprehensif dan fleksibel, yang memberikan pedagang alat yang secara teori dapat menyesuaikan diri dengan pelbagai persekitaran pasaran dengan mempertimbangkan indikator teknikal, struktur harga, sentimen pasaran dan tingkah laku institusi secara menyeluruh. Dengan pengoptimuman yang disyorkan, strategi ini berpotensi menjadi sistem perdagangan yang lebih sempurna dan cekap.
/*backtest
start: 2024-05-13 00:00:00
end: 2025-05-11 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MinhPhan MA Crossover Strategy RSI 15m + ADX Toggle", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.001)
// === Inputs ===
shortLen = input.int(9, title="Short EMA")
longLen = input.int(21, title="Long EMA")
useAdxFilter = input.bool(true, title="Enable ADX Filter?")
adxLen = input.int(14, title="ADX Length")
adxThresh = input.float(20, title="Min ADX to Trade")
// === EMAs ===
shortMA = ta.ema(close, shortLen)
longMA = ta.ema(close, longLen)
// === VWAP ===
vwap = ta.vwap
// === RSI from 15-minute timeframe ===
rsi_15m = request.security(syminfo.tickerid, "15", ta.rsi(close, 14))
// === Manual ADX Calculation ===
upMove = high - high[1]
downMove = low[1] - low
plusDM = na(upMove) or upMove <= downMove or upMove < 0 ? 0 : upMove
minusDM = na(downMove) or downMove <= upMove or downMove < 0 ? 0 : downMove
tr = math.max(math.max(high - low, math.abs(high - close[1])), math.abs(low - close[1]))
smoothedTR = ta.rma(tr, adxLen)
smoothedPlusDM = ta.rma(plusDM, adxLen)
smoothedMinusDM = ta.rma(minusDM, adxLen)
plusDI = 100 * smoothedPlusDM / smoothedTR
minusDI = 100 * smoothedMinusDM / smoothedTR
dx = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
adx = ta.rma(dx, adxLen)
isTrending = useAdxFilter ? adx > adxThresh : true // ADX toggle logic
// === VWAP Gap Filter ===
gapThreshold = 0.001
vwapBelowEMAs =
(shortMA - vwap) / shortMA > gapThreshold and
(longMA - vwap) / longMA > gapThreshold
// === Direction Control ===
tradeDirection = input.string(title="Trade Direction", defval="Both", options=["Long", "Short", "Both"])
allowLong = tradeDirection == "Long" or tradeDirection == "Both"
allowShort = tradeDirection == "Short" or tradeDirection == "Both"
// === Entry Conditions ===
if (allowLong and rsi_15m < 30 and isTrending)
strategy.entry("Long", strategy.long)
if (allowShort and rsi_15m > 30 and ta.crossunder(shortMA, longMA) and vwapBelowEMAs and isTrending)
strategy.entry("Short", strategy.short)
// === Exit Conditions ===
if (strategy.position_size > 0 and rsi_15m > 70)
strategy.exit("Exit Long", from_entry="Long", loss=100, profit=200)
if (strategy.position_size < 0 and rsi_15m < 30)
strategy.exit("Exit Short", from_entry="Short", loss=100, profit=200)
// === Plots ===
plot(shortMA, color=color.blue, title="Short EMA")
plot(longMA, color=color.red, title="Long EMA")
plot(vwap, title="VWAP", color=color.purple, linewidth=2)
plot(adx, title="ADX", color=color.orange)
hline(adxThresh, "ADX Threshold", color=color.gray, linestyle=hline.style_dashed)