
Cette stratégie est un système de trading automatisé basé sur des signaux de croisement de moyennes mobiles, qui optimise les performances de trading en définissant un ratio risque/rendement fixe. La stratégie utilise le croisement de la moyenne mobile rapide (Fast MA) et de la moyenne mobile lente (Slow MA) pour déterminer la direction de la tendance du marché et combine le point d’arrêt des pertes prédéfini et l’objectif de profit pour gérer le risque de position.
La logique de base de la stratégie repose sur les signaux de croisement générés par deux moyennes mobiles de périodes différentes (10 périodes et 30 périodes). Lorsque la ligne rapide croise la ligne lente, le système génère un signal long ; lorsque la ligne rapide croise la ligne lente, le système génère un signal court. Après l’ouverture de chaque position, le système calculera automatiquement la position de stop loss en fonction du ratio stop loss prédéfini de 2 % et définira l’objectif de profit en fonction d’un ratio risque/rendement de 2,5 fois. Cette approche garantit que chaque transaction présente un profil risque-rendement fixe.
Cette stratégie construit un système de trading complet en combinant des méthodes d’analyse technique classiques avec des concepts modernes de gestion des risques. Bien qu’il existe certaines limites, grâce à une optimisation et une amélioration continues, la stratégie devrait permettre de maintenir des performances stables dans différents environnements de marché. La clé est d’ajuster en permanence les paramètres en fonction des résultats de trading réels et de trouver la configuration qui convient le mieux à l’environnement de marché actuel.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SOL 15m 2.5 R:R Strategy", overlay=true, margin_long=100, margin_short=100, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1)
//---------------------------------------------------
// User Inputs
//---------------------------------------------------
// sym = input.symbol("swap", "Symbol")
timeframe = input.timeframe("15", "Timeframe")
fastLength = input.int(10, "Fast MA Length")
slowLength = input.int(30, "Slow MA Length")
stopLossPerc = input.float(2.0, "Stop Loss %", step=0.1) // This is an example; adjust to achieve ~45% win rate
RR = input.float(2.5, "Risk to Reward Ratio", step=0.1)
//---------------------------------------------------
// Data Sources
//---------------------------------------------------
price = request.security("swap", timeframe, close)
// Compute moving averages
fastMA = ta.sma(price, fastLength)
slowMA = ta.sma(price, slowLength)
// Entry Conditions
longCondition = ta.crossover(fastMA, slowMA)
shortCondition = ta.crossunder(fastMA, slowMA)
//---------------------------------------------------
// Stop Loss and Take Profit Calculation
//---------------------------------------------------
var entryPrice = 0.0
if (strategy.position_size == 0) // not in a position
if longCondition
// Long entry
entryPrice := price
strategy.entry("Long", strategy.long)
if shortCondition
// Short entry
entryPrice := price
strategy.entry("Short", strategy.short)
if strategy.position_size > 0
// We are in a long position
if strategy.position_avg_price > 0 and strategy.position_size > 0
longStop = strategy.position_avg_price * (1 - stopLossPerc/100)
longTarget = strategy.position_avg_price * (1 + (stopLossPerc/100)*RR)
strategy.exit("Long Exit", "Long", stop=longStop, limit=longTarget)
if strategy.position_size < 0
// We are in a short position
if strategy.position_avg_price > 0 and strategy.position_size < 0
shortStop = strategy.position_avg_price * (1 + stopLossPerc/100)
shortTarget = strategy.position_avg_price * (1 - (stopLossPerc/100)*RR)
strategy.exit("Short Exit", "Short", stop=shortStop, limit=shortTarget)
//---------------------------------------------------
// Plotting
//---------------------------------------------------
plot(fastMA, color=color.new(color.teal, 0), title="Fast MA")
plot(slowMA, color=color.new(color.orange, 0), title="Slow MA")