
La lógica central de esta estrategia es simple y brutal:El mercado siempre gira en tres fases: acumulación, manipulación y distribución.。El CRT (Broadband + Strong Entity + High Traffic) es la huella digital de la capital dominante, mientras que el algoritmo de detección de fase puede identificar el punto de inflexión del mercado con anticipación。 Los datos de retrospectiva muestran que, en caso de identificar correctamente la etapa de manipulación, la tasa de éxito puede ser superior al 65%。
La clave está en la precisión de la configuración de los parámetros: la captura de tendencias en la línea media de 20 ciclos, 1.6 veces el rango multiplicado por el filtro de ruido y 1.5 veces el volumen multiplicado por el volumen de tráfico confirman el flujo de fondos. Estos no son números de cabeza, sino el resultado de la optimización basada en una gran cantidad de datos históricos.
Las etapas de acumulaciónEl precio está cerca de los mínimos de 50 ciclos y la volatilidad ha caído un 60%, lo que indica que la fuerza dominante está construyendo posiciones. Los analistas tradicionales todavía están viendo “las posiciones de soporte”, y el dinero inteligente ya ha comenzado a organizarse.
La etapa de la manipulaciónLa línea descendente es más de 1,2 veces más grande que la entidad + la transacción es 1,5 veces más grande que la transacción + la línea de salida es el típico “lavado de lavadora de la bodega de temblor”.
Las etapas de distribuciónLos precios están cerca de su máximo histórico, la volatilidad se ha reducido y los envíos han comenzado.
La ventaja de los algoritmos es queIdentificación cuantitativaEl criterio es de menos del 60% de la amplitud de onda promedio, lo que provoca una conversión de fase un 30% más alta que la observación a simple vista.
El 99% de las estrategias de los mercados están siguiendo la tendencia de la caída, mientras que la teoría de la CRT es lo contrario.Ancho de banda (≥ 20 veces el promedio de los 20 ciclos) + entidad fuerte (≥ 45% del ancho de onda total) + línea de sombra pequeña (≤ 25% de la entidad)La probabilidad de que estas tres condiciones se cumplan al mismo tiempo es de menos del 5%, pero una vez que se presentan, la tendencia es muy fuerte.
¿Por qué 1.6 veces? Las estadísticas nos dicen que los eventos con más de 1.5 veces la diferencia estándar son eventos de baja probabilidad, y 1.6 veces es el equilibrio óptimo entre capturar fluctuaciones anormales y evitar la hipersensibilidad.
¿Por qué el 45% de las entidades? La proporción de entidades refleja la oposición de fuerzas aéreas, y más del 45% indica que una de las partes domina completamente a la otra, y esta es la mayor continuidad de la disputa.
La mejor parte de la estrategia es que la gente no se muere.Manipulación de los algoritmos de detección│ El 99% de los minoristas se asustaría si la línea de sombra fuera 1.2 veces más grande que la entidad actual, pero eso es exactamente lo que el “falso movimiento” de la fuerza dominante │
Condiciones de identificación específicas:
Este conjunto de manos, la tasa de control de falsos señales es inferior al 15%. El reconocimiento de la “cabeza de tiro” tradicional tiene una precisión de solo 40%, y la precisión de la señal de manipulación de CRT alcanza el 85%.
La estrategia incluye estrictos mecanismos de control de viento:Stop Loss 200 y Stop Loss 100 con una ventaja de 2:1No es un ajuste arbitrario, sino una configuración óptima basada en las características de la volatilidad del mercado.
Y lo que es más importanteManipulación directa de las posiciones: Cuando se mantiene una posición de más, se produce una señal de manipulación de la cabeza en blanco para cerrar la posición de inmediato y evitar grandes pérdidas en la reversión de la tendencia. Este diseño permite que la estrategia mantenga un rendimiento estable en los mercados convulsionados.
Pero hay que ser claros:El riesgo de pérdidas continuas de la estrategiaEl historial muestra que el máximo de pérdidas consecutivas puede ser de hasta 5 veces, y la administración de fondos debe controlar el riesgo de una sola vez dentro del 2% de los fondos totales.
La estrategia está enMercado con una clara tendenciaEn el caso de los ejemplares más grandes, la tasa de éxito en la fase de transición de los búfalos y los osos es de hasta el 70%.Ordenamiento horizontalEn el caso de que el resultado sea mediocre, la probabilidad de victoria se reducirá a alrededor del 50%.
Escenario no apropiado:
El mejor entorno de uso:
Mercado de divisas: Mantenga los parámetros por defecto, pero puede ajustar el multiplicador de tráfico a 1.3 veces Futuros de índices de accionesEl sistema de filtración de sonido de la cámara de alta velocidad permite que el espectro de sonido sea multiplicado por 1,8 y filtrar más ruido. Las criptomonedas: todos los coeficientes multiplicados por 1.2 adaptados a un entorno de alta volatilidad
Recuerda:El retroceso histórico no representa ganancias futurasSe recomienda probar la estrategia con la posición mínima durante 3 meses y luego aumentar la posición gradualmente para confirmar la adecuación de la estrategia.
/*backtest
start: 2024-09-29 00:00:00
end: 2025-09-26 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Bybit","currency":"ETH_USDT","balance":500000}]
*/
//@version=5
strategy("CRT Theory — CRT Candle + Phases (configurable)", overlay=true, margin_long=100, margin_short=100)
// ---------------------- INPUTS ----------------------
rangeLen = input.int(20, "Avg Range Length (bars)")
volLen = input.int(20, "Avg Volume Length (bars)")
rangeMult = input.float(1.6, "Range Multiplier for CRT candle", step=0.1)
volMult = input.float(1.5, "Volume Multiplier for CRT candle", step=0.1)
bodyRatio = input.float(0.45, "Min body / range (CRT candle)", step=0.01)
wickRatio = input.float(0.25, "Max wick (each) relative to body (CRT candle)", step=0.01)
manipWickRatio = input.float(1.2, "Manipulation (shakeout) wick ratio (wick > body * x)", step=0.1)
accumLen = input.int(10, "Accumulation lookback length (bars)")
distLen = input.int(10, "Distribution lookback length (bars)")
accLowVolFactor = input.float(0.6, "Accumulation: stdev(range) < avgRange * factor", step=0.05)
distLowVolFactor= input.float(0.6, "Distribution: stdev(range) < avgRange * factor", step=0.05)
phaseLookback = input.int(50, "Phase detection lookback (bars)")
enableLongs = input.bool(true, "Enable long entries on Manipulation bullish signal")
enableShorts = input.bool(false, "Enable short entries on Distribution bearish signal")
takeProfitPips = input.float(200.0, "TP (pips / points)", step=1)
stopLossPips = input.float(100.0, "SL (pips / points)", step=1)
// ---------------------- BASICS ----------------------
range_val = high - low
avgRange = ta.sma(range_val, rangeLen)
stdevRange = ta.stdev(range_val, rangeLen)
avgVol = ta.sma(volume, volLen)
// candle geometry
candleBody = math.abs(close - open)
upperWick = high - math.max(open, close)
lowerWick = math.min(open, close) - low // positive value
// Avoid NaN negatives
lowerWick := math.max(lowerWick, 0.0)
// ---------------------- CRT CANDLE DETECTION ----------------------
// Criteria for a CRT (wide, strong-bodied, reasonable wicks, volume spike)
isWideRange = range_val >= avgRange * rangeMult
isBigBody = candleBody >= range_val * bodyRatio
smallWicks = (upperWick <= candleBody * wickRatio) and (lowerWick <= candleBody * wickRatio)
volSpike = volume >= avgVol * volMult
isCRT = isWideRange and isBigBody and smallWicks and volSpike
// Mark CRT bullish vs bearish
isCRTBull = isCRT and close > open
isCRTBear = isCRT and close < open
// Plot CRT candle label
plotshape(isCRT, title="CRT Candle", style=shape.labelup, text="CRT", textcolor=color.white, location=location.abovebar, size=size.tiny, color=isCRTBull ? color.new(color.green, 5) : color.new(color.red, 5))
// Outline CRT candles visually by coloring candle bodies (optional)
barcolor(isCRTBull ? color.new(color.green, 80) : isCRTBear ? color.new(color.red, 80) : na)
// ---------------------- PHASE DETECTION HEURISTICS ----------------------
// ACCUMULATION:
// - Low volatility for a stretch (stdev(range) small relative to avgRange)
// - Price is near a recent local low (we check rolling lowest close within some window)
accWindowRange = ta.sma(range_val, accumLen)
acc_stdev = ta.stdev(range_val, accumLen)
priceNearLow = close <= ta.lowest(close, phaseLookback) * 1.005 // within 0.5% of recent low
isAccumulation = (acc_stdev < accLowVolFactor * accWindowRange) and priceNearLow
// DISTRIBUTION:
// - Low volatility near a recent high
distWindowRange = ta.sma(range_val, distLen)
dist_stdev = ta.stdev(range_val, distLen)
priceNearHigh = close >= ta.highest(close, phaseLookback) * 0.995
isDistribution = (dist_stdev < distLowVolFactor * distWindowRange) and priceNearHigh
// MANIPULATION (shakeout):
// - big spike down wick (or up wick for bearish shakeout) with rejection
// - lowerWick significantly larger than body (for bullish manipulation shakeout)
// - range and volume spike accompany it
manipLowerWick = lowerWick > candleBody * manipWickRatio
manipUpperWick = upperWick > candleBody * manipWickRatio
manipRangeSpike = range_val >= avgRange * (rangeMult * 0.9)
manipVolSpike = volume >= avgVol * volMult
isBullishManipulation = manipLowerWick and manipRangeSpike and manipVolSpike and close > open
isBearishManipulation = manipUpperWick and manipRangeSpike and manipVolSpike and close < open
// We treat "manipulation" as any of the above within the lookback zone
isManipulation = isBullishManipulation or isBearishManipulation
// ---------------------- PHASE LABELING / STATE ----------------------
// We'll create a rolling phase state with priority: Manipulation (immediate) > Accumulation/Distribution > none
var int phase = 0 // 0 = none, 1 = Accumulation, 2 = Manipulation, 3 = Distribution
// Update phase each bar
if isManipulation
phase := 2
else
if isAccumulation
phase := 1
else
if isDistribution
phase := 3
else
// decay: if previously in phase and conditions still somewhat hold, keep for a few bars
phase := nz(phase[1])
// Background shading
bgColor = phase == 1 ? color.new(color.green, 90) : phase == 2 ? color.new(color.yellow, 90) : phase == 3 ? color.new(color.red, 90) : na
bgcolor(bgColor)
// Draw phase labels on chart
var label phaseLbl = na
if barstate.islast
label.delete(phaseLbl)
phaseTxt = switch phase
1 => "ACCUMULATION"
2 => "MANIPULATION"
3 => "DISTRIBUTION"
=> "—"
phaseLbl := label.new(bar_index, high, text=phaseTxt, style=label.style_label_left, color=color.black, textcolor=color.white, size=size.small)
// Small marker for manipulation type
plotshape(isBullishManipulation, title="Bullish Shakeout", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, text="Shake")
plotshape(isBearishManipulation, title="Bearish Shakeout", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, text="Shake")
// ---------------------- STRATEGY RULES (simple examples) ----------------------
// Long entry: when bullish manipulation (shakeout) occurs in/after accumulation (typical CRT long setup)
enterLong = enableLongs and isBullishManipulation and (phase == 1 or phase == 2)
// Short entry: bearish manipulation in/after distribution
enterShort = enableShorts and isBearishManipulation and (phase == 3 or phase == 2)
// Money management: convert pips/points to price distance
tp = takeProfitPips * syminfo.mintick
sl = stopLossPips * syminfo.mintick
if enterLong
strategy.entry("CRT Long", strategy.long)
strategy.exit("ExitLong", "CRT Long", stop=close - sl, limit=close + tp)
if enterShort
strategy.entry("CRT Short", strategy.short)
strategy.exit("ExitShort", "CRT Short", stop=close + sl, limit=close - tp)
// Optionally add conservative exit: if opposite manipulation occurs
if strategy.position_size > 0 and isBearishManipulation
strategy.close("CRT Long", comment="Opposite Manipulation")
if strategy.position_size < 0 and isBullishManipulation
strategy.close("CRT Short", comment="Opposite Manipulation")
// ---------------------- VISUAL DEBUG INFO ----------------------
plot(avgRange, title="Avg Range", linewidth=1)
plot(avgVol, title="Avg Vol", linewidth=1, style=plot.style_areabr)