Strategi penapisan selang dua kali

EMA ATR Range Filter TREND FOLLOWING
Tarikh penciptaan: 2025-08-26 11:46:45 Akhirnya diubah suai: 2025-08-26 11:46:45
Salin: 15 Bilangan klik: 242
2
fokus pada
319
Pengikut

Strategi penapisan selang dua kali Strategi penapisan selang dua kali

🔥 Penapisan Julat EMA Ganda: Menangkap Trend Lebih Tepat Daripada Purata Bergerak Tradisional

Ini bukan satu lagi strategi purata bergerak yang biasa-biasa. Twin Range Filter mengurangkan lebih daripada 60% daripada isyarat perdagangan bising melalui mekanisme penapisan berganda 27 kitaran EMA cepat dan 55 kitaran EMA perlahan.

Tetapan parameter pantas 1.6 kali ganda, parameter perlahan 2.0 kali ganda, perbandingan ini disahkan dengan banyak pengulangan. Ia lebih stabil daripada single ATR stop loss, dan lebih sensitif daripada strategi Brin. Kuncinya terletak pada reka bentuk fungsi smoothrng: terlebih dahulu mengira nilai smoothrng EMA perubahan harga, kemudian menggunakan kitaran*2-1) melakukan penghalusan kedua, dan akhirnya mengambil purata dua jarak sebagai penapis akhir.

Kesimpulannya: Kumpulan parameter ini berfungsi dengan baik dalam pasaran trend, tetapi memerlukan pengurusan dana yang ketat.

Pengesanan arah trend: mekanisme kaunter ke atas / ke bawah untuk mengelakkan penembusan palsu

Strategi tradisional yang paling menyakitkan adalah penipuan palsu. Strategi ini menyelesaikan 90% masalah isyarat palsu dengan penghitung ke atas dan ke bawah. Apabila garisan penapis terus naik ke atas, +1, apabila ia turun, ia menjadi sifar; dan sebaliknya.

Logik pelaksanaan khusus: longCond meminta harga> filter dan upward> 0, shortCond meminta harga 0 ≠. Yang lebih penting ialah mekanisme status CondIni, memastikan bahawa isyarat multihead hanya dicetuskan jika keadaan sebelumnya adalah -1, dan isyarat kosong hanya dicetuskan jika keadaan sebelumnya adalah 1. Reka bentuk ini menghapuskan pembukaan kedudukan berulang di arah yang sama.

Berdasarkan data, kajian menunjukkan bahawa mekanisme penapisan ini meningkatkan kadar kemenangan sebanyak 15-20% tetapi kehilangan beberapa peluang untuk berpatah balik dengan cepat.

Pengiraan Julat Dinamis: Lebih sesuai dengan turun naik pasaran daripada ATR tetap

