
Strategi perdagangan kuantitatif perputaran momentum lintas rata-rata adalah sistem pelacakan tren berbasis aturan dengan logika inti yang berputar di sekitar rata-rata bergerak indeks 21 siklus ((21 EMA)). Strategi ini memantau hubungan harga dengan 21 EMA, melakukan over saat harga menutup di atas rata-rata, kosong saat melewati rata-rata, dan membuka posisi kosong saat harga melintasi rata-rata lagi. Strategi ini juga mencakup pengaturan stop loss dan stop loss yang dapat disesuaikan, pembatasan jumlah maksimum perdagangan per hari, dan mekanisme penguncian perdagangan otomatis setelah keuntungan pertama, untuk memberikan sistem perdagangan yang disiplin dan logis.
Prinsip inti dari strategi ini adalah untuk menangkap perubahan dinamika harga di sekitar 21 EMA, untuk mencapai trend follow and reverse trading. Secara khusus:
Strategi ini juga mengintegrasikan volume transaksi tertimbang rata-rata harga (VWAP) sebagai indikator referensi tambahan, memberikan informasi latar belakang pasar tambahan.
Tujuan dari pengoptimalan ini adalah untuk meningkatkan stabilitas dan adaptasi strategi, mengurangi sinyal palsu, dan meningkatkan profitabilitas.
Strategi perdagangan kuantitatif yang didasarkan pada 21 EMA crossover adalah sistem pelacakan tren yang memiliki karakteristik logika yang jelas dan aturan yang ketat. Dengan memantau hubungan harga dan garis rata, dengan mekanisme manajemen risiko yang ketat, strategi ini dapat secara efektif menangkap titik-titik perubahan tren pasar, sekaligus mengendalikan risiko.
Keuntungan utama dari strategi ini adalah logika perdagangan yang sederhana dan intuitif dan mekanisme pelaksanaan disiplin yang baik, terutama desain yang mengunci perdagangan setelah keuntungan pertama yang efektif mencegah overtrading dan pembalikan keuntungan. Namun, strategi ini juga memiliki risiko potensial seperti keterlambatan rata-rata, ketergantungan berlebihan pada satu indikator.
Optimisasi di masa depan harus berfokus pada dinamika parameter, konfirmasi sinyal multi-faktor, peningkatan manajemen risiko, dan klasifikasi keadaan pasar untuk meningkatkan kemampuan adaptasi strategi dalam berbagai lingkungan pasar. Dengan optimasi ini, strategi ini diharapkan menjadi sistem perdagangan kuantitatif yang lebih kuat dan andal.
Sebagai bagian dari metode DSPLN, strategi ini mencerminkan filosofi perdagangan “Do So Patiently Listening Now”, yang menekankan pada disiplin dan sistematis, memberikan pedagang kerangka perdagangan yang mengatasi gangguan emosional dan berfokus pada pelaksanaan aturan.
/*backtest
start: 2025-06-15 00:00:00
end: 2025-06-21 08:00:00
period: 3m
basePeriod: 3m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © EnvisionTrades
//@version=5
strategy("DSPLN EMA Flip Strategy v6", overlay=true)
// 🔹 Inputs
startHour = input.int(8, "Start Hour")
startMinute = input.int(30, "Start Minute")
endHour = input.int(10, "End Hour")
endMinute = input.int(30, "End Minute")
useTPSL = input.bool(true, "Use TP/SL?")
tpPoints = input.int(40, "Take Profit (points)")
slPoints = input.int(20, "Stop Loss (points)")
// 🔹 Time Filter
isWithinTradingHours = (hour > startHour or (hour == startHour and minute >= startMinute)) and
(hour < endHour or (hour == endHour and minute < endMinute))
// 🔹 Indicators
ema21 = ta.ema(close, 21)
vwap = ta.vwap
plot(ema21, title="21 EMA", color=color.orange)
plot(vwap, title="VWAP", color=color.blue)
// 🔹 State Variables
var int tradesToday = 0
var bool lastTradeWon = false
var float entryPrice = na
var label winLabel = na
var int prevTradeCount = 0
// 🔹 Entry Conditions
longEntry = isWithinTradingHours and close > ema21 and close[1] <= ema21[1]
shortEntry = isWithinTradingHours and close < ema21 and close[1] >= ema21[1]
// 🔹 Exit Conditions
longExit = strategy.position_size > 0 and close < ema21
shortExit = strategy.position_size < 0 and close > ema21
// 🔹 Trade Control
canTrade = tradesToday < 5 and not lastTradeWon
// 🔹 Entry Logic
if canTrade and strategy.position_size == 0 and longEntry
strategy.entry("Long", strategy.long)
entryPrice := close
if useTPSL
strategy.exit("TP Long", from_entry="Long", stop=close - slPoints * syminfo.mintick, limit=close + tpPoints * syminfo.mintick)
if canTrade and strategy.position_size == 0 and shortEntry
strategy.entry("Short", strategy.short)
entryPrice := close
if useTPSL
strategy.exit("TP Short", from_entry="Short", stop=close + slPoints * syminfo.mintick, limit=close - tpPoints * syminfo.mintick)
// 🔹 EMA Manual Exit Logic
if longExit
strategy.close("Long")
tradesToday += 1
lastTradeWon := close > entryPrice
if lastTradeWon
winLabel := label.new(bar_index, high, "✅ WIN - No More Trades", style=label.style_label_down, color=color.green)
if shortExit
strategy.close("Short")
tradesToday += 1
lastTradeWon := close < entryPrice
if lastTradeWon
winLabel := label.new(bar_index, low, "✅ WIN - No More Trades", style=label.style_label_up, color=color.green)
// 🔹 Detect Closed Trades (TP/SL exits)
tradeCount = strategy.closedtrades
if tradeCount > prevTradeCount
closedProfit = strategy.netprofit - strategy.netprofit[1]
tradesToday += 1
lastTradeWon := closedProfit > 0
if lastTradeWon
winLabel := label.new(bar_index, high, "✅ TP WIN - No More Trades", style=label.style_label_down, color=color.green)
prevTradeCount := tradeCount
// 🔹 Reset Daily
if (hour == endHour and minute == endMinute)
tradesToday := 0
lastTradeWon := false
entryPrice := na
prevTradeCount := 0
if not na(winLabel)
label.delete(winLabel)