
La stratégie est un système de suivi de tendances basé sur des croisements de deux lignes de symétrie, qui capture les tendances du marché par la croisement des moyennes mobiles à court et à long terme, et gère les risques de négociation avec un rapport risque/bénéfice de 1: 3. La stratégie utilise des objectifs de stop-loss et de profit fixes, tout en combinant des mécanismes de stop-loss mobiles pour protéger les bénéfices.
La stratégie utilise les moyennes mobiles à court terme de 74 cycles (SMA court) et les moyennes mobiles à long terme de 70 cycles (SMA long) comme indicateurs principaux. Lorsque la moyenne à court terme monte et traverse la moyenne à long terme, le système génère un signal de multiplication; lorsque la moyenne à court terme descend et traverse la moyenne à long terme, le système génère un signal de blanchiment. La taille de la position par transaction est fixée à 0,002, le stop-loss est fixé à 353 dollars, et l’objectif de profit est de 3 fois le stop-loss (1059 dollars).
Il s’agit d’une stratégie de suivi de tendance structurée et logiquement claire. Conçue pour les transactions à moyen et long terme par la capture de tendances en croisement de la courbe, la gestion rigoureuse des risques et le contrôle de la position. Bien qu’il existe des défauts inhérents tels que le retard de la courbe, la stabilité et la rentabilité de la stratégie devraient être encore améliorées par la direction d’optimisation suggérée, en particulier par l’introduction d’ajustements de paramètres dynamiques et de filtrage de l’environnement du marché.
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-17 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bitcoin Strategy by Jag", overlay=true)
// Input Parameters
shortSMALength = input.int(74, title="Short SMA Length")
longSMALength = input.int(70, title="Long SMA Length")
trailStopOffset = input.float(353, title="Trailing Stop Offset (USD)") // Trailing Stop Loss Offset in USD
tradeSize = input.float(1, title="Trade Size")
// Automatically set Take Profit as 3 times Stop Loss
fixedTakeProfit = trailStopOffset * 3
// Backtesting Date Range
startDate = timestamp(2025, 02,13, 0, 0)
endDate = timestamp(2025, 03, 31, 23, 59)
withinDateRange = true
// Indicators
shortSMA = ta.sma(close, shortSMALength)
longSMA = ta.sma(close, longSMALength)
// Crossover Conditions
longCondition = withinDateRange and ta.crossover(shortSMA, longSMA)
shortCondition = withinDateRange and ta.crossunder(shortSMA, longSMA)
// Entry Logic
if (strategy.position_size == 0) // Only allow new trades if no position is open
if (longCondition)
strategy.entry("Long", strategy.long, tradeSize)
if (shortCondition)
strategy.entry("Short", strategy.short, tradeSize)
// Exit Logic for Long Position
if (strategy.position_size > 0)
strategy.exit("Long exit", "Long", stop=strategy.position_avg_price - trailStopOffset, limit=strategy.position_avg_price + fixedTakeProfit) // Using stop and limit
// Exit Logic for Short Position
if (strategy.position_size < 0)
strategy.exit("Short Exit", "Short", stop=strategy.position_avg_price + trailStopOffset, limit=strategy.position_avg_price - fixedTakeProfit) // Using stop and limit
// Plot Moving Averages
plot(shortSMA, color=color.blue, title="Short SMA")
plot(longSMA, color=color.black, title="Long SMA")
// Visual Signals
plotshape(series=longCondition and strategy.position_size == 0, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=shortCondition and strategy.position_size == 0, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)