
La stratégie est un système de génération de signaux de négociation basé sur l’analyse synchrone de plusieurs indicateurs techniques. La stratégie intègre les quatre indicateurs techniques classiques RSI, Bollinger Bands, IMI et MFI, afin de générer des transactions plus fiables grâce à une vérification croisée entre les indicateurs. La stratégie de signaux est spécialement conçue pour une période de 4 heures et est divisée en deux niveaux de signaux: signal normal et signal fort en fonction de l’intensité du signal.
La logique centrale de la stratégie est de confirmer les signaux de transaction par une combinaison synchrone de plusieurs indicateurs.
La stratégie a été conçue avec une attention particulière portée à la pratique et à la maintenabilité, tout en laissant suffisamment de place à l’optimisation. La mise en œuvre de la stratégie est susceptible d’obtenir des performances stables dans les transactions réelles grâce à une adaptation raisonnable des paramètres et à une orientation optimisée.
/*backtest
start: 2024-12-10 00:00:00
end: 2025-02-18 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Clear Buy/Sell Signals with RSI, Bollinger Bands, IMI, and MFI", overlay=true)
// Input parameters
rsiLength = input.int(14, title="RSI Length")
bbLength = input.int(20, title="Bollinger Bands Length")
bbStdDev = input.float(2.0, title="Bollinger Bands Std Dev")
imiLength = input.int(14, title="IMI Length")
mfiLength = input.int(14, title="MFI Length")
// RSI Calculation
rsi = ta.rsi(close, rsiLength)
// Bollinger Bands Calculation
[bbUpper, bbMiddle, bbLower] = ta.bb(close, bbLength, bbStdDev)
// Intraday Momentum Index (IMI) Calculation
upSum = math.sum(close > open ? close - open : 0, imiLength)
downSum = math.sum(close < open ? open - close : 0, imiLength)
imi = (upSum / (upSum + downSum)) * 100
// Money Flow Index (MFI) Calculation
typicalPrice = (high + low + close) / 3
mfi = ta.mfi(typicalPrice, mfiLength)
// Buy/Sell Conditions
buyCondition = rsi < 30 and close < bbLower and imi < 30 and mfi < 20
sellCondition = rsi > 70 and close > bbUpper and imi > 70 and mfi > 80
// Strong Buy/Sell Conditions
strongBuyCondition = rsi < 20 and close < bbLower and imi < 20 and mfi < 10
strongSellCondition = rsi > 80 and close > bbUpper and imi > 80 and mfi > 90
// Plot Buy/Sell Signals
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small)
plotshape(series=sellCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small)
// Plot Strong Buy/Sell Signals
plotshape(series=strongBuyCondition, title="Strong Buy Signal", location=location.belowbar, color=color.lime, style=shape.labelup, text="STRONG BUY", size=size.normal)
plotshape(series=strongSellCondition, title="Strong Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="STRONG SELL", size=size.normal)
// Strategy Logic (for Backtesting)
if (buyCondition or strongBuyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition or strongSellCondition)
strategy.entry("Sell", strategy.short)