
Strategi ini adalah sistem perdagangan berdasarkan beberapa indikator teknis, yang menggabungkan indeks moving average (EMA) crossover, harga referensi titik pusat (CPR), penyaringan volume transaksi dan pengaturan stop loss / stop otomatis. Logika inti strategi ini adalah untuk menentukan arah tren pasar melalui persimpangan EMA garis cepat dan garis lambat, sekaligus menggunakan CPR sebagai titik referensi harga tambahan untuk mengkonfirmasi sinyal, dan verifikasi aktivitas pasar melalui penyaringan volume transaksi, dan akhirnya mengatur persentase tetap dari stop loss dan stop loss untuk mengelola risiko dan mengunci keuntungan.
Logika transaksi inti dari strategi ini didasarkan pada beberapa komponen utama:
Sistem EMA silangStrategi menggunakan 20 siklus dan 50 siklus EMA sebagai indikator tren utama. Ketika EMA cepat melewati 20 siklus EMA lambat menghasilkan sinyal plus. Ketika EMA cepat melewati 50 siklus EMA lambat menghasilkan sinyal minus.
CPR (Central Point Reference Price) dikonfirmasiCPR terdiri dari tiga tingkat harga utama: pivot point (Pivot), down-center (BC), dan up-center (TC). Tingkat-tingkat ini dihitung berdasarkan harga tinggi, rendah, dan tutup hari sebelumnya. Dalam banyak kasus, strategi meminta harga berada di atas pivot point; dalam kasus kosong, harga harus berada di bawah pivot point.
Filter volume transaksiUntuk menghindari transaksi dalam jumlah yang tidak cukup, strategi menetapkan kondisi bahwa volume transaksi harus lebih besar dari volume transaksi rata-rata 20 hari. Volume transaksi yang tinggi biasanya menandakan keterlibatan pasar yang tinggi, meningkatkan keandalan pergerakan harga. Pengguna dapat memilih untuk mengaktifkan filter ini.
Hentikan / hentikan otomatis: Strategi menetapkan stop loss dan stop loss persentase tetap berdasarkan harga masuk. Secara default, stop loss berada di bawah harga masuk 1,5% dan stop loss berada di atas harga masuk 3%. Ini membuat rasio risiko-pengembalian 1: 2, sesuai dengan prinsip manajemen risiko yang sehat.
Visualisasi sinyalStrategi: Menampilkan sinyal beli dan jual secara intuitif dalam bentuk label dan bentuk pada grafik, sehingga pedagang dapat dengan jelas melihat titik masuk.
Logika pelaksanaan perdagangan sederhana dan jelas: ketika memenuhi kondisi melakukan banyak hal (di atas EMA, harga lebih tinggi dari titik pivot, kondisi volume perdagangan terpenuhi), strategi memasuki posisi multihead, dan sekaligus mengatur stop loss dan stop order. Ketika memenuhi kondisi melakukan gap (di bawah EMA, harga lebih rendah dari titik pivot, kondisi volume perdagangan terpenuhi), strategi memasuki posisi kosong, juga mengatur stop loss dan stop order yang sesuai.
Mekanisme multiple confirmationStrategi ini menggabungkan indikator tren (EMA), indikator tingkat harga (CPR) dan indikator volume perdagangan untuk membentuk sistem konfirmasi ganda. Ini mengurangi kemungkinan sinyal palsu dan meningkatkan keandalan perdagangan.
AdaptifDengan parameter yang dapat disesuaikan (seperti panjang EMA, persentase stop loss, persentase stop loss, dan apakah filter volume diperdagangkan), strategi dapat disesuaikan dengan lingkungan pasar yang berbeda dan preferensi risiko pedagang. Ini membuat strategi ini cocok untuk pasar yang lebih berfluktuasi dan juga pasar yang relatif stabil.
Integrasi Manajemen RisikoStrategi ini memiliki mekanisme stop loss dan stop loss otomatis yang tidak dimiliki oleh banyak strategi dasar. Ini memastikan bahwa setiap perdagangan memiliki target risiko dan imbalan yang didefinisikan sebelumnya, dan menghindari pengaruh keputusan emosional pada hasil perdagangan.
Sinyal perdagangan visualStrategi: Menampilkan sinyal perdagangan secara intuitif pada grafik, memungkinkan pedagang untuk dengan mudah mengidentifikasi titik masuk dan keluar, membantu untuk memantau dan menyesuaikan strategi.
Kode sederhana dan efisienStruktur kode strategi jelas, logis, dan mudah dimengerti dan dimodifikasi. Hal ini memungkinkan bahkan pedagang dengan pengalaman pemrograman terbatas untuk memahami cara kerja strategi dan menyesuaikan sesuai dengan kebutuhan mereka.
Terapan yang luasStrategi ini berlaku untuk berbagai jenis perdagangan, termasuk futures dan saham, tanpa perlu melakukan penyesuaian khusus untuk pasar tertentu. Keseluruhan ini memungkinkan strategi untuk mempertahankan kinerja yang relatif stabil dalam berbagai lingkungan pasar.
Sinyal silang palsuStrategi EMA crossover dapat menghasilkan beberapa sinyal crossover palsu di pasar horizontal atau berfluktuasi, yang menyebabkan perdagangan kerugian berturut-turut. Meskipun CPR dan filter volume perdagangan membantu mengurangi sinyal palsu ini, ini masih merupakan risiko yang signifikan di pasar yang tidak memiliki tren yang jelas. Solusinya adalah menghentikan perdagangan di pasar horizontal, atau menambahkan indikator konfirmasi tren tambahan.
Keterbatasan Stop LossStrategi: menggunakan stop loss persentase tetap berdasarkan harga masuk, yang mungkin tidak cocok untuk semua kondisi pasar dan kondisi fluktuasi. Di pasar yang sangat fluktuatif, stop loss persentase tetap mungkin terlalu ketat; di pasar yang rendah fluktuasi, mungkin terlalu longgar.
Titik Slip dan Risiko EksekusiStrategi: Asumsikan bahwa semua pesanan dapat dieksekusi pada harga yang ditentukan, tetapi mungkin ada slippage dan penundaan eksekusi dalam perdagangan yang sebenarnya, terutama di pasar dengan likuiditas terbatas. Ini dapat menyebabkan perbedaan antara hasil perdagangan yang sebenarnya dan hasil pengukuran. Untuk mengurangi risiko ini, pengaturan konservatif dapat digunakan dalam perdagangan yang sebenarnya, seperti meningkatkan stop loss atau mengurangi ukuran posisi.
Parameter yang terlalu dioptimalkanKinerja strategi sangat tergantung pada parameter yang dipilih (panjang EMA, stop loss / stop loss persentase, dll.). Parameter yang terlalu dioptimalkan dapat menyebabkan kinerja yang baik dalam pengujian ulang tetapi kinerja yang buruk dalam perdagangan aktual. Solusi adalah menggunakan siklus pengujian ulang yang lebih lama dan menguji kebugaran strategi dalam beberapa kondisi pasar.
Keterbatasan CPRStrategi: Menggunakan data garis harian untuk menghitung CPR, yang mungkin tidak cukup fleksibel atau responsif dalam perdagangan dalam hari atau dalam kerangka waktu yang lebih pendek. Solusi yang mungkin adalah menyesuaikan siklus komputasi CPR sesuai dengan kerangka waktu yang digunakan.
sinyal volume palsu: Hanya mengandalkan volume perdagangan yang lebih tinggi dari rata-rata 20 hari mungkin tidak cukup untuk menilai aktivitas pasar secara akurat. Beberapa hari perdagangan yang tidak biasa mungkin terjadi lonjakan volume perdagangan, tetapi tidak mewakili konfirmasi tren yang sebenarnya.
Meningkatkan mekanisme identifikasi trenStrategi saat ini terutama bergantung pada EMA untuk mengidentifikasi tren silang, Anda dapat mempertimbangkan untuk menambahkan indikator tren tambahan, seperti ADX, untuk memastikan bahwa Anda hanya berdagang di pasar tren yang kuat. Ini akan membantu menyaring sinyal palsu di pasar horizontal, meningkatkan kualitas perdagangan daripada jumlah. Pada implementasi kode, Anda dapat menambahkan ADX> 25 sebagai filter perdagangan tambahan.
Stop loss dan stall: Mengganti stop loss dan stop loss dengan persentase tetap dari indikator volatilitas seperti ATR, untuk lebih beradaptasi dengan volatilitas dari berbagai lingkungan pasar. Misalnya, stop loss dapat diatur menjadi 2 kali ATR, dan stop loss dapat diatur menjadi 4 kali ATR, untuk mempertahankan tingkat risiko yang sama tetapi lebih baik untuk kondisi pasar.
Meningkatkan analisis volume transaksiFilter volume transaksi dapat ditingkatkan agar tidak hanya mempertimbangkan ukuran volume transaksi, tetapi juga mempertimbangkan tren volume transaksi dan hubungan harga-volume transaksi. Misalnya, Anda dapat menambahkan kondisi yang mengharuskan peningkatan volume transaksi sesuai dengan arah pergerakan harga, atau menggunakan indikator volume transaksi yang lebih kompleks seperti OBV (energy surge).
Optimalkan waktu masukStrategi saat ini adalah masuk langsung saat terjadi persimpangan dan pertimbangkan untuk menambahkan kondisi konfirmasi, seperti menunggu harga kembali ke titik support / resistance atau menunggu konfirmasi 1-2 siklus, untuk mengurangi risiko false breakout. Ini dapat dilakukan dengan menunda sinyal masuk atau menambahkan konfirmasi pola harga.
Menambahkan filter lingkungan pasarAnda dapat menambahkan logika penilaian kondisi pasar, misalnya menilai kondisi pasar saat ini melalui indikator volatilitas (seperti VIX atau ATR) dan menggunakan pengaturan parameter yang berbeda atau bahkan menghentikan perdagangan dalam lingkungan pasar yang berbeda. Misalnya, di pasar yang sangat volatile, Anda mungkin memerlukan stop loss yang lebih luas dan ukuran posisi yang lebih konservatif.
Simulasi hilangnya volume transaksiUntuk meningkatkan kelayakan strategi di pasar tanpa data volume transaksi atau di mana data volume transaksi tidak dapat diandalkan, versi alternatif yang tidak memerlukan volume transaksi dapat dikembangkan, misalnya dengan menggunakan rentang fluktuasi harga atau indikator teknis lainnya sebagai pengganti konfirmasi volume transaksi.
Tambahkan filter waktuPertimbangkan untuk menambahkan kondisi penyaringan waktu, menghindari perdagangan pada saat-saat yang sangat berfluktuasi sebelum dan sesudah buka dan tutup pasar, atau menghindari saat-saat pengumuman data ekonomi besar. Hal ini dapat dilakukan dengan memeriksa waktu perdagangan saat ini dan mengatur jendela waktu yang memungkinkan perdagangan.
Strategi perdagangan berbasis EMA crossover, CPR, dan filter volume perdagangan ini menyediakan kerangka sistem perdagangan yang komprehensif, yang menggabungkan pelacakan tren, pengesahan tingkat harga, dan verifikasi volume perdagangan, dengan fungsi manajemen risiko yang dibangun. Kelebihan utama dari strategi ini adalah mekanisme pengesahan ganda dan pengaturan stop loss / stop loss otomatis, yang membantu meningkatkan keandalan dan disiplin perdagangan.
Namun, seperti semua strategi perdagangan, ia juga menghadapi beberapa tantangan, seperti risiko sinyal palsu dan keterbatasan parameter tetap. Dengan arah optimasi yang dikemukakan di atas, khususnya peningkatan identifikasi tren, penyesuaian stop loss / stop loss dinamis, dan penyaringan lingkungan pasar yang ditingkatkan, strategi dapat ditingkatkan lebih lanjut.
Strategi ini memberikan titik awal yang baik bagi para pedagang, yang dapat disesuaikan sesuai dengan gaya perdagangan pribadi dan preferensi pasar. Yang terpenting, terlepas dari bagaimana strategi dimodifikasi, prinsip manajemen risiko yang baik harus selalu dipertahankan, parameter yang terlalu dioptimalkan harus dihindari, dan verifikasi perdagangan simulasi dan umpan balik yang memadai harus dilakukan sebelum perdagangan di tempat nyata.
/*backtest
start: 2024-05-20 00:00:00
end: 2025-05-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDC"}]
*/
//@version=6
strategy("Backtest: EMA + CPR + Volume + SL/Target", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=1)
// === INPUTS === //
emaFastLen = input.int(20, title="Fast EMA (20)")
emaSlowLen = input.int(50, title="Slow EMA (50)")
showCPR = input.bool(true, title="Show CPR?")
slPct = input.float(1.5, title="Stop Loss %") / 100
tpPct = input.float(3.0, title="Target %") / 100
useVolume = input.bool(true, title="Use Volume Filter?")
// === EMAs === //
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)
bullishCross = ta.crossover(emaFast, emaSlow)
bearishCross = ta.crossunder(emaFast, emaSlow)
plot(emaFast, color=color.orange, title="EMA 20")
plot(emaSlow, color=color.blue, title="EMA 50")
// === CPR === //
prevHigh = request.security(syminfo.tickerid, "D", high[1])
prevLow = request.security(syminfo.tickerid, "D", low[1])
prevClose = request.security(syminfo.tickerid, "D", close[1])
pivot = (prevHigh + prevLow + prevClose) / 3
bc = (prevHigh + prevLow) / 2
tc = (pivot * 2) - bc
plot(showCPR ? pivot : na, color=color.gray, title="Pivot")
plot(showCPR ? bc : na, color=color.gray, title="CPR BC")
plot(showCPR ? tc : na, color=color.gray, title="CPR TC")
// === Volume Filter === //
volOK = not useVolume or (volume > ta.sma(volume, 20))
// === BUY / SELL CONDITIONS === //
longCondition = bullishCross and close > pivot and volOK
shortCondition = bearishCross and close < pivot and volOK
// === TRADE EXECUTION === //
if (longCondition)
strategy.entry("BUY", strategy.long)
strategy.exit("TP/SL", from_entry="BUY", stop=close * (1 - slPct), limit=close * (1 + tpPct))
if (shortCondition)
strategy.entry("SELL", strategy.short)
strategy.exit("TP/SL", from_entry="SELL", stop=close * (1 + slPct), limit=close * (1 - tpPct))
// === VISUAL SIGNALS === //
plotshape(longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")