
La stratégie est un système de trading quantifié à haute fréquence combinant l’analyse des tendances sur plusieurs périodes de temps et les relations entre les prix. Elle juge les tendances du marché principalement à l’aide de moyennes mobiles indicielles ((EMA) sur deux périodes de temps de 3 minutes et 1 heure, tout en combinant l’analyse de la quantité de transaction pour confirmer les signaux de négociation et en concevant un mécanisme de double sortie basé sur les plus hauts de la journée et les points de temps fixes.
La logique fondamentale de la stratégie se compose de trois parties principales :
Les signaux d’entrée doivent satisfaire aux trois conditions ci-dessus simultanément. La stratégie de sortie utilise l’une des deux conditions suivantes: le prix a atteint le plus haut point de la journée ou est arrivé à 15 heures.
Cette stratégie, combinant l’analyse de multiples cycles de temps et les relations de quantité et de prix, permet de construire un système de négociation relativement complet. Son avantage réside dans la clarté de la logique et la simplicité de mise en œuvre, mais nécessite toujours une optimisation en matière de contrôle des risques. Il est recommandé aux traders de procéder à des tests approfondis des données historiques avant leur utilisation sur le terrain et d’optimiser les paramètres en fonction des caractéristiques de chaque type de transaction.
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Intraday + 1-Hour Trend Match", overlay=true)
// Inputs
emaLength3Min = input.int(50, title="EMA Length (3-Min)")
emaLength1Hr = input.int(50, title="EMA Length (1-Hour)")
volumeMultiplier = input.float(1.5, title="Volume Spike Multiplier")
// Intraday (3-Minute) EMA and Volume Spike
ema3Min = ta.ema(close, emaLength3Min)
volumeSMA = ta.sma(volume, 20)
isVolumeSpike = volume > (volumeSMA * volumeMultiplier)
// 1-Hour Trend (EMA)
ema1Hr = request.security(syminfo.tickerid, "60", ta.ema(close, emaLength1Hr))
is1HrUptrend = close > ema1Hr
// Intraday Signal
buyCondition3Min = close > ema3Min and isVolumeSpike
// Combined Signal: Match 3-Min Signal with 1-Hour Trend
finalBuyCondition = buyCondition3Min and is1HrUptrend
// All-Day High Tracking
var float allDayHigh = na
if (hour == 9 and minute == 0)
allDayHigh := high // Reset the all-day high at market open
else
allDayHigh := math.max(allDayHigh, high) // Update all-day high
// Debugging Plots
plot(ema3Min, color=color.blue, title="EMA 3-Min")
plot(ema1Hr, color=color.orange, title="EMA 1-Hour")
plotshape(isVolumeSpike, style=shape.circle, color=color.blue, title="Volume Spike (3-Min)")
plotshape(finalBuyCondition, style=shape.triangleup, color=color.green, title="Buy Signal")
plot(allDayHigh, color=color.red, title="All-Day High", linewidth=2)
// Strategy Execution
if (finalBuyCondition)
strategy.entry("Buy Signal", strategy.long)
// Exit Conditions
exitCondition = (close == allDayHigh) or (hour == 15 and minute >= 0)
if (exitCondition)
strategy.close("Buy Signal")