
La stratégie est un système de négociation intégré combinant un indicateur de volume et un indicateur de flux de trésorerie, un traitement en douceur de l’indicateur de volume par le biais d’une moyenne mobile à trois indices ((EMA)), ce qui réduit efficacement le bruit du marché. La stratégie utilise le taux de variation ((ROC) pour calculer le volume d’origine et, en combinaison avec l’indicateur de flux de trésorerie ((MFI) pour confirmer le signal de négociation, peut être appliquée à diverses périodes de négociation.
Le principe de base de la stratégie est basé sur deux indicateurs techniques principaux: l’indicateur de dynamique et l’indicateur de flux de trésorerie (MFI). Le ROC est utilisé pour calculer la dynamique initiale, puis pour obtenir une ligne de signal de dynamique plus stable grâce à un traitement de lissage triple EMA. La génération de signaux de transaction nécessite de satisfaire à la fois à la dynamique et à la condition du MFI: un signal de multiplication est généré lorsque la dynamique après lissage est positive et que le MFI est supérieur au niveau moyen; un signal de vide est généré lorsque la dynamique après lissage est négative et que le MFI est inférieur au niveau moyen.
Il s’agit d’une stratégie de négociation intégrée conçue de manière rationnelle et logique. La synthèse des indicateurs de dynamique et de flux de fonds, ainsi que le traitement en douceur du triple EMA, équilibrent efficacement la ponctualité et la fiabilité du signal. La stratégie a une grande praticité et une grande extensibilité, adaptée à une optimisation ultérieure et à une application sur le terrain.
/*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")