
Cette stratégie est une stratégie de trading quantitative basée sur la croisée des moyennes mobiles et l’arrêt des pertes ATR dynamiques. La stratégie utilise une moyenne mobile simple ((SMA) de deux périodes différentes pour générer un signal de trading, tout en utilisant une amplitude d’oscillation réelle moyenne ((ATR) pour définir dynamiquement des points d’arrêt et de perte afin de mieux contrôler le risque.
Le principe central de la stratégie est d’utiliser la croisée des moyennes mobiles pour capturer les changements de tendance des prix. Un signal d’achat est généré lorsque la moyenne mobile rapide traverse la moyenne mobile lente de bas en haut; un signal de vente est généré lorsque la moyenne mobile rapide traverse la moyenne mobile lente de haut en bas.
La stratégie est une stratégie de suivi de tendance simple et facile à comprendre, qui capture les tendances des prix en croisant les moyennes mobiles, tout en utilisant l’ATR pour contrôler les risques. Bien que la stratégie présente certains risques, l’optimisation de la stratégie en termes d’optimisation des paramètres, de filtrage des signaux et de gestion des risques peut améliorer encore la stabilité et la rentabilité de la stratégie.
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Enhanced Moving Average Crossover Strategy", overlay=true)
// Input parameters
fastLength = input(10, title="Fast MA Length")
slowLength = input(50, title="Slow MA Length")
atrLength = input(14, title="ATR Length")
riskPerTrade = input(1, title="Risk Per Trade (%)") / 100
// Time-based conditions
isLondonSession = hour >= 8 and hour <= 15
isAsianSession = hour >= 0 and hour <= 7
isEuropeanSession = hour >= 7 and hour <= 14
// Moving Averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)
// Average True Range (ATR) for dynamic stop loss and take profit
atr = ta.atr(atrLength)
// Buy and Sell Conditions
buySignal = ta.crossover(fastMA, slowMA)
sellSignal = ta.crossunder(fastMA, slowMA)
// Dynamic stop loss and take profit
stopLoss = close - atr * 1.5
takeProfit = close + atr * 3
// Strategy Logic
if (buySignal and isEuropeanSession)
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Buy", limit=takeProfit, stop=stopLoss)
if (sellSignal and isEuropeanSession)
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Sell", limit=takeProfit, stop=stopLoss)
// Plotting
plot(fastMA, color=color.blue, title="Fast MA")
plot(slowMA, color=color.red, title="Slow MA")
plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")