Il s’agit d’une stratégie de trading quantitative qui combine la tendance EMA, la rupture de cycle et le filtrage des sessions de trading. La stratégie repose principalement sur l’évaluation de la direction de la tendance de la moyenne mobile et utilise le modèle de rupture du prix à la position clé du cycle comme signal de trading. Dans le même temps, un filtrage des périodes de trading est introduit pour améliorer la qualité du trading. La stratégie utilise des méthodes de stop loss en pourcentage et de take profit pour contrôler les risques.
La logique fondamentale de la stratégie comprend les éléments clés suivants :
Cette stratégie construit un système de trading logiquement rigoureux en combinant plusieurs mécanismes tels que les tendances de la moyenne mobile, les modèles de prix et le filtrage des périodes. Bien qu’il existe certaines limites, on s’attend à ce que la stabilité et la rentabilité de la stratégie soient encore renforcées grâce à une optimisation et une amélioration continues. La stratégie convient comme cadre de base d’un système de suivi des tendances à moyen et long terme, et peut être personnalisée et améliorée en fonction des besoins commerciaux réels.
/*backtest
start: 2024-12-17 00:00:00
end: 2025-01-16 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=6
strategy("The Gold Box Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)
// Inputs
roundNumberInterval = input.int(5, title="Round Number Interval ($)", minval=1)
useEMA = input.bool(true, title="Use 20 EMA for Confluence")
emaLength = input.int(20, title="EMA Length")
// Session times for London and NY
londonSession = input("0300-1200", title="London Session (NY Time)")
nySession = input("0800-1700", title="New York Session (NY Time)")
// EMA Calculation
emaValue = ta.ema(close, emaLength)
// Plot Round Number Levels
roundLow = math.floor(low / roundNumberInterval) * roundNumberInterval
roundHigh = math.ceil(high / roundNumberInterval) * roundNumberInterval
// for level = roundLow to roundHigh by roundNumberInterval
// line.new(x1=bar_index - 1, y1=level, x2=bar_index, y2=level, color=color.new(color.gray, 80), extend=extend.both)
// Session Filter
inLondonSession = not na(time("1", londonSession))
inNYSession = not na(time("1", nySession))
inSession = true
// Detect Bullish and Bearish Engulfing patterns
bullishEngulfing = close > open[1] and open < close[1] and close > emaValue and inSession
bearishEngulfing = close < open[1] and open > close[1] and close < emaValue and inSession
// Entry Conditions
if bullishEngulfing
strategy.entry("Long", strategy.long, comment="Bullish Engulfing with EMA Confluence")
if bearishEngulfing
strategy.entry("Short", strategy.short, comment="Bearish Engulfing with EMA Confluence")
// Stop Loss and Take Profit
stopLossPercent = input.float(1.0, title="Stop Loss (%)", minval=0.1) / 100
takeProfitPercent = input.float(1.5, title="Take Profit (%)", minval=0.1) / 100
strategy.exit("Exit Long", "Long", stop=close * (1 - stopLossPercent), limit=close * (1 + takeProfitPercent))
strategy.exit("Exit Short", "Short", stop=close * (1 + stopLossPercent), limit=close * (1 - takeProfitPercent))