Método de negociación geométrica: el código de mercado del círculo del triángulo del diamante

EMA RSI PATTERN
Fecha de creación: 2025-09-26 08:59:35 Última modificación: 2025-09-26 08:59:35
Copiar: 0 Número de Visitas: 180
2
Seguir
319
Seguidores

Método de negociación geométrica: el código de mercado del círculo del triángulo del diamante Método de negociación geométrica: el código de mercado del círculo del triángulo del diamante

¿Cuál es la magia de esta estrategia?

¿Sabías que el mercado es como un enorme patio de recreo geométrico? Esta estrategia simplifica el movimiento de precios complejos en tres formas encantadoras: el diamante de diamante representa una señal de reversión, el triángulo de diamante representa una continuación de la tendencia, el círculo de diamante representa un filtro de vibración.

La lógica central de la estrategia es súper simple: los EMA forman bandas de nube para juzgar las grandes tendencias, y luego, según la posición del precio con respecto a las bandas de nube, se colocan diferentes “etiquetas” a los diferentes puntos altos y bajos. Las rupturas debajo de la banda de nube son señales de inversión de diamantes, las rupturas por encima de la banda de nube son señales de continuación del triángulo, y las señales que no están lo suficientemente separadas por los EMA se filtran como “ruido” con la marca de círculo.

Los tres grandes sistemas de señales resueltos

El semáforo de diamantes¡Captando oportunidades de reversión! Cuando los precios se encuentran en los puntos más altos y más bajos por debajo de la banda de la nube EMA, o cuando los precios se encuentran en los puntos más bajos y más altos por encima de la banda de la nube.

La señal triangular¡Activado cuando el precio tiene un punto más alto y más bajo por encima de la franja de nubes, o cuando tiene un punto más bajo y más alto por debajo de la franja de nubes! Imagínese que está surfeando y sigue la cabeza de la ola, la tasa de éxito es naturalmente más alta.

Filtrado circularCuando la separación de la EMA es menor que el umbral establecido, todas las señales se etiquetan como “ruido de vibración”. Es como si la estrategia estuviera equipada con una “función de protección contra el estrés” para evitar la apertura frecuente de posiciones en el mercado horizontal.

El diseño de los ventiladores de aluminio: simple, rudimentario y eficaz

La lógica de parada de pérdidas utiliza puntos clave de la fase anterior: la parada de múltiples cabezas se establece en el punto más bajo anterior y la parada de cabezas vacías en el punto más alto anterior. La ventaja de este método es que tiene una base técnica clara y no se borra por un “falso avance” debido a una configuración arbitraria.

El mecanismo de salida del RSI también es inteligente: las posiciones de más cabeza se cierran cuando el RSI retrocede de más de 70, y las posiciones de cabeza vacía se cierran cuando el RSI rebota por debajo de 30. Esto puede bloquear los beneficios y evitar el riesgo de continuar manteniendo posiciones en zonas de extrema sobreventa y sobreventa.

¿Para quién es esta estrategia?

El mejor escenarioLa estrategia ajusta automáticamente el tamaño de la posición: la señal de reversión prueba con una posición del 50% y la señal de continuación sigue con una posición del 100%

Guía para evitar las fosasAunque hay un mecanismo de filtración circular, las señales se vuelven escasas si el mercado es horizontal durante mucho tiempo. Además, esta estrategia depende más del análisis técnico, y las noticias fundamentales importantes pueden hacer que la geometría “no funcione”.

¡Recuerda que la mejor estrategia no es la más compleja, sino la que mejor se adapte a tu estilo de trading!

