
La estrategia es un sistema de seguimiento de tendencias de fusión de múltiples indicadores, que combina el análisis de las tres dimensiones de la tendencia, el dinamismo y la volatilidad del mercado. La lógica central es determinar la tendencia del mercado a través de un indicador en la nube (Ichimoku Cloud), confirmar el dinamismo del diagrama MACD, filtrar el estado de fluctuación del mercado con el ancho de banda de Bollinger (Bollinger Band Width), al mismo tiempo que se introduce un mecanismo de confirmación de tendencias a nivel semanal y, finalmente, administrar el riesgo mediante un stop loss dinámico basado en ATR.
La estrategia utiliza un mecanismo de filtración de señales de múltiples capas: primero, determina la tendencia del mercado a través de los intervalos A y B de un indicador de nube para determinar si el precio está por encima o por debajo de la nube; segundo, utiliza un diagrama recto MACD para determinar la intensidad del movimiento, que requiere un diagrama recto de más de -0.05 en horas de pleno y menos de 0 en horas de vacío; tercero, introduce una línea media de 50 ciclos de períodos de tiempo en línea de circunferencia para confirmar la dirección de la tendencia a un nivel más amplio; cuarto, utiliza un indicador de ancho de banda de Brin para filtrar la tasa de fluctuación baja, solo cuando la amplitud es mayor que 0.02 para abrir posiciones.
La estrategia construye un sistema completo de seguimiento de tendencias a través de la fusión de indicadores multidimensionales y el análisis de períodos de tiempo múltiples, y está equipada con un mecanismo de gestión de riesgos dinámico. Aunque el rendimiento de retroalimentación es excelente, se debe tener en cuenta el riesgo que conlleva el cambio en el entorno del mercado, y se recomienda una verificación cuidadosa y una optimización continua en el entorno físico.
/*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)