
Cette stratégie est une stratégie multi-points de marché en temps réel basée sur plusieurs indicateurs techniques. Elle utilise principalement les signaux croisés des moyennes mobiles rapides et lentes (EMA) en combinaison avec l’indice relativement faible (RSI), l’indice de tendance moyenne (ADX) et l’indice de tendance moyenne mobile (MACD) pour confirmer les signaux de négociation. La stratégie utilise également l’amplitude moyenne réelle (ATR) pour définir des niveaux de stop et d’arrêt dynamiques, pour la gestion du risque.
La logique fondamentale de la stratégie repose sur les éléments clés suivants :
Il s’agit d’une stratégie de suivi de tendance conçue de manière rationnelle, en utilisant la combinaison de multiples indicateurs techniques, pour rechercher des gains stables tout en contrôlant les risques. L’avantage de la stratégie réside dans son mécanisme de confirmation et son système de gestion des risques, mais elle nécessite toujours une optimisation des paramètres et des améliorations logiques en fonction de la situation réelle du marché.
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Optimized Long-Only Strategy (Spot Market) - Candle Signals Only", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1)
// INPUTS
fastEMA_len = input.int(8, "Fast EMA Length", minval=1)
slowEMA_len = input.int(21, "Slow EMA Length", minval=1)
rsiPeriod = input.int(14, "RSI Period")
rsiOverbought = input.int(70, "RSI Overbought Level", minval=50)
adxPeriod = input.int(14, "ADX Period", minval=1)
adxThreshold = input.int(25, "ADX Trend Strength Threshold", minval=1)
fastMACD = input.int(12, "MACD Fast Length", minval=1)
slowMACD = input.int(26, "MACD Slow Length", minval=1)
signalMACD = input.int(9, "MACD Signal Length", minval=1)
atrPeriod = input.int(14, "ATR Period", minval=1)
atrStopMultiplier = input.float(1.5, "ATR Stop Loss Multiplier", step=0.1)
atrProfitMultiplier = input.float(2.0, "ATR Profit Target Multiplier", step=0.1)
// CALCULATIONS
emaFast = ta.ema(close, fastEMA_len)
emaSlow = ta.ema(close, slowEMA_len)
rsiValue = ta.rsi(close, rsiPeriod)
// --- Custom ADX Calculation ---
up = ta.change(high)
down = -ta.change(low)
plusDM = (up > down and up > 0) ? up : 0
minusDM = (down > up and down > 0) ? down : 0
trueRange = ta.tr(true) // 'handle_na' parameter set to true
atrVal = ta.rma(trueRange, adxPeriod)
plusDI = 100 * ta.rma(plusDM, adxPeriod) / atrVal
minusDI = 100 * ta.rma(minusDM, adxPeriod) / atrVal
dx = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
adxValue = ta.rma(dx, adxPeriod)
// MACD Calculation (MACD line, signal line, histogram)
[macdLine, signalLine, _] = ta.macd(close, fastMACD, slowMACD, signalMACD)
// ATR for stops and targets
atrValue = ta.atr(atrPeriod)
// TRADING CONDITION (Long Only, on confirmed candle)
longCondition = ta.crossover(emaFast, emaSlow) and (adxValue > adxThreshold) and (macdLine > signalLine) and (rsiValue < rsiOverbought)
// POSITION MANAGEMENT: Execute only on confirmed candles
if barstate.isconfirmed and longCondition
strategy.entry("Long", strategy.long)
longStop = close - atrStopMultiplier * atrValue
longTarget = close + atrProfitMultiplier * atrValue
strategy.exit("Long Exit", from_entry="Long", stop=longStop, limit=longTarget, trail_points=atrValue * 0.5, trail_offset=atrValue * 0.3)
// PLOTTING
plot(emaFast, color=color.green, title="Fast EMA")
plot(emaSlow, color=color.red, title="Slow EMA")
plotshape(barstate.isconfirmed and longCondition, title="Buy Signal", style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", textcolor=color.white, size=size.tiny)