
La stratégie est un système de trading haute fréquence basé sur des signaux de croisement de moyennes mobiles exponentielles (EMA) à court terme. Il combine un mécanisme de suivi adaptatif de la volatilité avec une gestion dynamique des positions et un contrôle strict des risques pour capturer rapidement les fluctuations du marché à court terme. La stratégie fonctionne sur des périodes de temps plus courtes telles que 1 minute ou 5 minutes, et convient aux traders actifs qui recherchent des opportunités de trading fréquentes.
La logique principale de la stratégie repose sur les signaux de croisement de l’EMA rapide (3 périodes) et de l’EMA lente (8 périodes). Lorsque la ligne rapide passe en dessous de la ligne lente, un signal long est généré ; lorsque la ligne rapide passe en dessous de la ligne lente, un signal court est généré. La stratégie utilise l’indicateur ATR pour mesurer la volatilité du marché et définit dynamiquement des objectifs de stop loss et de profit en conséquence. Le système prend en charge deux modes : le trading à quantité fixe de contrats et la gestion dynamique des positions en fonction de la valeur nette du compte. En mode position dynamique, le risque de chaque transaction est contrôlé à 0,5 % de la valeur nette du compte. La stratégie utilise un ratio risque-récompense de 1,2 fois et combine 1,5 fois l’ATR comme distance de suivi pour le stop loss mobile.
Cette stratégie construit un système de trading haute fréquence complet en combinant des signaux de croisement EMA à court terme et une gestion dynamique des risques. Les avantages de cette stratégie sont une réponse rapide et un contrôle strict des risques, mais il faut également prêter attention à des problèmes tels que les faux signaux et les coûts de transaction. Grâce à une optimisation continue et à un ajustement des paramètres, les stratégies peuvent mieux s’adapter aux différents environnements de marché et améliorer l’efficacité et la stabilité des transactions.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("High-Frequency EMA Scalping Strategy - Adjustable Contracts", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)
// Input parameters
fastEmaLength = input.int(3, title="Fast EMA Length", minval=1)
slowEmaLength = input.int(8, title="Slow EMA Length", minval=1)
atrLength = input.int(10, title="ATR Length", minval=1)
riskRewardRatio = input.float(1.2, title="Risk/Reward Ratio", minval=1)
useDynamicPositionSizing = input.bool(false, title="Use Dynamic Position Sizing?")
fixedContracts = input.int(1, title="Number of Contracts (if Fixed)", minval=1) // Fixed number of contracts
// Calculate EMA values
fastEma = ta.ema(close, fastEmaLength)
slowEma = ta.ema(close, slowEmaLength)
// Calculate ATR for dynamic stop-loss and take-profit
atr = ta.atr(atrLength)
// Dynamic position sizing (if enabled)
capital = strategy.equity
riskPerTrade = capital * 0.005 // Risk 0.5% per trade
dynamicTradeQty = riskPerTrade / (atr * 1.5)
// Use fixed or dynamic position sizing
tradeQty = useDynamicPositionSizing ? dynamicTradeQty : fixedContracts
// Entry conditions
longCondition = ta.crossover(fastEma, slowEma)
shortCondition = ta.crossunder(fastEma, slowEma)
// Long trade execution
if longCondition
risk = atr * 1.0
reward = risk * riskRewardRatio
strategy.entry("Long", strategy.long, qty=tradeQty)
strategy.exit("Trailing Stop Long", from_entry="Long", trail_points=atr * 1.5, trail_offset=atr * 1.0)
strategy.exit("Take Profit", from_entry="Long", limit=close + reward, stop=close - risk)
// Short trade execution
if shortCondition
risk = atr * 1.0
reward = risk * riskRewardRatio
strategy.entry("Short", strategy.short, qty=tradeQty)
strategy.exit("Trailing Stop Short", from_entry="Short", trail_points=atr * 1.5, trail_offset=atr * 1.0)
strategy.exit("Take Profit", from_entry="Short", limit=close - reward, stop=close + risk)
// Plot EMA lines for reference
plot(fastEma, color=color.blue, title="Fast EMA")
plot(slowEma, color=color.red, title="Slow EMA")