
Cette stratégie est une stratégie d’arbitrage hautement adaptive combinant les courbes moyennes (EMA), les zones d’offre et de demande et le volume de transactions. Elle identifie les tendances du marché par la confirmation croisée de plusieurs indicateurs techniques et négocie à proximité des zones d’offre et de demande critiques. La stratégie adopte des objectifs de stop-loss et de profit dynamiques et s’adapte à la volatilité du marché par l’indicateur ATR.
La logique fondamentale de la stratégie repose sur les éléments clés suivants :
En particulier, lorsque l’EMA à 9 cycles augmente pendant 3 cycles consécutifs, l’EMA à 15 cycles est également en hausse et que le prix est au-dessus de la zone de demande, et que la moyenne du volume de transactions à 20 cycles est supérieure à la moyenne du volume de transactions à 50 cycles, le système émet un signal de multiplication. La logique du signal de blanchiment est inverse.
Mesures de contrôle des risques :
Il s’agit d’un système de négociation complet intégrant plusieurs outils d’analyse technique qui améliore la fiabilité des transactions grâce à des mécanismes de confirmation multiples. L’avantage de la stratégie réside dans sa capacité d’adaptation et de gestion des risques, mais il faut également tenir compte des différences de performance dans différents environnements de marché.
/*backtest
start: 2024-02-08 00:00:00
end: 2025-02-06 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Optimized Scalping Strategy with EMA & Supply/Demand Zones", overlay=true)
// Inputs
ema9_length = input(9, title="EMA 9 Length")
ema15_length = input(15, title="EMA 15 Length")
higher_tf = input.timeframe("15", title="Higher Timeframe for Zones")
atr_mult = input(1.5, title="ATR Multiplier for Stop Loss")
risk_reward = input.float(1.2, title="Risk-Reward Ratio", options=[1.2, 1.3, 1.4])
// Calculating EMAs
ema9 = ta.ema(close, ema9_length)
ema15 = ta.ema(close, ema15_length)
// Function to detect supply & demand zones
get_zone(tf) =>
high_tf_high = request.security(syminfo.tickerid, tf, ta.highest(high, 50))
high_tf_low = request.security(syminfo.tickerid, tf, ta.lowest(low, 50))
[high_tf_high, high_tf_low]
[supply_zone, demand_zone] = get_zone(higher_tf)
// ATR-based Stop Loss and Take Profit
atr = ta.atr(14)
long_sl = close - (atr * atr_mult)
long_tp = close + (atr * atr_mult * risk_reward)
short_sl = close + (atr * atr_mult)
short_tp = close - (atr * atr_mult * risk_reward)
// Entry conditions with volume and trend confirmation
longCondition = ta.rising(ema9, 3) and ta.rising(ema15, 3) and close > demand_zone and ta.sma(volume, 20) > ta.sma(volume, 50)
shortCondition = ta.falling(ema9, 3) and ta.falling(ema15, 3) and close < supply_zone and ta.sma(volume, 20) > ta.sma(volume, 50)
// Exit conditions using ATR-based SL/TP with additional trend confirmation
exitLong = (close >= long_tp or close <= long_sl) and ta.falling(ema9, 2)
exitShort = (close <= short_tp or close >= short_sl) and ta.rising(ema9, 2)
// Executing trades with improved risk management
if longCondition
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", from_entry="Long", stop=long_sl, limit=long_tp)
if shortCondition
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", from_entry="Short", stop=short_sl, limit=short_tp)
// Plotting
plot(ema9, color=color.blue, title="EMA 9")
plot(ema15, color=color.red, title="EMA 15")
plot(supply_zone, color=color.orange, title="Supply Zone")
plot(demand_zone, color=color.green, title="Demand Zone")