
La stratégie est un système de trading de suivi de tendance à fusion multi-indicateurs, combinant l’analyse des trois dimensions de la tendance, de la dynamique et de la volatilité du marché. La logique centrale est de juger de la tendance du marché à travers un nuage d’indicateurs (Ichimoku Cloud), de confirmer la dynamique du graphique vertical MACD, de filtrer l’état de volatilité du marché à l’aide de la largeur de la bande de Bollinger (Bollinger Band Width), tout en introduisant un mécanisme de confirmation de tendance au niveau de la semaine, et enfin de gérer le risque par un arrêt dynamique basé sur l’ATR.
La stratégie utilise un mécanisme de filtrage de signaux à plusieurs niveaux: d’abord, déterminer la grande tendance du marché en déterminant si les prix sont au-dessus ou au-dessous de la nuée par les intervalles A et B de l’indicateur d’un nuage; ensuite, utiliser le diagramme linéaire MACD pour déterminer l’intensité de la dynamique, en demandant un diagramme linéaire à plusieurs heures supérieur à -0.05, moins de 0 heures de pointe; troisième, introduire la moyenne des 50 cycles de la période périodique de la courbe de temps pour confirmer la direction de la tendance à un niveau plus élevé; quatrième, utiliser l’indicateur de largeur de bande de Brin pour filtrer le taux de fluctuation bas, uniquement lorsque la largeur est supérieure à 0.02.
La stratégie a construit un système complet de suivi des tendances grâce à la fusion d’indicateurs multidimensionnels et à l’analyse de cycles multi-temps, et est équipée d’un mécanisme de gestion des risques dynamique. Bien que le suivi des performances soit excellent, il convient de rester attentif aux risques liés aux changements de l’environnement du marché.
/*backtest
start: 2024-11-01 00:00:00
end: 2025-02-19 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FIWB
//@version=6
strategy("Momentum Edge Strategy - 1D BTC Optimized", overlay=true)
// --- Input Parameters ---
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
bbWidthThreshold = input.float(0.02, title="Bollinger Band Width Threshold")
// --- Ichimoku Cloud ---
conversionLine = (ta.highest(high, 9) + ta.lowest(low, 9)) / 2
baseLine = (ta.highest(high, 26) + ta.lowest(low, 26)) / 2
leadingSpanA = (conversionLine + baseLine) / 2
leadingSpanB = (ta.highest(high, 52) + ta.lowest(low, 52)) / 2
priceAboveCloud = close > leadingSpanA and close > leadingSpanB
priceBelowCloud = close < leadingSpanA and close < leadingSpanB
// --- MACD Histogram ---
[_, _, macdHistogram] = ta.macd(close, 12, 26, 9)
// --- Multi-Timeframe Trend Confirmation ---
higherTFTrend = request.security(syminfo.tickerid, "W", close > ta.sma(close, 50))
// --- Bollinger Band Width ---
bbBasis = ta.sma(close, 20)
bbUpper = bbBasis + 2 * ta.stdev(close, 20)
bbLower = bbBasis - 2 * ta.stdev(close, 20)
bbWidth = (bbUpper - bbLower) / bbBasis
// --- ATR-based Stop Loss ---
atrValue = ta.atr(atrLength)
highestHigh = ta.highest(high, atrLength)
lowestLow = ta.lowest(low, atrLength)
longStopLoss = bbWidth < bbWidthThreshold ? lowestLow : close - atrValue * atrMultiplier
shortStopLoss= bbWidth < bbWidthThreshold ? highestHigh : close + atrValue * atrMultiplier
// --- Entry Conditions ---
longCondition = priceAboveCloud and macdHistogram > -0.05 and higherTFTrend and bbWidth > bbWidthThreshold
shortCondition = priceBelowCloud and macdHistogram < 0 and not higherTFTrend and bbWidth > bbWidthThreshold
// --- Strategy Execution ---
if longCondition
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", from_entry="Long", stop=longStopLoss)
if shortCondition
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", from_entry="Short", stop=shortStopLoss)
// --- Plotting ---
plot(leadingSpanA, color=color.new(color.green, 80), title="Leading Span A")
plot(leadingSpanB, color=color.new(color.red, 80), title="Leading Span B")
plotshape(series=longCondition ? close : na, title="Long Signal", location=location.belowbar, color=color.green)
plotshape(series=shortCondition ? close : na, title="Short Signal", location=location.abovebar, color=color.red)