
Il s’agit d’une stratégie de suivi de tendance basée sur des croisements de moyennes pluri-périodiques. La stratégie est principalement basée sur la relation croisée des moyennes mobiles de l’indice à 20, 50 et 200 cycles (EMA) et la relation entre le prix et la moyenne pour déterminer le moment d’entrée en bourse, tout en définissant un stop loss basé sur le pourcentage pour contrôler le risque. La stratégie est particulièrement adaptée aux périodes de temps plus longues, telles que les graphiques horaires, journaliers et hebdomadaires, et capture efficacement les tendances à moyen et long terme.
La logique de base de la stratégie est basée sur le système de multiples moyennes et l’analyse du comportement des prix:
Il s’agit d’une stratégie de suivi de tendance conçue de manière rationnelle et logique. L’utilisation combinée de multiples indicateurs techniques garantit la fiabilité de la stratégie et offre un programme de contrôle des risques clair. La stratégie est particulièrement adaptée pour fonctionner sur des graphiques à grande périodicité et présente un avantage unique pour saisir les tendances à moyen et long terme.
/*backtest
start: 2024-10-28 00:00:00
end: 2024-11-27 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Cross Strategy with Targets and Fill", overlay=true)
// Define EMAs
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
// Plot EMAs (hidden)
plot(ema20, color=color.blue, title="EMA 20", display=display.none)
plot(ema50, color=color.red, title="EMA 50", display=display.none)
plot(ema200, color=color.green, title="EMA 200", display=display.none)
// Define the conditions
priceCrossAboveEMA20 = ta.crossover(close, ema20)
priceCloseAboveEMA20 = close > ema20
ema20AboveEMA50 = ema20 > ema50
ema50AboveEMA200 = ema50 > ema200
// Buy condition
buyCondition = priceCrossAboveEMA20 and priceCloseAboveEMA20 and ema20AboveEMA50 and ema50AboveEMA200
// Plot buy signals
plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
// Declare and initialize variables for take profit and stop loss levels
var float longTakeProfit = na
var float longStopLoss = na
var float buyPrice = na
// Update levels and variables on buy condition
if (buyCondition)
// Enter a new buy position
strategy.entry("Buy", strategy.long)
// Set new take profit and stop loss levels
longTakeProfit := strategy.position_avg_price * 1.10 // Target is 10% above the buy price
longStopLoss := strategy.position_avg_price * 0.95 // Stop loss is 5% below the buy price
buyPrice := strategy.position_avg_price
// Plot levels for the new trade
plotTakeProfit = plot(longTakeProfit, color=color.green, title="Take Profit", linewidth=1, offset=-1)
plotStopLoss = plot(longStopLoss, color=color.red, title="Stop Loss", linewidth=1, offset=-1)
plotBuyPrice = plot(buyPrice, color=color.blue, title="Buy Price", linewidth=1, offset=-1)
// Fill areas between buy price and take profit/stop loss levels
fill(plotBuyPrice, plotTakeProfit, color=color.new(color.green, 90), title="Fill to Take Profit") // Light green fill to target
fill(plotBuyPrice, plotStopLoss, color=color.new(color.red, 90), title="Fill to Stop Loss") // Light red fill to stop loss
// Exit conditions
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", limit=longTakeProfit, stop=longStopLoss)