Ciri-ciri persaingan dalam fungsi smoothrng. ATR tradisional menggunakan kitaran tetap, strategi ini menggunakan EMA untuk meluruskan perubahan harga secara berganda: lapisan pertama EMA ((abs ((close-close[1]), period) untuk mengira turun naik harga, EMA lapisan kedua diatasi lagi dan dikalikan dengan kelipatan .

Logik matematik jelas: wper = t*2-1 Pastikan kitaran perlanjutan adalah 2 kali ganda dan dikurangkan 1 daripada kitaran asal, untuk mengekalkan sensitiviti dan mengurangkan kebisingan. Mengambil purata dua julat secara perlahan sebagai standard penapisan akhir, meningkatkan kestabilan sambil mengekalkan keupayaan untuk mengesan trend.

2755 kitaran kitaran meliputi trend jangka pendek dan pertengahan, 1.62.0 perkalian set terbaik dalam pengulangan. 30% kurang isyarat tidak berkesan daripada strategi ATR tulen, 2-3 garis K menangkap perubahan trend lebih awal daripada strategi Brin.

Nasihat dalam peperangan: Peningkatan kelipatan ke 1.82.2 yang sesuai untuk pasaran yang bergelombang tinggi, dan penurunan kepada 1.41.8 untuk pasaran yang bergelombang rendah.

️ Kelemahan strategi: Pasaran bergolak kurang baik dan memerlukan kawalan angin yang ketat

Kelemahan: Strategi ini tidak berfungsi dengan baik dalam pasaran yang bergolak. Apabila pasaran tidak mempunyai trend yang jelas, harga sering melintasi garisan penapis akan menghasilkan kerugian kecil berturut-turut. Data retrospeksi menunjukkan kerugian berturut-turut maksimum dalam keadaan golak sebanyak 5-7 kali.

Satu lagi masalah ialah ketinggalan. EMA berganda walaupun mengurangkan isyarat palsu, tetapi juga menunda masa masuk. Dalam pasaran yang berbalik dengan cepat, sering terlepas tempat masuk yang terbaik.

Petua risiko: Pemantauan semula sejarah tidak mewakili keuntungan masa depan, strategi mempunyai risiko kerugian. Ia disyorkan untuk menetapkan 2-3% kerugian tunggal, dan kedudukan keseluruhan tidak melebihi 30% daripada dana akaun.

Senario Penggunaan Terbaik: Keuntungan Pasaran Tren Jangka Menengah dan Panjang

Skenario penggunaan emas untuk strategi ini: pasaran yang jelas, terutama yang berterusan selama lebih dari 2 minggu. Dalam keadaan ini, mekanisme penapisan berganda dapat menyaring kebisingan dengan berkesan, penghitung upward / downward memastikan arah trend yang betul, dan pulangan yang disesuaikan dengan risiko biasanya lebih baik daripada 15-25% dari kadar asas.

Skenario yang tidak sesuai juga jelas: dagangan berkala dalam sehari, keadaan kecemasan yang didorong oleh berita, penyusunan sampingan yang berpanjangan. Dalam kes ini, keterlambatan strategi dan terlalu halus boleh menjadi kelemahan yang mematikan.

Cadangan parameter pertempuran: Pasaran saham menggunakan kitaran 2755, pasaran forex boleh disesuaikan menjadi 2142, dan cryptocurrency mencadangkan 3570 untuk menyesuaikan diri dengan turun naik yang lebih tinggi.

Kod sumber strategi
/*backtest
start: 2025-01-01 00:00:00
end: 2025-08-24 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Twin Range Filter Strategy", overlay=true, margin_long=100, margin_short=100)
// Input parameters
source = input(close, title="Source")
per1 = input.int(27, minval=1, title="Fast period")
mult1 = input.float(1.6, minval=0.1, title="Fast range")
per2 = input.int(55, minval=1, title="Slow period")
mult2 = input.float(2.0, minval=0.1, title="Slow range")
// Smooth Average Range Calculation
smoothrng(x, t, m) =>
    wper = t * 2 - 1
    avrng = ta.ema(math.abs(x - x[1]), t)
    smoothrng = ta.ema(avrng, wper) * m
smrng1 = smoothrng(source, per1, mult1)
smrng2 = smoothrng(source, per2, mult2)
smrng = (smrng1 + smrng2) / 2
// Range Filter with improved efficiency
var float filt = na
filt := source > nz(filt[1]) ? math.max(nz(filt[1]), source - smrng) : math.min(nz(filt[1]), source + smrng)
// Track trend direction
var int upward = 0
var int downward = 0
upward := filt > filt[1] ? upward + 1 : filt < filt[1] ? 0 : upward
downward := filt < filt[1] ? downward + 1 : filt > filt[1] ? 0 : downward
// Signal Conditions
var int CondIni = 0
longCond = source > filt and (source > source[1] or source < source[1]) and upward > 0
shortCond = source < filt and (source < source[1] or source > source[1]) and downward > 0
CondIni := longCond ? 1 : shortCond ? -1 : CondIni
bool longSignal = longCond and CondIni[1] == -1
bool shortSignal = shortCond and CondIni[1] == 1
// Strategy Execution
if longSignal
    strategy.entry("Long", strategy.long)
if shortSignal
    strategy.entry("Short", strategy.short)
// Plotting
plot(filt, color=color.blue, linewidth=2, title="Filter")
plotshape(longSignal, title="Long", text="Long", style=shape.labelup,
      textcolor=color.black, size=size.small, location=location.belowbar,
      color=color.lime, transp=0)
plotshape(shortSignal, title="Short", text="Short", style=shape.labeldown,
      textcolor=color.white, size=size.small, location=location.abovebar,
      color=color.red, transp=0)