
Strategi ini adalah sistem perdagangan komprehensif yang menggabungkan indikator volume bergerak dan indikator aliran uang, dengan pengolahan yang halus terhadap indikator volume bergerak dengan rata-rata bergerak tiga indeks (EMA), secara efektif mengurangi kebisingan pasar. Strategi ini menggunakan rasio perubahan (ROC) untuk menghitung volume bergerak awal, dan digabungkan dengan indikator aliran uang (MFI) untuk mengkonfirmasi sinyal perdagangan, yang dapat diterapkan untuk perdagangan dalam berbagai periode waktu.
Prinsip-prinsip inti dari strategi ini didasarkan pada dua indikator teknis utama: indikator momentum dan indikator aliran dana (MFI). Pertama, ROC digunakan untuk menghitung momentum asli, kemudian melalui pemrosesan EMA tiga kali untuk mendapatkan jalur sinyal momentum yang lebih stabil. Pembuatan sinyal perdagangan membutuhkan kondisi yang memenuhi momentum dan MFI pada saat yang sama: membuat sinyal ganda ketika momentum pasca-slipping positif dan MFI lebih tinggi dari tingkat menengah; membuat sinyal kosong ketika momentum pasca-slipping negatif dan MFI lebih rendah dari tingkat menengah.
Ini adalah strategi perdagangan komprehensif yang dirancang secara rasional dan logis. Dengan kombinasi indikator dinamika dan arus uang, serta pemrosesan EMA tiga kali, seimbang secara efektif seimbang antara waktu dan keandalan sinyal. Strategi ini memiliki kepraktisan dan skalabilitas yang kuat, cocok untuk optimasi lebih lanjut dan aplikasi di lapangan.
/*backtest
start: 2024-02-22 00:00:00
end: 2025-02-19 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Momentum & Money Flow Strategy with Triple EMA Smoothing", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Input parameters
momentumPeriod = input.int(7, title="Momentum Period", minval=1)
smoothingPeriod = input.int(3, title="Momentum Smoothing Period", minval=1)
mfiPeriod = input.int(14, title="MFI Period", minval=1)
mfiMiddleLevel = input.int(50, title="MFI Middle Level", minval=1, maxval=100)
mfiOverbought = input.int(80, title="MFI Overbought Level", minval=1, maxval=100)
mfiOversold = input.int(20, title="MFI Oversold Level", minval=1, maxval=100)
// Calculate raw momentum oscillator using rate-of-change (ROC)
rawMomentum = ta.roc(close, momentumPeriod)
// Apply triple EMA smoothing for a much smoother momentum line
smoothedMomentum = ta.ema(ta.ema(ta.ema(rawMomentum, smoothingPeriod), smoothingPeriod), smoothingPeriod)
// Calculate Money Flow Index (MFI) using the typical price (hlc3)
typicalPrice = hlc3
mfiValue = ta.mfi(typicalPrice, mfiPeriod)
// Define conditions for filtering signals based on smoothed momentum and MFI
longCondition = (smoothedMomentum > 0) and (mfiValue > mfiMiddleLevel)
shortCondition = (smoothedMomentum < 0) and (mfiValue < mfiMiddleLevel)
// Define exit conditions for capturing turning points
exitLongCondition = (smoothedMomentum < 0) and (mfiValue < mfiOversold)
exitShortCondition = (smoothedMomentum > 0) and (mfiValue > mfiOverbought)
// Execute entries based on defined conditions
if (longCondition and strategy.position_size <= 0)
strategy.entry("Long", strategy.long)
if (shortCondition and strategy.position_size >= 0)
strategy.entry("Short", strategy.short)
// Exit positions based on turning point conditions
if (strategy.position_size > 0 and exitLongCondition)
strategy.close("Long")
if (strategy.position_size < 0 and exitShortCondition)
strategy.close("Short")
// Plot the triple EMA smoothed momentum oscillator and MFI for visual reference
plot(smoothedMomentum, title="Smoothed Momentum (Triple EMA ROC)", color=color.blue)
hline(0, color=color.gray)
plot(mfiValue, title="Money Flow Index (MFI)", color=color.orange)
hline(mfiMiddleLevel, color=color.green, linestyle=hline.style_dotted, title="MFI Middle Level")