Strategi ini menggabungkan PSAR untuk menilai trend harga, ADX untuk menilai kekuatan trend, RSI untuk mencari zon overbought dan oversold, dan CMF untuk menilai aliran dana untuk membina strategi perdagangan kuantitatif trend intraday yang mengikuti sepanjang kitaran. Ia dapat dengan cepat mencari arah trend baru apabila harga keluar dari penyatuan dan membentuk trend baru, dan terus mengesan trend selepas itu.
Peraturan utama strategi ini ialah:
Gunakan penunjuk PSAR untuk menilai sama ada harga berada dalam trend menaik.
Memerlukan RSI berada di atas titik tengah 50 untuk menapis pecah palsu yang berlaku di zon oversold.
Memerlukan ADX berada di atas garis EMA, yang menunjukkan isyarat yang mampan dalam analisis trend.
Memerlukan CMF lebih besar daripada 0, menilai peningkatan dana yang mengalir.
Isyarat beli dihasilkan apabila semua empat syarat di atas dipenuhi. Syarat jual berlaku apabila PSAR meningkat di atas harga, RSI jatuh di bawah 50, ADX jatuh di bawah EMA dan CMF menjadi kurang daripada 0.
Strategi ini secara komprehensif mempertimbangkan arah trend harga, kekuatan trend, keadaan overbought / oversold dan aliran dana semasa menubuhkan peraturan dagangan. Dengan menetapkan peraturan logik yang ketat semasa menghasilkan isyarat dagangan, pecah palsu dapat disaring dengan berkesan dan arah trend yang mampan yang berkemungkinan tinggi dapat ditangkap.
Kelebihan utama strategi ini termasuk:
Menggabungkan beberapa penunjuk dalam menetapkan peraturan dagangan dapat dengan berkesan mencegah pecah palsu dan memastikan kualiti isyarat.
Mengesan arah trend yang sedang berkembang dengan cepat dan mengesan membolehkan menangkap kebanyakan keuntungan trend.
Menetapkan keadaan penapisan proses dapat mengawal risiko dengan berkesan dan memastikan keberkesanan penjejakan.
Mempertimbangkan kekuatan trend membantu mengelakkan kesesakan julat perdagangan.
Risiko utama strategi ini termasuk:
Pengumpulan strategi tunggal menimbulkan risiko portfolio, yang memerlukan saiz kedudukan yang sesuai.
Memantau dengan teliti perubahan keadaan penapisan semasa pengesanan untuk mengelakkan kehilangan apabila dibatalkan.
Strategi jangka menengah / jangka panjang ini boleh terganggu jangka pendek oleh turun naik dan menimbulkan risiko stop loss.
Langkah pengurusan risiko yang sepadan termasuk: mengoptimumkan peraturan saiz kedudukan, menetapkan garis amaran risiko dan memperluaskan jarak berhenti dll.
Ruang pengoptimuman termasuk:
Pengoptimuman parameter melalui pembelajaran mesin yang diberikan tetapan subjektif semasa.
Tambah modul pengukuran kedudukan yang secara dinamik mengukuran berdasarkan risiko.
Mempertingkatkan mekanisme hentian, contohnya hentian berturut-turut, hentian masa atau hentian pecah.
Strategi yang menggabungkan penunjuk ini terbukti berkesan dalam mencari dan mengesan trend yang baru lahir dengan cepat, mengesahkan perdagangan kuantitatif berdasarkan pelbagai dimensi seperti trend dan dana. Sebagai asas, ia boleh diindeks merentasi kitaran. Dengan penyesuaian parameter dan peningkatan modular, ia juga boleh menjadi strategi jangka menengah / panjang yang stabil.
/*backtest start: 2023-11-14 00:00:00 end: 2023-12-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("psar+ adx + cmf + rsi Strategy", overlay=true,initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent , commission_value=0.1 ) start = input(1.02) increment = input(1.02) maximum = input(1.2) var bool uptrend = na var float EP = na var float SAR = na var float AF = start var float nextBarSAR = na if bar_index > 0 firstTrendBar = false SAR := nextBarSAR if bar_index == 1 float prevSAR = na float prevEP = na lowPrev = low[1] highPrev = high[1] closeCur = close closePrev = close[1] if closeCur > closePrev uptrend := true EP := high prevSAR := lowPrev prevEP := high else uptrend := false EP := low prevSAR := highPrev prevEP := low firstTrendBar := true SAR := prevSAR + start * (prevEP - prevSAR) if uptrend if SAR > low firstTrendBar := true uptrend := false SAR := max(EP, high) EP := low AF := start else if SAR < high firstTrendBar := true uptrend := true SAR := min(EP, low) EP := high AF := start if not firstTrendBar if uptrend if high > EP EP := high AF := min(AF + increment, maximum) else if low < EP EP := low AF := min(AF + increment, maximum) if uptrend SAR := min(SAR, low[1]) if bar_index > 1 SAR := min(SAR, low[2]) else SAR := max(SAR, high[1]) if bar_index > 1 SAR := max(SAR, high[2]) nextBarSAR := SAR + AF * (EP - SAR) //rsi strat length = input( 50 ) middle_RSI=input(49) price = close vrsi = rsi(price, length) //cmf lengthCMF = input(20, minval=1) ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume mf = sum(ad, lengthCMF) / sum(volume, lengthCMF) //ADX adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") dirmov(len) => up = change(high) down = -change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = rma(tr, len) plus = fixnan(100 * rma(plusDM, len) / truerange) minus = fixnan(100 * rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) ema_length=input(10) ema_sig= ema(sig,ema_length) long = not uptrend and vrsi > middle_RSI and sig > ema_sig and mf>0 short= uptrend and vrsi < middle_RSI and sig<ema_sig and mf<0 strategy.entry("long",1,when=long) strategy.close('long',when=short)