
Sistem strategi kuantitatif lintas linier multi rata-rata adalah strategi perdagangan berbasis analisis teknis, dengan ide inti untuk mengidentifikasi perubahan tren pasar dengan memantau hubungan silang antara rata-rata bergerak berkala yang berbeda, dan dengan demikian menghasilkan sinyal beli dan jual. Strategi ini menghasilkan sinyal beli saat melintasi garis lambat di atas garis cepat, dan menghasilkan sinyal jual saat melintasi garis lambat di bawah garis cepat, dengan membandingkan posisi relatif rata-rata bergerak cepat (default 9 cycle) dan rata-rata bergerak lambat (default 21 cycle).
Prinsip-prinsip inti dari strategi ini didasarkan pada fungsi indikasi tren dari moving average. Moving average dapat meluruskan data harga, memfilter kebisingan dari fluktuasi harga jangka pendek, dan mencerminkan arah tren keseluruhan pasar.
Perhitungan rata-rata: Strategi dengan fungsi kustomf_maMenghitung berbagai jenis moving average, mendukung empat jenis SMA, EMA, WMA dan VWMA, dan pengguna dapat memilih jenis rata-rata yang paling sesuai dengan lingkungan pasar saat ini.
Sinyal perdagangan dihasilkan:
ta.crossoverFungsi deteksi menunjukkan bahwa pergerakan harga jangka pendek melebihi tren jangka panjang dan pasar mungkin memasuki tren naik.ta.crossunderFungsi deteksi menunjukkan bahwa pergerakan harga jangka pendek lebih rendah dari tren jangka panjang, dan pasar mungkin memasuki tren menurun.Eksekusi transaksi: penggunaan strategistrategy.entryDanstrategy.closeFungsi untuk melakukan pembelian dan penjualan, memungkinkan transaksi yang sepenuhnya otomatis.
Visibilitas: Strategi diumumkanplotFungsi memetakan moving average dan menggunakanlabel.newTanda pada grafik adalah titik sinyal beli dan jual, sehingga trader dapat secara intuitif memahami logika strategi dan waktu perdagangan.
Kemampuan untuk melacak tren: Strategi ini didasarkan pada crossover rata-rata bergerak, mampu menangkap perubahan tren pasar secara efektif, cocok untuk perdagangan tren jangka menengah dan panjang. Sinyal crossover rata-rata biasanya tertinggal dari titik pivot harga, tetapi dapat menyaring banyak perdagangan noise, meningkatkan kualitas perdagangan.
Fleksibilitas penyesuaian parameter: Strategi ini memungkinkan pengguna untuk menyesuaikan panjang siklus rata-rata bergerak cepat dan lambat, serta memilih berbagai jenis metode perhitungan rata-rata yang dapat dioptimalkan sesuai dengan siklus pasar yang berbeda dan karakteristik fluktuasi.
Dukungan untuk jenis multi-rata: Strategi mendukung empat jenis rata-rata bergerak yang berbeda, masing-masing memiliki karakteristiknya sendiri:
Umpan balik visual yang jelas: Strategi ini secara intuitif menandai sinyal jual beli pada grafik, membantu pedagang dengan cepat memahami dan memverifikasi keputusan perdagangan.
Kesederhanaan dan efisiensi kode: Kode strategi yang ringkas dan jelas, menggunakan pemikiran pemrograman fungsional, dengan fungsi kustom yang memungkinkan perhitungan linier yang fleksibel, meningkatkan kemampuan pemeliharaan dan ekspansibilitas kode.
Sinyal palsu di pasar bergoyang: Dalam pasar yang bergoyang, rata-rata bergerak mungkin sering berselisih, menghasilkan banyak sinyal palsu, yang menyebabkan overtrading dan pengeluaran biaya yang tidak perlu. Solusi dapat mempertimbangkan untuk menambahkan kondisi penyaringan tambahan, seperti indikator kekuatan tren atau menetapkan ambang batas minimum perpotongan.
Masalah keterbelakangan: Moving averages pada dasarnya merupakan indikator keterbelakangan, yang mungkin tidak dapat menangkap titik-titik pergeseran tepat waktu dalam pasar yang berubah secara dramatis, yang menyebabkan penundaan waktu masuk atau keluar. Solusi dapat dipertimbangkan untuk menggabungkan indikator teknis yang lebih sensitif, seperti RSI atau MACD, atau mengoptimalkan parameter garis rata untuk mengurangi keterbelakangan.
Tergantung pada satu indikator: Strategi ini hanya bergantung pada crossover moving average untuk membuat keputusan, kurangnya analisis multi-dimensi, dan mudah dipengaruhi oleh kebisingan pasar. Solusi dapat mempertimbangkan untuk mengintegrasikan indikator teknis lainnya, seperti volume transaksi, indikator volatilitas, atau titik-titik resistensi pendukung, untuk membangun sistem perdagangan yang lebih komprehensif.
Kurangnya mekanisme manajemen risiko: Strategi saat ini tidak memiliki mekanisme stop loss dan stop loss yang terintegrasi, yang dapat menyebabkan penarikan yang lebih besar jika tren berbalik tetapi belum memicu sinyal silang. Solusi dapat mempertimbangkan untuk menambahkan stop loss dinamis, seperti tracking stop loss atau pengaturan stop loss berbasis ATR.
Sensitivitas parameter: Kinerja strategi lebih sensitif terhadap pilihan parameter rata-rata, dan berbagai lingkungan pasar mungkin memerlukan kombinasi parameter yang berbeda. Solusi dapat mempertimbangkan pengujian optimasi parameter, atau mekanisme penyesuaian parameter yang disesuaikan.
Integrasi multi-indikator: mengintegrasikan indikator teknis lainnya untuk mengkonfirmasi sinyal perdagangan, seperti:
Meningkatkan manajemen risiko:
Optimalisasi filter sinyal:
Parameter yang disesuaikan:
Perkembangan Logika Transaksi:
Sistem strategi kuantitatif lintas linier multi rata-rata membangun sistem perdagangan pelacakan tren yang ringkas dan efektif dengan memantau hubungan silang antara rata-rata bergerak berkala yang berbeda. Keunggulan utama strategi ini adalah logika yang mudah dimengerti, kemampuan penyesuaian parameter yang fleksibel, dan kemampuan untuk beradaptasi dengan lingkungan pasar yang berbeda. Namun, sebagai strategi yang didasarkan pada indikator lag, strategi ini juga menghadapi risiko pasar yang bergoyang, banyak sinyal palsu, sinyal lag, dan ketergantungan pada satu indikator.
Untuk meningkatkan kehandalan dan profitabilitas strategi, dapat dioptimalkan dari arah seperti integrasi multi-indikator, meningkatkan manajemen risiko, mengoptimalkan mekanisme penyaringan sinyal, memungkinkan parameter beradaptasi sendiri dan memperluas logika perdagangan. Khususnya, penggabungan indikator teknis dengan volume transaksi, struktur pasar, dan prinsip manajemen risiko, dapat membangun sistem perdagangan yang lebih komprehensif dan stabil.
Secara keseluruhan, strategi yang didasarkan pada crossover linier ini memberikan titik awal yang baik untuk perdagangan kuantitatif, cocok untuk pemula untuk memahami dan mempraktekkan prinsip-prinsip dasar perdagangan kuantitatif. Dengan terus-menerus dioptimalkan dan disempurnakan, ini dapat berkembang menjadi set sistem perdagangan yang lebih matang dan dapat diandalkan, memberikan sinyal perdagangan yang stabil dan mekanisme kontrol risiko bagi investor.
/*backtest
start: 2024-03-26 00:00:00
end: 2024-12-12 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
// @version=5
strategy("Moving Average Crossover Strategy", shorttitle="MA Crossover", overlay=true)
// ——— INPUTS ———
fastLength = input.int(9, title="Fast MA Length", minval=1)
slowLength = input.int(21, title="Slow MA Length", minval=1)
maType = input.string(title="MA Type", defval="SMA", options=["SMA", "EMA", "WMA", "VWMA"])
// ——— FUNCTION TO RETURN SELECTED MA ———
f_ma(_source, _length, _type) => switch _type
"SMA" => ta.sma(_source, _length)
"EMA" => ta.ema(_source, _length)
"WMA" => ta.wma(_source, _length)
"VWMA" => ta.vwma(_source, _length)
// ——— CALCULATE FAST AND SLOW MAs ———
fastMA = f_ma(close, fastLength, maType)
slowMA = f_ma(close, slowLength, maType)
// ——— PLOT THE MOVING AVERAGES ———
plot(fastMA, color=color.blue, linewidth=2, title="Fast MA")
plot(slowMA, color=color.red, linewidth=2, title="Slow MA")
// ——— TRADING CONDITIONS ———
longCondition = ta.crossover(fastMA, slowMA)
exitCondition = ta.crossunder(fastMA, slowMA)
// ——— EXECUTE TRADES ———
if longCondition
strategy.entry("Long Entry", strategy.long)
if exitCondition
strategy.close("Long Entry")
// ——— PLOT BUY/SELL LABELS ———
if longCondition
label.new(bar_index, low, style=label.style_label_up, color=color.new(color.green, 0), textcolor=color.white, text="Buy")
if exitCondition
label.new(bar_index, high, style=label.style_label_down, color=color.new(color.red, 0), textcolor=color.white, text="Sell")