
Strategi pengesanan trend berlapis-lapis adalah sistem perdagangan berdasarkan moving average ((EMA) pelbagai indeks untuk mengenal pasti trend pasaran dan menentukan masa masuk dengan membina “awan” dari empat kitaran yang berbeza. Gagasan utama strategi ini adalah memasuki pasaran melalui isyarat persilangan moving average pada peringkat awal trend baru, dan menggunakan mekanisme hentian kerugian dinamik untuk melindungi keuntungan. Strategi ini menggunakan mekanisme pengesahan trend berlapis-lapis untuk menentukan arah trend utama melalui EMA (340 dan 500) jangka panjang, EMA (50 dan 120) jangka menengah untuk mengenal pasti titik perubahan trend, dan EMA (89 dan 9) jangka pendek untuk menentukan masa keluar.
Strategi ini berdasarkan kepada beberapa elemen utama:
Sistem Pengiktirafan Trend:
Syarat penyertaan:
Mekanisme pengurusan risiko dan penarikan diri:
Pentadbiran status transaksi:
Dengan mengkaji kod strategi ini secara mendalam, beberapa kelebihan yang ketara dapat diringkaskan:
Mekanisme pengesahan berbilang: Menggunakan kombinasi silang EMA dari pelbagai kitaran, mengurangkan risiko penembusan palsu. Kualiti isyarat meningkat dengan ketara dengan menuntut trend jangka panjang selaras dengan arah trend jangka menengah.
Capture trend awal: Strategi ini memberi tumpuan kepada kemasukan awal dalam pembentukan trend, dan bukan kemudian dalam trend, meningkatkan ruang potensi pendapatan. Terutama dengan pertimbangan zon yang berkesan dalam reka bentuk, dapat memilih titik masuk yang lebih berpotensi.
Pengurusan risiko dinamik: Pendahuluan menggunakan dana perlindungan kerugian tetap, kemudian beralih ke pemantauan berhenti untuk mengunci keuntungan, yang mencerminkan pemikiran kawalan risiko yang baik. Terutama apabila trend kuat ((15 garis K berturut-turut kekal di atas / di bawah EMA8)), akan ditingkatkan ke EMA9 yang lebih ketat, meningkatkan kecekapan dana.
Optimasi kesinambungan trend: Strategi ini tidak akan keluar dengan segera kerana terdapat isyarat pembalikan, tetapi bergantung pada mekanisme pengendalian kerugian untuk menguruskan risiko, menghormati sepenuhnya kesinambungan trend, dan mengelakkan keluar terlalu awal dari trend yang kuat.
Parameter boleh disesuaikan: parameter utama seperti kitaran EMA, peratusan stop loss, masa pengaktifan stop loss dan sebagainya boleh disesuaikan dengan keadaan pasaran dan jenis perdagangan yang berbeza.
Walaupun strategi ini direka dengan baik, terdapat risiko yang berpotensi:
Performa buruk pasaran goyah: Sebagai strategi pengesanan trend, ia mudah menghasilkan isyarat palsu yang kerap dalam keadaan goyah horizontal, yang menyebabkan kerugian berturut-turut. Penyelesaian adalah dengan menambah syarat penapisan kekuatan trend atau menangguhkan perdagangan apabila ia dikenali sebagai pasaran goyah.
Risiko ketinggalan: Semua sistem berdasarkan purata bergerak mempunyai ketinggalan tertentu, yang boleh menyebabkan tidak masuk atau keluar pada waktu yang tepat di dekat titik peralihan trend. Ini dapat dikurangkan dengan memperkenalkan indikator momentum atau indikator kadar turun naik sebagai penilaian tambahan.
Sensitiviti parameter: Strategi menggunakan beberapa parameter kitaran EMA, pengoptimuman berlebihan boleh menyebabkan masalah kesesuaian kurva. Adalah disyorkan untuk mengesahkan kestabilan parameter melalui pengulangan pada tempoh masa yang berbeza, untuk mengelakkan kesesuaian berlebihan dengan keadaan pasaran tertentu.
Risiko melangkau: Pasar melangkau secara besar-besaran boleh menyebabkan hentian tidak berkesan, harga hentian yang sebenarnya jauh lebih rendah daripada (banyak kepala) atau jauh lebih tinggi daripada (hulu kepala) yang dijangkakan. Anda boleh mempertimbangkan untuk menggunakan perlindungan pilihan atau menetapkan had kerugian maksimum yang boleh diterima.
Kelemahan pengurusan wang: Strategi secara lalai menggunakan 100% dana akaun untuk berdagang, tidak menyesuaikan saiz kedudukan mengikut turun naik, mungkin menghadapi risiko yang terlalu besar di pasaran yang bergelombang tinggi. Dianjurkan untuk memperkenalkan pengurusan kedudukan dinamik berdasarkan ATR atau turun naik.
Berdasarkan analisis mendalam kod, strategi ini boleh dioptimumkan dalam beberapa arah:
Penapisan Kekuatan Trend: Pengenalan ADX atau penunjuk yang serupa untuk menilai kekuatan trend, masuk hanya apabila trend jelas, untuk mengelakkan isyarat palsu pasaran yang bergolak. Pengoptimuman ini dapat meningkatkan kualiti isyarat dengan ketara, kerana strategi semasa hanya bergantung pada EMA untuk menilai trend, kekurangan penilaian kekuatan trend.
Pengurusan kedudukan dinamik: Mengubah bahagian dana untuk setiap perdagangan berdasarkan ATR atau kadar turun naik sejarah, mengurangkan kedudukan di pasaran yang bergelombang tinggi dan meningkatkan kedudukan di pasaran yang bergelombang rendah. Ini dapat mengimbangi nisbah risiko dan keuntungan, meningkatkan kelancaran kurva dana.
Penapisan masa: sertakan penapisan tetingkap masa perdagangan untuk mengelakkan tempoh turun naik atau turun naik yang rendah. Terutama untuk beberapa jenis perdagangan, mungkin ada tempoh masa tertentu yang jelas lebih baik.
Pengoptimuman Stop Loss: Strategi semasa mungkin terlalu radikal untuk melompat terus dari EMA500 ke EMA9 sebagai garis stop apabila syarat dipenuhi. Anda boleh mempertimbangkan untuk merancang mekanisme pertukaran garis stop yang lebih lancar, seperti menyesuaikan kedudukan garis stop secara dinamik berdasarkan harga dan jarak yang berbeza dari EMA.
Pemprosesan isyarat pembalikan: Apabila terdapat isyarat pembalikan yang kuat (seperti perubahan arah awan 4), anda boleh mempertimbangkan untuk melonggarkan kedudukan lebih awal dan membuka posisi secara terbalik, dan bukannya menunggu penangguhan. Ini dapat menyesuaikan arah kedudukan dengan lebih cepat apabila terdapat perubahan trend yang besar.
Analisis pelbagai bingkai masa: memperkenalkan penghakiman trend pada bingkai masa yang lebih tinggi sebagai syarat penapisan tambahan, masuk hanya apabila trend pelbagai bingkai masa adalah sama, meningkatkan kualiti isyarat.
Strategi penjejakan trend berlapis-lapis adalah sistem penjejakan trend yang direka dengan baik, yang mengesahkan arah trend melalui EMA berlapis-lapis dan memasuki pasaran lebih awal dalam trend, digabungkan dengan mekanisme menghentikan kerugian yang dinamik untuk menguruskan risiko dan melindungi keuntungan. Kelebihan terbesar strategi ini adalah dengan mekanisme pengesahan berlapis dan pengurusan berhenti yang pintar, yang dapat mencapai prestasi yang baik dalam pasaran yang sedang tren.
Walau bagaimanapun, strategi ini mungkin tidak berfungsi dengan baik dalam pasaran yang bergolak, dan terdapat kelemahan yang wujud seperti sensitiviti parameter dan keterlambatan. Dengan memperkenalkan langkah-langkah pengoptimuman seperti penapisan kekuatan trend, pengurusan kedudukan posisi dinamik, analisis jangka masa berganda, strategi ini dapat meningkatkan lagi kecergasan dan adaptasi.
Secara keseluruhannya, ini adalah strategi pengesanan trend yang jelas dan logik yang ketat, yang sesuai untuk digunakan oleh peniaga jangka menengah dan panjang dalam keadaan pasaran yang jelas. Dengan penyesuaian dan pengoptimuman parameter yang sesuai, strategi ini berpotensi menjadi komponen sistem perdagangan yang boleh dipercayai.
/*backtest
start: 2024-05-29 00:00:00
end: 2025-05-28 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Ripster Cloud Trend Strategy - Parameterstyrd", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === 🔧 Inputs ===
ema50_len = input.int(50, title="EMA 50")
ema120_len = input.int(120, title="EMA 120")
ema180_len = input.int(180, title="EMA 180")
ema340_len = input.int(340, title="EMA 340")
ema500_len = input.int(500, title="EMA 500")
ema8_len = input.int(8, title="EMA 8")
ema9_len = input.int(9, title="EMA 9")
bars_for_trailing_sl = input.int(20, title="Bars innan trailing SL aktiveras")
bars_over_ema8_req = input.int(15, title="Antal bars över EMA 8 för SL till EMA 9")
sl_percent = input.float(1.0, title="Initial SL (% från entry)", step=0.1)
// === 📈 EMA-beräkningar ===
ema50 = ta.ema(close, ema50_len)
ema120 = ta.ema(close, ema120_len)
ema180 = ta.ema(close, ema180_len)
ema340 = ta.ema(close, ema340_len)
ema500 = ta.ema(close, ema500_len)
ema8 = ta.ema(close, ema8_len)
ema9 = ta.ema(close, ema9_len)
// === 📊 Trendfilter ===
cloud4_up = ema340 > ema500
cloud4_down = ema340 < ema500
cloud3_cross_up = ta.crossover(ema50, ema120)
cloud3_cross_down = ta.crossunder(ema50, ema120)
valid_long_cross = (ema180 < ema500) or (ema50 >= ema500 and ema50 <= ema340)
valid_short_cross = (ema50 > ema500) or (ema50 <= ema500 and ema50 >= ema340)
long_condition = cloud4_up and cloud3_cross_up and valid_long_cross
short_condition = cloud4_down and cloud3_cross_down and valid_short_cross
// === 🔁 Trade State ===
var bool inTrade = false
var float entryPrice = na
var float stopLoss = na
var int barsSinceEntry = 0
// === 🎯 Entry ===
if not inTrade
if long_condition
strategy.entry("Long", strategy.long)
entryPrice := close
stopLoss := close * (1 - sl_percent / 100)
barsSinceEntry := 0
inTrade := true
else if short_condition
strategy.entry("Short", strategy.short)
entryPrice := close
stopLoss := close * (1 + sl_percent / 100)
barsSinceEntry := 0
inTrade := true
/// === 🛡️ Stop Loss & Exit ===
var bool useEMA9 = false
if inTrade
barsSinceEntry += 1
if barsSinceEntry >= bars_for_trailing_sl
if strategy.position_size > 0
// === LONG: kontrollera 15 candles över EMA 8 ===
if not useEMA9
allAbove = true
for i = 0 to (bars_over_ema8_req - 1)
if close[i] < ema8[i]
allAbove := false
if allAbove
useEMA9 := true
stopLoss := useEMA9 ? ema9 : ema500
else if strategy.position_size < 0
// === SHORT: kontrollera 15 candles under EMA 8 ===
if not useEMA9
allBelow = true
for i = 0 to (bars_over_ema8_req - 1)
if close[i] > ema8[i]
allBelow := false
if allBelow
useEMA9 := true
stopLoss := useEMA9 ? ema9 : ema500
// === EXIT LOGIK ===
if strategy.position_size > 0 and close < stopLoss
strategy.close("Long")
inTrade := false
stopLoss := na
entryPrice := na
barsSinceEntry := 0
useEMA9 := false
if strategy.position_size < 0 and close > stopLoss
strategy.close("Short")
inTrade := false
stopLoss := na
entryPrice := na
barsSinceEntry := 0
useEMA9 := false
// === 📊 Plotta EMA:er & SL ===
plot(ema50, color=color.yellow, title="EMA 50")
plot(ema120, color=color.orange, title="EMA 120")
plot(ema180, color=color.teal, title="EMA 180")
plot(ema340, color=color.green, title="EMA 340")
plot(ema500, color=color.red, title="EMA 500")
plot(ema8, color=color.fuchsia, title="EMA 8")
plot(ema9, color=color.aqua, title="EMA 9")
plot(inTrade ? stopLoss : na, title="Stop Loss", color=color.white, linewidth=2)