
Strategi ini adalah sistem perdagangan short-line intraday berdasarkan indikator teknis yang digunakan untuk menentukan sinyal perdagangan terutama menggunakan hubungan antara indeks 20 siklus moving average (EMA) 20 dan harga rata-rata tertimbang volume transaksi (VWAP) berdasarkan perhitungan harga khas. Strategi ini menggunakan stop loss dan target profit yang ditetapkan secara dinamis, dengan ukuran ATR (real amplitude mean) dan senjata casing (sinyal casing) untuk menghitung dengan tepat rasio risiko dan imbalan, sehingga mencapai keseimbangan antara pengendalian risiko dan pengoptimalan keuntungan.
Prinsip inti dari strategi ini didasarkan pada hubungan silang antara dua garis rata-rata (EMA 20 dan VWAP yang ditetapkan) dan interaksi harga dengan garis rata-rata ini. Secara khusus:
Mekanisme Generasi Sinyal Masuk:
Penggunaan harga tipikalStrategi: Menggunakan harga tipikal ((harga tinggi + harga rendah + harga penutupan) / 3 untuk menghitung VWAP, yang memberikan informasi harga yang lebih komprehensif daripada hanya menggunakan harga penutupan.
VWAP dijadwalkan:VWAP disetel kembali pada awal setiap hari perdagangan, memastikan bahwa indikator mencerminkan hubungan harga dan volume transaksi hari itu, cocok untuk digunakan oleh pedagang intraday.
Manajemen risiko dinamis:
Rasio Risiko-RugiStrategi default menggunakan rasio pengembalian risiko 1: 3, yaitu potensi keuntungan tiga kali lipat dari potensi risiko, yang sesuai dengan standar manajemen risiko pedagang profesional.
Keunggulan dari Indikator Teknis KomprehensifDengan menggabungkan kemampuan EMA untuk melacak tren dan keunggulan VWAP dalam volume transaksi, sinyal menjadi lebih andal.
Stop loss dinamis untuk beradaptasi dengan volatilitas pasarDengan menghitung posisi stop loss melalui ATR, titik stop loss dapat disesuaikan secara otomatis dengan kondisi pasar yang sebenarnya berfluktuasi, menghindari ketidakcocokan titik stop loss tetap dalam lingkungan fluktuasi yang berbeda.
Target berdasarkan ukuran kerucutMetode ini lebih cocok untuk karakteristik berfluktuasi pasar saat ini, dengan tujuan yang lebih jauh pada saat berfluktuasi besar dan lebih dekat pada saat berfluktuasi kecil.
Penghitungan VWAP yang disetel ulang dalam sehariVWAP dihitung ulang untuk setiap hari perdagangan, menghindari gangguan data historis pada hari perdagangan saat ini, dan memberikan referensi harga intraday yang lebih jelas.
Mekanisme multiple confirmation: Memerlukan kombinasi kondisi persilangan garis rata dengan persilangan harga, mengurangi kemungkinan sinyal palsu dan meningkatkan akurasi transaksi.
Efek visualisasi yang intuitifStrategi memberikan tanda grafis yang jelas, termasuk sinyal beli dan jual, stop loss, dan garis harga target, sehingga pedagang dapat memahami dan melaksanakan keputusan perdagangan secara intuitif.
Risiko rata-rata keterlambatanEMA: Meskipun lebih cepat bereaksi daripada rata-rata bergerak sederhana, masih ada beberapa keterlambatan yang dapat menyebabkan kehilangan titik masuk yang optimal atau sinyal yang tertunda dalam pasar yang berubah dengan cepat.
Perhitungan VWAP tergantung pada volume transaksiDalam kasus volume transaksi yang tidak normal, seperti transaksi volume besar dari lembaga besar, VWAP dapat mengalami penyimpangan yang mempengaruhi akurasi sinyal.
Risiko frekuensi transaksiDalam pasar yang bergejolak, garis rata-rata dapat sering berselisih, menyebabkan overtrading dan meningkatkan biaya transaksi.
Risiko pemicu kerusakan: Pasar mungkin akan mengalami lonjakan harga dalam jangka pendek, dan setelah memicu stop loss akan kembali ke arah tren awal, menyebabkan kerugian yang tidak perlu.
Batas yang ditetapkan oleh target hargaTarget yang ditetapkan berdasarkan ukuran unit mungkin tidak sesuai untuk semua kondisi pasar, terutama ketika struktur pasar berubah.
Solusi:
Optimasi parameter:
Tambahkan filter lingkungan pasar:
Filter waktu:
Optimalisasi Stop Loss:
Integrasi analisis multi-frame waktu:
Implementasi dari orientasi optimasi ini dapat secara signifikan meningkatkan stabilitas dan profitabilitas strategi, tetapi perlu diperhatikan bahwa optimasi berlebihan tidak menyebabkan masalah over-fit. Setiap perbaikan harus divalidasi oleh pengujian kembali dan pengujian ke depan yang ketat.
Strategi kuantitatif stop-loss dinamis intraday VWAP adalah sistem perdagangan komprehensif yang menggabungkan berbagai alat analisis teknis. Ini mengidentifikasi peluang perdagangan potensial melalui hubungan antara EMA 20 dan VWAP yang dihitung pada harga tipikal, dan menggunakan mekanisme manajemen risiko dinamis berdasarkan ATR dan ukuran matriks untuk mengendalikan risiko dan mengoptimalkan keuntungan.
Keunggulan utama dari strategi ini adalah kemampuannya untuk beradaptasi dengan volatilitas pasar, dan keandalan sinyal yang ditawarkan dalam kombinasi dengan berbagai indikator teknis. Namun, strategi ini juga menghadapi risiko seperti keterbelakangan rata-rata dan overtrading, yang perlu diatasi dengan kondisi penyaringan tambahan dan pengoptimalan parameter.
Strategi ini memberikan kerangka perdagangan yang sistematis bagi pedagang intraday, terutama bagi mereka yang mencari untuk menangkap peluang pasar jangka pendek sambil mempertahankan kontrol risiko yang masuk akal. Dengan pengembalian, optimasi, dan praktik yang berkelanjutan, pedagang dapat memperbaiki strategi ini lebih lanjut sesuai dengan toleransi risiko dan tujuan perdagangan mereka, sehingga menjadi sistem perdagangan yang dipersonalisasi dan stabil.
/*backtest
start: 2024-07-25 00:00:00
end: 2025-07-23 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("EMA 20 and Anchored VWAP with Typical Price", overlay=true)
// === INPUTS ===
emaLength = input.int(20, title="EMA Length")
atrMultiplier = input.float(2.0, title="Stop Loss Multiplier (x ATR)", minval=1)
riskRewardRatio = input.float(3.0, title="Risk/Reward Ratio", minval=1, step=0.1) // 1:3 Risk/Reward Ratio
// === CALCULATIONS ===
// EMA 20
ema20 = ta.ema(close, emaLength)
// === TYPICAL PRICE ===
typicalPrice = (high + low + close) / 3
// === VWAP CALCULATION (ANCHOR PERIOD = SESSION) ===
// Reset at the start of each session (new day)
var float cumPriceVol = na
var float cumVol = na
if (dayofweek != dayofweek[1]) // Reset at the start of each day
cumPriceVol := typicalPrice * volume
cumVol := volume
else
cumPriceVol := cumPriceVol + (typicalPrice * volume)
cumVol := cumVol + volume
vwap = cumPriceVol / cumVol // VWAP = cumulative price-volume / cumulative volume
// ATR Calculation
atr = ta.atr(14)
// === BUY CONDITIONS ===
// EMA 20 above VWAP and close crosses EMA 20 from below, OR EMA 20 crosses VWAP from below
buyCondition = (ema20 > vwap and ta.crossover(close, ema20)) or ta.crossover(ema20, vwap)
// === SELL CONDITIONS ===
// EMA 20 below VWAP and close crosses EMA 20 from above, OR EMA 20 crosses VWAP from above
sellCondition = (ema20 < vwap and ta.crossunder(close, ema20)) or ta.crossunder(ema20, vwap)
// === STOP LOSS and TARGET ===
// Buy Stop Loss and Target calculation (Weapon Candle is the signal candle)
buyStopLoss = close - atr * atrMultiplier
// Weapon Candle (signal candle) for Buy
weaponCandleSize = high - low
buyTarget = high + 2 * weaponCandleSize // Target = High of weapon candle + 2 * candle size
// Sell Stop Loss and Target calculation (Weapon Candle is the signal candle)
sellStopLoss = close + atr * atrMultiplier
// Weapon Candle (signal candle) for Sell
weaponCandleSizeSell = high - low
sellTarget = low - 2 * weaponCandleSizeSell // Target = Low of weapon candle - 2 * candle size
// === EXECUTE STRATEGY (Buy and Sell) ===
// Buy order entry
if (buyCondition)
strategy.entry("Buy", strategy.long, stop=buyStopLoss, limit=buyTarget)
// Sell order entry
if (sellCondition)
strategy.entry("Sell", strategy.short, stop=sellStopLoss, limit=sellTarget)
// === PLOTS ===
// Plot EMA 20
plot(ema20, color=color.blue, title="EMA 20", linewidth=2)
// Plot VWAP
plot(vwap, color=color.orange, title="Session Anchored VWAP", linewidth=2)
// Plot Buy and Sell signals on the chart
plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=sellCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")
// === BACKGROUND COLORS ===
bgcolor(buyCondition ? color.new(color.green, 90) : na, title="Buy Background")
bgcolor(sellCondition ? color.new(color.red, 90) : na, title="Sell Background")