Código Fuente de la Estrategia
/*backtest
start: 2024-09-26 00:00:00
end: 2025-09-24 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/

//@version=5
strategy("💎🔺⚫ Diamond-Triangle-Circle Strategy", overlay=true)

// === INPUTS ===
ema_fast = input.int(10, "Fast EMA Length")
ema_slow = input.int(20, "Slow EMA Length")
min_ema_separation = input.float(0.1, "Min EMA Separation %", minval=0.01, maxval=1.0)
rsi_length = input.int(14, "RSI Length")
rsi_exit_level = input.int(70, "RSI Exit Level")

// === CALCULATIONS ===
ema_fast_val = ta.ema(close, ema_fast)
ema_slow_val = ta.ema(close, ema_slow)
rsi = ta.rsi(close, rsi_length)

// EMA Cloud and separation
cloud_bull = ema_fast_val > ema_slow_val
ema_separation_pct = math.abs(ema_fast_val - ema_slow_val) / close * 100
chop_filter = ema_separation_pct >= min_ema_separation

// Price position relative to cloud
price_above_cloud = close > math.max(ema_fast_val, ema_slow_val)
price_below_cloud = close < math.min(ema_fast_val, ema_slow_val)

// === HIGHER LOW DETECTION ===
lowPoint = ta.lowest(low, 3)
prevLowPoint = ta.lowest(low[3], 3)
isHigherLow = low == lowPoint and low > prevLowPoint
higherLowConfirmed = isHigherLow and close > open

// === LOWER HIGH DETECTION ===
highPoint = ta.highest(high, 3)
prevHighPoint = ta.highest(high[3], 3)
isLowerHigh = high == highPoint and high < prevHighPoint
lowerHighConfirmed = isLowerHigh and close < open

// === SIGNAL CLASSIFICATION ===
// Diamond Signal - Reversal (below cloud)
diamondBullish = higherLowConfirmed and price_below_cloud and chop_filter
diamondBearish = lowerHighConfirmed and price_above_cloud and chop_filter

// Triangle Signal - Continuation (above cloud)
triangleBullish = higherLowConfirmed and price_above_cloud and chop_filter
triangleBearish = lowerHighConfirmed and price_below_cloud and chop_filter

// Circle Signal - Chop (filtered out - display only)
chopBullish = higherLowConfirmed and not chop_filter
chopBearish = lowerHighConfirmed and not chop_filter

// === RSI EXIT LOGIC ===
rsi_was_above_70 = rsi[1] >= rsi_exit_level and rsi < rsi[1]
rsi_was_below_30 = rsi[1] <= (100 - rsi_exit_level) and rsi > rsi[1]

// === STOP LOSS LOGIC ===
var float long_stop = na
var float short_stop = na

if diamondBullish or triangleBullish
    long_stop := prevLowPoint
    
if diamondBearish or triangleBearish  
    short_stop := prevHighPoint

// === STRATEGY EXECUTION ===
// Long Entries
if diamondBullish
    strategy.entry("Diamond Long", strategy.long, qty=50, comment="💎 Reversal")
    
if triangleBullish
    strategy.entry("Triangle Long", strategy.long, qty=100, comment="🔺 Continuation")

// Short Entries    
if diamondBearish
    strategy.entry("Diamond Short", strategy.short, qty=50, comment="💎 Reversal")
    
if triangleBearish
    strategy.entry("Triangle Short", strategy.short, qty=100, comment="🔺 Continuation")

// === EXITS ===
// Long Exits
if strategy.position_size > 0
    if close <= long_stop
        strategy.close_all(comment="Stop Loss")
    else if rsi_was_above_70
        strategy.close_all(comment="RSI Exit")

// Short Exits        
if strategy.position_size < 0
    if close >= short_stop
        strategy.close_all(comment="Stop Loss")  
    else if rsi_was_below_30
        strategy.close_all(comment="RSI Exit")

// === VISUAL ELEMENTS ===
// EMA Cloud
ema1 = plot(ema_fast_val, "Fast EMA", color.new(color.blue, 60), linewidth=1)
ema2 = plot(ema_slow_val, "Slow EMA", color.new(color.blue, 60), linewidth=1)
fill(ema1, ema2, color=cloud_bull ? color.new(color.green, 85) : color.new(color.red, 85), title="EMA Cloud")

// Signal Shapes
plotshape(diamondBullish, "Diamond Long", shape.diamond, location.belowbar, 
         color.new(color.lime, 0), size=size.small, text="💎")
plotshape(diamondBearish, "Diamond Short", shape.diamond, location.abovebar,
         color.new(color.red, 0), size=size.small, text="💎")

plotshape(triangleBullish, "Triangle Long", shape.triangleup, location.belowbar, 
         color.new(color.green, 20), size=size.small, text="🔺")
plotshape(triangleBearish, "Triangle Short", shape.triangledown, location.abovebar,
         color.new(color.orange, 20), size=size.small, text="🔺")

plotshape(chopBullish, "Chop Long", shape.circle, location.belowbar, 
         color.new(color.gray, 50), size=size.tiny, text="⚫")
plotshape(chopBearish, "Chop Short", shape.circle, location.abovebar,
         color.new(color.gray, 50), size=size.tiny, text="⚫")

// Stop Loss Lines
plot(strategy.position_size > 0 ? long_stop : na, "Long Stop", color.red, linewidth=2)
plot(strategy.position_size < 0 ? short_stop : na, "Short Stop", color.red, linewidth=2)

// Background coloring for market conditions
bgcolor(not chop_filter ? color.new(color.yellow, 95) : na, title="Chop Zone")


// === ALERTS ===
alertcondition(diamondBullish, title="Diamond Long Signal", message="💎 REVERSAL LONG - {{ticker}} at {{close}}")
alertcondition(diamondBearish, title="Diamond Short Signal", message="💎 REVERSAL SHORT - {{ticker}} at {{close}}")
alertcondition(triangleBullish, title="Triangle Long Signal", message="🔺 CONTINUATION LONG - {{ticker}} at {{close}}")
alertcondition(triangleBearish, title="Triangle Short Signal", message="🔺 CONTINUATION SHORT - {{ticker}} at {{close}}")
alertcondition(strategy.position_size == 0 and strategy.position_size[1] != 0, title="Position Closed", message="💰 POSITION CLOSED - {{ticker}} at {{close}}")