
Strategi ini adalah sistem perdagangan komprehensif yang menggabungkan penunjuk kuantiti bergerak dan penunjuk aliran wang, dengan pemprosesan yang lancar terhadap penunjuk kuantiti bergerak melalui purata bergerak tiga indeks (EMA), yang berkesan mengurangkan kebisingan pasaran. Strategi ini menggunakan kadar perubahan (ROC) untuk mengira kuantiti bergerak awal, dan digabungkan dengan penunjuk aliran wang (MFI) untuk mengesahkan isyarat perdagangan, yang boleh digunakan untuk berdagang dalam pelbagai tempoh masa.
Prinsip-prinsip utama strategi ini adalah berdasarkan dua petunjuk teknikal utama: petunjuk momentum dan petunjuk aliran wang ((MFI)). Pertama, menggunakan ROC untuk mengira momentum asal, dan kemudian mendapatkan garis isyarat momentum yang lebih stabil melalui pemprosesan EMA tiga kali. Penciptaan isyarat dagangan memerlukan syarat untuk memenuhi kedua-dua momentum dan MFI: membuat banyak isyarat apabila momentum selepas perapisan adalah positif dan MFI dihasilkan di atas tahap pertengahan; membuat isyarat kosong apabila momentum selepas perapisan adalah negatif dan MFI dihasilkan di bawah tahap pertengahan.
Ini adalah strategi perdagangan komprehensif yang dirancang dengan logik dan logik yang jelas. Dengan menggabungkan indikator momentum dan aliran wang, serta pemprosesan lancar EMA tiga, ia menyeimbangkan kesesuaian dan kebolehpercayaan isyarat dengan berkesan. Strategi ini mempunyai kepraktisan dan kemampuan yang kuat, sesuai untuk pengoptimuman lanjut dan aplikasi 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")