
Strategi EMA crossover confirmation partial stop loss adalah strategi trading kuantitatif canggih yang menggabungkan sinyal crossover EMA, konfirmasi momentum, dan analisis struktur pasar. Strategi ini memberikan perhatian khusus pada keamanan perdagangan dan melindungi modal investasi melalui mekanisme stop loss parsial yang inovatif. Konsep desain utamanya adalah menunggu EMA crossover membentuk arah tren awal, dan kemudian mencari sinyal momentum “trend continuation” pertama sebagai titik masuk, sambil menggunakan kerusakan struktur pasar sebagai pemicu stop loss parsial, untuk dapat mengontrol risiko secara efektif sambil mempertahankan potensi kenaikan.
Strategi ini didasarkan pada mekanisme konfirmasi multi-lapisan:
Identifikasi tren: Menggunakan persilangan EMA cepat ((8 siklus) dan EMA lambat ((21 siklus) untuk menentukan arah tren secara keseluruhan. Ketika 8 EMA melewati 21 EMA, diidentifikasi sebagai tren naik; Ketika 8 EMA melewati 21 EMA, diidentifikasi sebagai tren turun.
Sinyal masukStrategi tidak masuk langsung pada saat EMA awal bersilang, tetapi menunggu sinyal “perlanjutan tren pertama”. Ini berarti:
Manajemen RisikoStrategi ini memperkenalkan mekanisme stop loss parsial yang didasarkan pada analisis struktur pasar.
Strategi KeluarAkhirnya, sinyal keluar total adalah EMA bearish cross, yaitu 8 EMA di bawah 21 EMA, saat ini posisi kosong seluruh sisa memegang.
Strategi dalam proses operasinya menggunakan variabel manajemen status untuk melacak status perdagangan, jenis sinyal yang telah dipicu, dan titik pergeseran struktur pasar, untuk memastikan konsistensi dan akurasi pelaksanaan logis.
Dari analisis kode strategi ini, dapat disimpulkan keuntungan yang signifikan sebagai berikut:
Mekanisme multiple confirmationDengan menggabungkan EMA silang, penurunan momentum, dan sinyal kelanjutan tren, risiko false breakout dan sinyal salah dikurangi secara signifikan. Desain penyaringan multi-lapisan ini meningkatkan kualitas dan keandalan perdagangan secara signifikan.
Manajemen Uang yang CerdasHal ini memungkinkan trader untuk melindungi sebagian dari keuntungan mereka ketika struktur pasar memburuk, sementara mempertahankan posisi sisa untuk menangkap kemungkinan reset tren, mencapai keseimbangan antara risiko dan keuntungan.
Adaptasi struktur pasarDengan mengikuti dinamika pembentukan titik tinggi dan rendah, strategi dapat mengidentifikasi perubahan struktur pasar sehingga dapat berkinerja stabil dalam berbagai kondisi pasar.
Desain Parameter FleksibelStrategi ini menawarkan beberapa parameter yang dapat disesuaikan, termasuk panjang EMA, kelipatan sensitivitas, dan setelan pivot backtracking, yang memungkinkan pedagang untuk mengoptimalkannya sesuai dengan kondisi pasar yang berbeda dan preferensi risiko pribadi.
Prinsip menghormati trenStrategi yang dirancang mengikuti prinsip “mengambil keuntungan dari tren”, melakukan lebih banyak hanya dalam tren naik yang dikonfirmasi, menghindari risiko tinggi yang ditimbulkan oleh perdagangan berlawanan arah.
Meskipun strategi ini dirancang dengan baik, ada beberapa risiko dan batasan potensial:
Risiko keterlambatan masukKarena perlu menunggu sinyal “tren pertama dilanjutkan”, strategi mungkin melewatkan bagian awal dari kenaikan tren, yang dapat menyebabkan harga masuk yang lebih tinggi dalam situasi penembusan cepat.
Salah menilai struktur pasarDalam lingkungan yang sangat berfluktuasi, pembentukan titik tinggi dan rendah mungkin tidak cukup jelas, menyebabkan penilaian struktur pasar yang salah dan penghentian sebagian yang tidak perlu.
Parameter SensitivitasKinerja strategi sangat bergantung pada parameter seperti panjang EMA, ATR sensitivitas kali, dan parameter yang tidak tepat dapat menyebabkan overtrading atau kehilangan sinyal yang efektif.
Kekalahan setelah penaltiKetika sebagian stop loss dipicu, strategi tidak mendefinisikan mekanisme masuk kembali yang jelas, dan kemungkinan kehilangan peluang kenaikan setelah reset tren.
Berdasarkan analisis kode, strategi ini dapat dioptimalkan dalam beberapa arah:
Pengaturan parameter dinamis: Panjang EMA dan kelipatan sensitivitas saat ini tetap, Anda dapat mempertimbangkan untuk menyesuaikan parameter ini secara otomatis sesuai dengan volatilitas pasar. Misalnya, menggunakan kelipatan sensitivitas yang lebih kecil di lingkungan yang kurang berfluktuasi dan menggunakan nilai yang lebih besar di lingkungan yang berfluktuasi tinggi.
Meningkatkan penilaian struktur pasar kuantitatifAnalisis struktur pasar saat ini relatif sederhana, sehingga dapat dikembangkan sistem penilaian struktur pasar yang lebih kompleks, mempertimbangkan posisi relatif, kecepatan dan amplitudo pembentukan beberapa titik tinggi dan rendah, sehingga dapat menilai kekuatan tren dan potensi pembalikan dengan lebih akurat.
Konfirmasi volume transaksi terintegrasiStrategi saat ini hanya didasarkan pada pergerakan harga dan dapat menambahkan analisis volume transaksi sebagai faktor konfirmasi tambahan. Misalnya, meminta peningkatan volume transaksi ketika memicu sinyal beli, atau volume perdagangan yang diperbesar sebagai sinyal peringatan yang lebih kuat ketika struktur pasar rusak.
Strategi Manajemen Optimasi Setelah Penutupan ParsialDi sisi lain, ada beberapa hal yang bisa dilakukan untuk meningkatkan efisiensi dalam pengelolaan dana, seperti:
Menambahkan analisis multi-frame waktuDengan mengintegrasikan analisis tren dari periode yang lebih lama, strategi dapat ditingkatkan stabilitasnya. Misalnya, lebih banyak trading hanya diizinkan pada kerangka waktu yang lebih kecil ketika trend naik, sehingga mengurangi risiko perdagangan kontra-trend.
EMA cross-dynamic confirmation partial stop strategy adalah sistem perdagangan kuantitatif canggih yang menggabungkan analisis teknis dan manajemen risiko. Keunggulan utamanya adalah mekanisme konfirmasi bertingkat dan desain partial stop yang inovatif, yang dapat secara efektif mengendalikan risiko sambil menangkap tren. Dengan menunggu sinyal “perpanjangan tren pertama” untuk masuk, strategi ini sangat mengurangi kemungkinan perdagangan false breakout, sementara partial stop yang didasarkan pada struktur pasar memberikan mekanisme perlindungan dana yang fleksibel.
Strategi ini sangat cocok untuk lingkungan pasar moderat yang volatile, dengan tren yang jelas, dan memiliki nilai referensi yang tinggi bagi pedagang kuantitatif yang ingin memperkenalkan kontrol risiko yang lebih halus dalam perdagangan tren. Strategi ini masih memiliki banyak ruang untuk pengembangan dan perbaikan dengan lebih mengoptimalkan metode analisis struktur pasar, penyesuaian parameter dinamis, dan integrasi multi-frame waktu.
Pada akhirnya, penerapan strategi yang sukses membutuhkan pemahaman yang mendalam tentang pasar dan kemampuan pedagang untuk menyesuaikan pengaturan parameter sesuai dengan kondisi pasar yang berbeda, meningkatkan fleksibilitas dan stabilitas strategi sambil mempertahankan logika inti strategi.
/*backtest
start: 2024-06-30 00:00:00
end: 2025-06-28 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":50000000}]
*/
//@version=5
// This strategy buys on the 'First Continuation' signal and adds a
// partial stop-loss that triggers on a lower-low and lower-high market structure break.
// This version corrects the 'strategy.close' argument error.
strategy("First Continuation Strategy w/ Partial SL (Corrected)",
overlay=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=10,
commission_type=strategy.commission.percent,
commission_value=0.1)
// --- INPUTS ---
emaLength = input.int(21, "Slow EMA Length")
shortEmaLength = input.int(8, "Fast EMA Length")
sensitivityMultiplier = input.float(1.5, title="Sensitivity Multiplier")
pivotLeft = input.int(5, title="Pivot Lookback Left")
pivotRight = input.int(5, title="Pivot Lookback Right")
// --- CALCULATIONS ---
ema21 = ta.ema(close, emaLength)
ema8 = ta.ema(close, shortEmaLength)
atr = ta.atr(14)
distance = close - ema21
threshold = atr * sensitivityMultiplier
// --- STATE MANAGEMENT ---
var bool inEmaUptrend = false, var bool inEmaDowntrend = false
var bool firstBuySignalFired = false, var bool firstSellSignalFired = false
var bool firstContinuationBuyFired = false, var bool firstContinuationSellFired = false
// State management for the new stop-loss logic
var float lastHigh = na, var float secondLastHigh = na
var float lastLow = na, var float secondLastLow = na
var bool partialStopTriggered = false
bool bullishCross = ta.crossover(ema8, ema21)
bool bearishCross = ta.crossunder(ema8, ema21)
// Reset state on trend changes
if (bullishCross)
inEmaUptrend := true, inEmaDowntrend := false
firstBuySignalFired := false, firstContinuationBuyFired := false
if (bearishCross)
inEmaUptrend := false, inEmaDowntrend := true
firstSellSignalFired := false, firstContinuationSellFired := false
// --- PIVOT & TRIGGER LOGIC ---
// Detect new swing points
float newPivotHigh = ta.pivothigh(high, pivotLeft, pivotRight)
float newPivotLow = ta.pivotlow(low, pivotLeft, pivotRight)
// If in a trade, track the last two swing points
if (strategy.position_size > 0)
if not na(newPivotHigh)
secondLastHigh := lastHigh
lastHigh := newPivotHigh
if not na(newPivotLow)
secondLastLow := lastLow
lastLow := newPivotLow
// Stop-Loss Condition: A confirmed lower high AND lower low have formed
bool marketStructureBreak = not na(lastHigh) and not na(secondLastHigh) and not na(lastLow) and not na(secondLastLow) and lastHigh < secondLastHigh and lastLow < secondLastLow
// Reset pivot history and stop-loss flag when position is closed
if (strategy.position_size == 0 and strategy.position_size[1] != 0)
lastHigh := na, secondLastHigh := na
lastLow := na, secondLastLow := na
partialStopTriggered := false
// Standard V8 Trigger Logic
bool isMomentumBar = math.abs(distance) >= (threshold / 1.5)
bool isPositiveMomentumBar = isMomentumBar and distance > 0
bool buySignal = inEmaUptrend and isPositiveMomentumBar
bool buyTrigger = buySignal and not buySignal[1]
bool initialBuyTrigger = buyTrigger and not firstBuySignalFired
bool firstContinuationBuy = buyTrigger and firstBuySignalFired and not firstContinuationBuyFired
if (initialBuyTrigger)
firstBuySignalFired := true
if (firstContinuationBuy)
firstContinuationBuyFired := true
// --- STRATEGY EXECUTION ---
// ENTRY: Buy only on the first continuation 'b' signal and when flat.
if (firstContinuationBuy and strategy.position_size == 0)
strategy.entry("Long", strategy.long)
// PARTIAL EXIT (NEW): Close 50% of the position if market structure breaks down.
if (strategy.position_size > 0 and marketStructureBreak and not partialStopTriggered)
qtyToClose = strategy.position_size * 0.5
strategy.close(id="Long", qty=qtyToClose, comment="SL 50% on Structure Break") // CORRECTED ARGUMENT
partialStopTriggered := true // Ensure this only triggers once per trade
// FULL EXIT: Close any remaining position on a bearish cross.
if (strategy.position_size > 0 and bearishCross)
strategy.close("Long", comment="Exit on Bearish Cross")
// --- PLOTTING ---
plot(ema8, "Fast EMA", color=color.new(color.blue, 0), linewidth=2)
plot(ema21, "Slow EMA", color=color.new(color.orange, 0), linewidth=2)
// Plot pivots to visualize the market structure
plot(newPivotHigh, "Pivot High", color=color.new(color.red, 50), style=plot.style_circles, offset=-pivotRight)
plot(newPivotLow, "Pivot Low", color=color.new(color.green, 50), style=plot.style_circles, offset=-pivotRight)