
Strategi kuantitatif silang EMA-SMA berkala adalah strategi analisis teknikal yang menggabungkan isyarat silang purata bergerak sederhana (SMA) dan rata-rata bergerak indeks (EMA) dan penilaian tambahan melalui penyaringan penyaringan berkala dan RSI. Idea teras strategi ini adalah untuk menangkap titik silang EMA15 dan SMA60 sebagai titik masuk, sambil memperkenalkan isyarat EMA200 sebagai rujukan trend jangka panjang, dan menggabungkan EMA200 yang lebih tinggi dengan penyaringan arah perdagangan, akhirnya mengelakkan perdagangan di kawasan jual beli yang berlebihan melalui RSI.
Prinsip-prinsip utama strategi ini adalah berdasarkan beberapa komponen analisis teknikal berikut:
Rata-rata bergerak silang:
Penapisan masa berganda:
Mekanisme penapis RSI:
Sistem pengurusan risiko:
Logik perdagangan strategi mengikuti pemikiran “mengikuti trend + pengesahan berganda”, dengan mekanisme penapisan berlapis memastikan perdagangan hanya dalam arah kebarangkalian yang tinggi, sambil melindungi keselamatan dana melalui langkah-langkah kawalan risiko yang ketat.
Dengan analisis kod yang mendalam, strategi ini mempunyai kelebihan yang ketara:
Mekanisme pengesahan bergandaGabungan antara purata bergerak jangka pendek, penilaian trend jangka panjang dan penapisan RSI, membentuk mekanisme pengesahan tiga, meningkatkan kualiti isyarat dengan ketara, mengurangkan pecah palsu dan isyarat salah.
Beradaptasi dengan keadaan pasaran yang berbezaDengan reka bentuk parameter, strategi boleh disesuaikan secara fleksibel untuk menyesuaikan diri dengan keadaan pasaran yang berbeza dan jenis perdagangan, seperti menyesuaikan kitaran purata bergerak, nilai RSI, dan sebagainya.
Kawalan risiko yang baik:
Pengurusan masa transaksi: Secara automatik menetapkan masa untuk menutup kedudukan sebelum penutupan, mengelakkan risiko malam dan ketidakpastian yang disebabkan oleh turun naik penutupan, terutama untuk peniaga dalam hari.
Penapisan trend pada waktu yang tinggi: Meningkatkan kadar kemenangan dengan memastikan arah dagangan selaras dengan trend utama dengan memperkenalkan penilaian trend yang lebih tinggi.
Reka bentuk modularKomponen-komponen strategi (generasi isyarat, mekanisme penapisan, pengurusan risiko) dipisahkan dengan jelas untuk memudahkan pemahaman dan penyesuaian, serta untuk memudahkan pengoptimuman dan pengembangan selanjutnya.
Walaupun strategi ini dirancang secara menyeluruh, terdapat risiko yang berpotensi:
Kepekaan ParameterKesan strategi sangat bergantung kepada parameter seperti kitaran purata bergerak, nilai RSI. Perbezaan keadaan pasaran mungkin memerlukan kombinasi parameter yang berbeza, dan pengoptimuman parameter yang tidak tepat boleh menyebabkan data sejarah yang terlalu sesuai.
Masalah ketinggalan zaman: Rata-rata bergerak pada dasarnya adalah penunjuk yang ketinggalan, yang mungkin menghasilkan isyarat yang lebih lewat dalam pasaran yang bergolak atau berbalik dengan cepat, terlepas titik masuk terbaik atau menyebabkan penarikan balik yang lebih besar.
Perkembangan pasaran yang kurang baikDalam pasaran yang tidak mempunyai trend yang jelas, persilangan purata bergerak boleh menghasilkan isyarat palsu yang kerap, yang menyebabkan kerugian berterusan.
Terlalu banyak bergantung kepada petunjuk teknikalStrategi ini hanya berdasarkan kepada petunjuk teknikal dan tidak mengambil kira faktor asas dan sentimen pasaran, yang mungkin tidak berfungsi dengan baik dalam pasaran yang didorong oleh berita atau peristiwa utama.
Risiko Hentian Tetap: Penutupan titik tetap mungkin tidak fleksibel dalam pasaran yang berubah-ubah, penutupan mungkin terlalu longgar apabila turun naik meningkat, dan penutupan mungkin terlalu ketat apabila turun naik menurun.
Penyelesaian:
Berdasarkan kerangka strategi yang sedia ada, berikut adalah beberapa arah pengoptimuman yang perlu dipertimbangkan:
Mekanisme adaptasi kadar turun naik:
Peningkatan kesesuaian dalam jangka masa yang panjang:
Pengesahan jumlah transaksi:
Optimumkan parameter dinamik:
Klasifikasi keadaan pasaran:
Memperkenalkan pengoptimuman pembelajaran mesin:
Arahan pengoptimuman ini dapat memperbaiki kekurangan strategi untuk mengekalkan prestasi yang stabil dalam persekitaran pasaran yang lebih luas.
Strategi kuantitatif silang SMA-EMA berlainan waktu adalah sistem perdagangan analisis teknikal yang tersusun dengan baik dan logik yang jelas. Ia membentuk kerangka keputusan perdagangan berlainan peringkat dengan menggabungkan isyarat silang purata bergerak, penapisan trend berlainan waktu dan penghakiman RSI yang lebih baik.
Kelebihan utama strategi ini terletak pada mekanisme pengesahan berganda dan kawalan risiko yang baik, yang membolehkan ia berprestasi dalam pasaran yang sedang tren, sambil mengawal risiko dengan berkesan. Walau bagaimanapun, strategi ini juga mempunyai masalah seperti kepekaan parameter yang tinggi dan ketidakupayaan yang lemah terhadap pasaran horizontal.
Terdapat banyak ruang untuk penambahbaikan strategi dengan memperkenalkan mekanisme penyesuaian diri kadar turun naik, meningkatkan keperluan kesesuaian jangka masa, meningkatkan pengesahan jumlah transaksi, dan mencapai pengoptimuman parameter dinamik. Pengoptimuman ini dapat membantu strategi menyesuaikan diri dengan lebih baik dengan keadaan pasaran yang berbeza, meningkatkan kestabilan dan keuntungan secara keseluruhan.
Secara keseluruhannya, ini adalah strategi mengikuti trend yang dirancang dengan baik dan sesuai untuk digunakan oleh peniaga yang mempunyai asas analisis teknikal. Dengan penyesuaian dan pengoptimuman parameter yang sesuai, ia boleh menjadi alat perdagangan yang boleh dipercayai, terutamanya dalam keadaan pasaran yang jelas mengenai trend jangka menengah dan jangka panjang.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-06-15 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy(title="PhaiSinh_SMA & EMA [VNFlow]", overlay=true, slippage=1, backtest_fill_limits_assumption=1, initial_capital=100.000, default_qty_type=strategy.fixed, default_qty_value=4, commission_type=strategy.commission.cash_per_order, commission_value=2700,fill_orders_on_standard_ohlc=true, calc_on_order_fills=true, process_orders_on_close=true)
// === Chỉ báo chính ===
sma60 = ta.sma(close, 60)
ema15 = ta.ema(close, 15)
ema200 = ta.ema(close, 200)
plot(sma60, title="SMA 60", color=color.rgb(227, 10, 251), linewidth=1)
plot(ema15, title="EMA 15", color=color.rgb(246, 222, 11), linewidth=1)
plot(ema200, title="EMA 200", color=color.rgb(13, 141, 245), linewidth=1)
// === Cấu hình thời gian thoát trước khi hết phiên ===
session_close_hour = input.int(14, title="Giờ đóng phiên (24h)")
session_close_minute = input.int(30, title="Phút đóng phiên")
minutes_before_close = input.int(5, title="Số phút thoát lệnh trước đóng phiên")
exit_hour = session_close_hour
exit_minute = session_close_minute - minutes_before_close
exit_hour := exit_minute < 0 ? exit_hour - 1 : exit_hour
exit_minute := exit_minute < 0 ? exit_minute + 60 : exit_minute
cutoff_time = (hour > exit_hour) or (hour == exit_hour and minute >= exit_minute)
// === Bộ lọc RSI ===
use_rsi_filter = input.bool(true, title="Bộ lọc RSI?")
rsi_period = input.int(14, title="Chu kỳ RSI")
rsi_overbought = input.int(70)
rsi_oversold = input.int(30)
rsi_val = ta.rsi(close, rsi_period)
// === Bộ lọc EMA từ HTF ===
use_htf_filter = input.bool(true, title="Bộ lọc EMA HTF?")
htf_tf = input.timeframe("60", title="Khung thời gian EMA cao hơn")
htf_ema = request.security(syminfo.tickerid, htf_tf, ta.ema(close, 200))
ema_trend_up = close > htf_ema
ema_trend_down = close < htf_ema
// === Cài đặt TP/SL/Trailing ===
use_percent_tp = input.bool(false, title="TP theo % (nếu không: tính theo tick)")
tp_value = input.float(1.0, title="Take Profit (tick hoặc %)")
sl_value = input.float(20.0, title="Stop Loss (tick)")
trail_offset = input.int(10, title="Trailing Stop (tick)")
// === Logic tín hiệu vào/ra ===
long_entry = ta.crossover(ema15, sma60) and close >= ema15 and not cutoff_time
short_entry = ta.crossunder(ema15, sma60) and close <= ema15 and not cutoff_time
long_ok = long_entry and (not use_htf_filter or ema_trend_up) and (not use_rsi_filter or rsi_val > rsi_oversold)
short_ok = short_entry and (not use_htf_filter or ema_trend_down) and (not use_rsi_filter or rsi_val < rsi_overbought)
// === Vào lệnh ===
if long_ok
strategy.entry("Long", strategy.long)
if short_ok
strategy.entry("Short", strategy.short)
// === Tính TP theo giá nếu chọn % ===
long_tp_price = close * (1 + tp_value / 100)
short_tp_price = close * (1 - tp_value / 100)
// === Thoát lệnh với TP/SL/Trailing ===
if strategy.position_size > 0
if use_percent_tp
strategy.exit("Dừng Long %", from_entry="Long", loss=sl_value, limit=long_tp_price, trail_points=trail_offset, trail_offset=trail_offset)
else
strategy.exit("Dừng Long Tick", from_entry="Long", loss=sl_value, profit=tp_value, trail_points=trail_offset, trail_offset=trail_offset)
if strategy.position_size < 0
if use_percent_tp
strategy.exit("Dừng Short %", from_entry="Short", loss=sl_value, limit=short_tp_price, trail_points=trail_offset, trail_offset=trail_offset)
else
strategy.exit("Dừng short Tick", from_entry="Short", loss=sl_value, profit=tp_value, trail_points=trail_offset, trail_offset=trail_offset)
// === Đóng toàn bộ trước phiên ===
if cutoff_time
strategy.close_all()