
Strategi ini adalah sistem pengesanan trend berdasarkan purata bergerak indeks (EMA) yang digabungkan dengan analisis sudut kemerosotan dinamik untuk mengesan arah dan titik peralihan trend pasaran dengan tepat. Objektif utama strategi ini adalah untuk meminimumkan isyarat palsu dengan mengenal pasti tiga keadaan pasaran: kenaikan, penurunan dan penyusunan melintang. Sistem ini juga mengintegrasikan modul pengiraan logik grafik yang boleh dipilih, yang menapis bunyi pasaran dengan berkesan, meningkatkan kebolehpercayaan isyarat dalam persekitaran yang bergelombang.
Strategi ini berasaskan kepada tiga elemen teknikal utama untuk klasifikasi pasaran dan penjanaan isyarat:
Kaedah analisis sudut EMAStrategi: Mengira sudut cerun garis EMA, menggunakan fungsi matematikmath.atanMengubah perubahan harga menjadi nilai sudut. Kaedah ini lebih tepat daripada penilaian arah yang mudah dan dapat mengukur kekuatan trend.
Harga berbanding EMASistem memantau sama ada harga berada di atas atau di bawah EMA, yang merupakan penunjuk asas untuk menilai kecenderungan pasaran yang lebih baik atau lebih baik.
Sistem klasifikasi keadaan pasaranBerdasarkan dua faktor di atas, strategi membahagi pasaran kepada tiga keadaan:
Logik penjanaan isyarat dagangan menggunakan struktur dua peringkat:
Strategi ini juga menyediakan pilihan pengiraan skim yang terbina dalam, yang boleh dikira secara dalaman menggunakan logik skim yang lancar semasa menggunakan paparan skim biasa. Kombinasi unik ini mengekalkan kelebihan penapis bunyi skim yang lancar dan juga kemampuan pelaksanaan tepat skim biasa.
Setelah analisis mendalam mengenai kod, strategi ini menunjukkan kelebihan yang ketara:
Penapisan bunyiDengan menggabungkan EMA, analisis kemerosotan dan logik grafik yang boleh dipilih, strategi ini dapat mengurangkan isyarat palsu yang disebabkan oleh bunyi pasaran, terutamanya di pasaran berlawanan arah.
Menukar Trend Capture Precision: Reka bentuk logik isyarat dua lapisan mampu menangkap titik peralihan dari pijakan ke arah trend, serta pembalikan trend langsung, yang memberikan peluang masuk pasaran yang lebih menyeluruh.
Intuisi visualStrategi menggunakan sistem pengekodan warna (hijau, merah, biru) untuk melihat keadaan pasaran, yang membolehkan peniaga menilai keadaan pasaran semasa.
Sangat boleh menyesuaikan diriStrategi ini boleh digunakan dalam pelbagai keadaan pasaran dan tempoh masa, dari perdagangan jangka pendek hingga pelaburan jangka menengah dan panjang.
Parameter ringkas: hanya perlu menyesuaikan EMA panjang dan sama ada untuk mengaktifkan peta licin mengira dua parameter, mengurangkan risiko terlalu optimum dan melengkung sesuai.
Fleksibiliti tinggiStrategi boleh digunakan sebagai sistem perdagangan yang berasingan atau sebagai penapis atau komponen asas strategi perdagangan lain.
Kawalan risiko terbina dalam: Kod mengandungi logik kedudukan rata, kedudukan rata automatik apabila isyarat berbalik, menyediakan mekanisme pengurusan risiko asas.
Walaupun strategi ini direka dengan baik, terdapat risiko dan cabaran yang berpotensi:
Penarikan trend lewatOleh kerana menggunakan EMA sebagai penunjuk utama, strategi mungkin mempunyai beberapa keterlambatan pada peringkat awal trend, menyebabkan kehilangan sebahagian pergerakan harga dalam pasaran yang berbalik dengan cepat. Penyelesaian adalah dengan mempertimbangkan untuk menyesuaikan panjang EMA atau menggabungkan penunjuk yang lebih cepat.
Risiko gegaran lateralDalam pasaran mendatar jangka panjang, walaupun pilihan carta licin diaktifkan, strategi masih boleh menghasilkan perdagangan kerugian kecil berturut-turut. Adalah disyorkan untuk menggunakan atau menambah syarat penapis pengenalan mendatar dalam pasaran yang jelas.
Kepekaan Parameter: Pilihan panjang EMA mempunyai kesan yang ketara terhadap prestasi strategi, pasaran yang berbeza dan tempoh masa mungkin memerlukan parameter yang berbeza. Ia disyorkan untuk menentukan kombinasi parameter yang terbaik dengan mengkaji semula sejarah.
Kekurangan mekanisme kawalan kerugian: Tiada logik stop loss yang jelas dalam kod semasa, hanya bergantung pada kedudukan reverse signal, yang boleh menyebabkan kerugian yang lebih besar dalam turun naik pasaran yang melampau. Mekanisme stop loss berdasarkan kadar turun naik atau peratusan tetap harus ditambah.
Masalah frekuensi isyaratDalam pasaran yang bergelombang tinggi, strategi mungkin menghasilkan terlalu banyak isyarat perdagangan, meningkatkan kos perdagangan. Anda boleh mempertimbangkan untuk menambah mekanisme pengesahan isyarat atau syarat pelaksanaan tertunda.
Berdasarkan analisis kod, berikut adalah arah yang berpotensi untuk strategi ini dioptimumkan:
Pengesahan pelbagai kitaran masa: mewujudkan kerangka analisis kitaran masa yang memerlukan arah trend jangka pendek dan jangka panjang untuk menghasilkan isyarat yang sama, yang akan meningkatkan kualiti isyarat dengan ketara. Pengoptimuman ini penting kerana ia dapat mengurangkan isyarat palsu yang mungkin dihasilkan oleh satu kitaran masa.
Pengaturan parameter dinamik: Mengubah panjang EMA dan penurunan kemerosotan secara automatik mengikut turun naik pasaran, menjadikan strategi lebih sesuai dengan keadaan pasaran yang berbeza. Menggunakan EMA yang lebih pendek dalam keadaan turun naik yang rendah, menggunakan EMA yang lebih lama dalam keadaan turun naik yang tinggi, dapat meningkatkan kemampuan strategi.
Pencegahan Kerosakan TinggiMemperkenalkan stop loss dinamik berdasarkan ATR (Average True Range) dan menjejaki stop loss untuk mengoptimumkan nisbah risiko-bayaran. Mekanisme ini dapat memaksimumkan potensi keuntungan sambil melindungi modal.
Integrasi analisis jumlah urus niaga: Menggunakan data jumlah dagangan sebagai penunjuk pengesahan tambahan untuk meningkatkan ketepatan pengenalan trend, terutamanya pada titik-titik penting.
Penapis kadar turun naikPenambahan mekanisme penapisan berdasarkan kadar turun naik untuk menghentikan dagangan dalam keadaan turun naik yang sangat tinggi atau turun naik yang sangat rendah untuk mengelakkan kerugian dalam keadaan pasaran yang tidak menguntungkan.
Pengoptimuman masa masukStrategi semasa adalah untuk memasuki pasaran dengan segera selepas trend disahkan, tetapi ia boleh dioptimumkan untuk memasuki pasaran dengan menunggu sedikit penurunan dan meningkatkan kelebihan harga masuk.
Penambahbaikan algoritmaPerhitungan carta licin standard yang digunakan pada masa ini boleh meneroka algoritma licin lain seperti filter Ehlers atau purata bergerak yang beradaptasi untuk meningkatkan lagi ketepatan pengiktirafan trend.
Sistem EMA Trend Box Strategy and Smooth Graphing Optimization System adalah penyelesaian pengesanan trend yang direka dengan baik, yang menyediakan klasifikasi keadaan pasaran yang mudah dan berkesan dan mekanisme penjanaan isyarat perdagangan dengan menggabungkan EMA, analisis sudut miring dan teknik smooth graphing. Kelebihan utama strategi ini adalah kebolehan penapisan bising dan ketepatan tangkapan perubahan trend, yang menjadikannya berguna dalam pelbagai persekitaran pasaran.
Walau bagaimanapun, strategi juga mempunyai batasan seperti kelewatan pengesanan trend dan kekurangan mekanisme hentian yang sempurna. Prestasi strategi dapat ditingkatkan lagi dengan melaksanakan langkah-langkah pengoptimuman seperti analisis kitaran masa yang banyak, penyesuaian parameter dinamik, mekanisme hentian yang tinggi dan analisis jumlah perdagangan.
Sama ada peniaga baru atau berpengalaman, mereka boleh mendapat manfaat dari logik yang jelas dan fleksibiliti strategi ini. Dengan penyesuaian parameter yang sesuai dan pengoptimuman pilihan, strategi ini dapat menyesuaikan diri dengan gaya perdagangan dan keadaan pasaran yang berbeza, menjadi senjata yang kuat dalam kotak alat peniaga.
/*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=6
strategy(title='EMA Trend-box Strategy with Heikin Ashi Option', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=5)
// === Heikin Ashi izračunavanje ===
ha_close = (open + high + low + close) / 4
var float ha_open = na
ha_open := na(ha_open[1]) ? (open + close) / 2 : (ha_open[1] + ha_close[1]) / 2
ha_high = math.max(high, math.max(ha_open, ha_close))
ha_low = math.min(low, math.min(ha_open, ha_close))
// === Inputi ===
use_heikin = input.bool(true, "Use Heikin Ashi in calculation?", tooltip="When activated, Heikin Ashi closing is used instead of the classic one.")
ema_len = input.int(21, "EMA", minval=1)
// === Izvor cene ===
src_price = use_heikin ? ha_close : close
// === EMA i ugao (slope) ===
ema_ma = ta.ema(src_price, ema_len)
pi = 3.14159265359
ema_slope = math.atan((ema_ma - ema_ma[2]) / 2) * (180 / pi)
slope_threshold = 0.0 // Fiksirano
// === Trend logika ===
ema_trend_up = ema_slope > slope_threshold and src_price > ema_ma
ema_trend_dn = ema_slope < -slope_threshold and src_price < ema_ma
ema_sideways = not ema_trend_up and not ema_trend_dn
// === Boje sveća ===
color_bull = color.green
color_bear = color.red
color_side = color.blue
ema_color = ema_trend_up ? color_bull : ema_trend_dn ? color_bear : color_side
barcolor(ema_color)
// === Signalna logika ===
prev_candle_blue = (ema_color[1] == color_side)
prev_candle_not_blue = (ema_color[1] != color_side)
// --- Signal tip 1: sa prethodnom plavom svećom ---
buy_signal1 = src_price > ema_ma and prev_candle_blue and (ema_color == color_bull)
sell_signal1 = src_price < ema_ma and prev_candle_blue and (ema_color == color_bear)
// --- Signal tip 2: direktan prelazak ---
buy_signal2 = src_price > ema_ma and prev_candle_not_blue and (ema_color == color_bull)
sell_signal2 = src_price < ema_ma and prev_candle_not_blue and (ema_color == color_bear)
// === Kombinovani signali ===
buy_signal = buy_signal1 or buy_signal2
sell_signal = sell_signal1 or sell_signal2
// === Entry logika ===
if (buy_signal)
strategy.entry("Long", strategy.long)
if (sell_signal)
strategy.entry("Short", strategy.short)
if (buy_signal and strategy.position_size < 0)
strategy.close("Short")
if (sell_signal and strategy.position_size > 0)
strategy.close("Long")
// === Prikaz EMA linije ===
plot(ema_ma, title='EMA', color=color.aqua, linewidth=2)
// === Prikaz signala ===
if (buy_signal)
label.new(bar_index, low, "BUY", color=color.green, style=label.style_label_up, textcolor=color.white, size=size.small)
if (sell_signal)
label.new(bar_index, high, "SELL", color=color.red, style=label.style_label_down, textcolor=color.white, size=size.small)