
El 99% de las estrategias en el mercado buscan la complejidad, y esta estrategia funciona al revés. La lógica central es extremadamente simple: usar el EMA de 50 días en el EMA de 20 días y usar el EMA de 50 días en el EMA de 30 días. Pero el diablo está en los detalles. Se filtra la calidad de la señal con un sistema de puntuación de 5 puntos, y solo se abre una posición de más de 3 minutos.
La clave está en el mecanismo de confirmación de la señal. No todas las cruces de EMA son negociables, la estrategia reduce la señal de ruido en más del 70% a través de la triple filtración de la alineación de tendencias, la confirmación de la dinámica y la verificación de la transacción. El modo conservador requiere 4 puntos para abrir una posición, el modo agresivo 2 puntos, el modo de equilibrio establece un umbral de 3 puntos.
Este mecanismo de calificación es la innovación central de la estrategia. Hacer criterios de calificación de múltiples señales: alineamiento de tendencia de 2 puntos (precio por encima de la EMA de 200 días y línea rápida por encima de la línea lenta), el MACD column graph corrección de 1 punto, el RSI de 1 punto en el intervalo 50-70, la transacción es superior al 20% o más de la línea media de 20 días.
Los datos muestran que el éxito de la señal de 4-5 puntos alcanza más del 65%, pero la frecuencia es menor, en promedio 2-3 veces al mes. El éxito de la señal de 3 puntos es de alrededor del 55%, la frecuencia aumenta a 5-6 veces al mes. El éxito de la señal de 2 puntos disminuye al 45%, pero la frecuencia es la más alta.
Es importante destacar que la estrategia también incluye un filtro de fluctuación. Se suspende la apertura de posiciones cuando el ATR representa más del 3% del precio. Este diseño evita el error de juicio durante la fluctuación anormal y controla eficazmente la pérdida máxima en una sola operación.
El diseño del stop loss utiliza tres modos: multiplicador de ATR, porcentaje fijo y puntos altos y bajos recientes. El stop loss por defecto de 2 veces el ATR se ha comprobado mediante una gran cantidad de pruebas de retroalimentación, lo que permite evitar el stop loss de fluctuación normal y actuar a tiempo cuando la tendencia se invierte. El porcentaje fijo es adecuado para variedades con una tasa de fluctuación estable y los puntos altos y bajos recientes son adecuados para mercados con una tendencia más fuerte.
La relación de ganancias y pérdidas se establece en 2:1, lo que no es una decisión de golpe de cabeza. Los datos históricos muestran que, cuando el stop loss se establece en 2 veces el ATR, el margen de ganancias promedio es de aproximadamente 4 veces el ATR. La relación de ganancias y pérdidas de 2: 1 puede capturar el 70% de las ganancias potenciales, mientras evita el retorno de las ganancias causado por la avaricia excesiva.
El control de riesgo individual es del 2%, lo que significa que solo 25 pérdidas consecutivas pueden llevar a la rescisión de la cuenta (casi imposible en teoría). Incluso en los peores períodos de retroalimentación, la pérdida consecutiva máxima no supera las 6 veces.
La estrategia se activa de forma predeterminada para confirmar el volumen de transacciones y abrir una posición solo cuando el volumen de transacciones supera el 20% de la media de 20 días. El diseño se basa en una lógica simple: una verdadera ruptura de tendencia requiere un impulso financiero, y los avances tecnológicos sin la combinación del volumen de transacciones suelen ser falsos.
Los datos corroboran este juicio. Después de agregar un filtro de volumen de transacción, el número de señales se reduce en aproximadamente un 30%, pero la tasa de ganancias aumenta entre 8 y 12 puntos porcentuales. Especialmente en mercados convulsos, el filtro de volumen de transacción puede evitar eficazmente la pérdida de comisiones causada por la apertura frecuente de las posiciones.
La estrategia aumenta el peso de la señal cuando el volumen de transacciones aumenta (más del 50% de la línea media). Este diseño capta la fuerte tendencia impulsada por los eventos repentinos, y la revisión histórica muestra que la rentabilidad promedio de este tipo de señales es más del 40% más alta que la de las señales normales.
Las estrategias funcionan mejor en mercados de tendencia, especialmente en reajustes y rebotes en tendencias al alza o a la baja a mediano o largo plazo. Los mercados de oscilación horizontal son enemigos mortales de las estrategias, y la tasa de éxito puede caer por debajo del 40%. Por lo tanto, antes de su uso, es necesario juzgar el entorno del mercado y evitar su uso ciego en oscilaciones de intervalos evidentes.
Los ciclos de tiempo se recomiendan por encima de la línea diurna, la línea horaria apenas se puede usar, pero no se recomienda por debajo de los 15 minutos. La razón es simple: los cruces EMA son demasiado ruidosos en períodos cortos y son difíciles de identificar eficazmente, incluso con filtros de calificación.
En la selección de variedades, las variedades principales con buena liquidez son las que mejor funcionan. Las variedades de bolsa pequeña o de puerta fría son propensas a falsas señales debido a la inestabilidad del volumen de transacciones. El mercado de criptomonedas necesita ajustar los parámetros debido a las operaciones de 24 horas y la alta volatilidad. Se recomienda aumentar el límite de filtración de ATR al 5% .
Los comerciantes conservadores eligen el modo conservador, haciendo solo señales de 4-5 puntos, y esperan ganancias anuales del 15-25%, con el máximo control de retiro dentro del 8%. Los comerciantes radicales pueden elegir el modo equilibrado, haciendo señales de más de 3 puntos, y esperan ganancias anuales del 25-40%, pero soportan retiros del 12-15%.
No se recomienda usar el modo radical a menos que tengas suficiente tolerancia al riesgo y mucha experiencia comercial. El índice de ruido de las señales de 2 minutos es demasiado alto, lo que puede provocar pérdidas frecuentes y desequilibrio mental.
La mayor ventaja de las estrategias es que son simples y transparentes, y todas las lógicas pueden ser verificadas claramente. La mayor desventaja es que no funcionan bien en mercados convulsos, y se debe usar con el juicio del entorno del mercado. Recuerde: ninguna estrategia puede funcionar de manera excelente en todos los entornos del mercado.
Nota de riesgo: El retroceso histórico no representa ganancias futuras, existe el riesgo de pérdidas continuas en la estrategia, el mal desempeño en el mercado de la conmoción, requiere una estricta administración de fondos y preparación psicológica.
//@version=5
strategy("Clear Signal Trading Strategy V5", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1)
// ============================================================================
// VISUAL CONFIGURATION
// ============================================================================
var color STRONG_BUY = #00ff00
var color BUY = #00dbff
var color NEUTRAL = #ffff00
var color SELL = #ff6b6b
var color STRONG_SELL = #ff0000
// ============================================================================
// INPUT SETTINGS - SIMPLIFIED
// ============================================================================
// Core Settings
core_group = "Core Strategy Settings"
signal_sensitivity = input.string("Balanced", "Signal Sensitivity", ["Conservative", "Balanced", "Aggressive"], group=core_group, tooltip="Conservative = Fewer, higher quality signals | Aggressive = More frequent signals")
use_confirmation = input.bool(true, "Require Volume Confirmation", group=core_group, tooltip="Only trade when volume is above average")
show_labels = input.bool(true, "Show Signal Labels", group=core_group)
show_dashboard = input.bool(true, "Show Info Panel", group=core_group)
// Risk Management
risk_group = "Risk Management"
risk_percent = input.float(2.0, "Risk Per Trade (%)", minval=0.5, maxval=5.0, step=0.5, group=risk_group)
use_stop_loss = input.bool(true, "Use Stop Loss", group=risk_group)
sl_type = input.string("ATR", "Stop Loss Type", ["ATR", "Percentage", "Recent Low/High"], group=risk_group)
sl_atr_mult = input.float(2.0, "ATR Multiplier for Stop", minval=1.0, maxval=4.0, group=risk_group)
sl_percent = input.float(3.0, "Percentage Stop (%)", minval=1.0, maxval=10.0, group=risk_group)
use_take_profit = input.bool(true, "Use Take Profit Targets", group=risk_group)
tp_ratio = input.float(2.0, "Risk:Reward Ratio", minval=1.0, maxval=5.0, step=0.5, group=risk_group)
// ============================================================================
// CORE CALCULATIONS
// ============================================================================
// Price Action
ema_fast = ta.ema(close, 20)
ema_slow = ta.ema(close, 50)
ema_trend = ta.ema(close, 200)
// Trend Detection
price_above_trend = close > ema_trend
price_below_trend = close < ema_trend
fast_above_slow = ema_fast > ema_slow
fast_below_slow = ema_fast < ema_slow
// Clear Trend Signals
uptrend = price_above_trend and fast_above_slow
downtrend = price_below_trend and fast_below_slow
// ATR for Volatility
atr = ta.atr(14)
atr_percent = (atr / close) * 100
normal_volatility = atr_percent < 3
// Volume Analysis
volume_ma = ta.sma(volume, 20)
high_volume = volume > volume_ma * 1.2
volume_spike = volume > volume_ma * 1.5
// RSI for Momentum
rsi = ta.rsi(close, 14)
rsi_bullish = rsi > 50 and rsi < 70
rsi_bearish = rsi < 50 and rsi > 30
rsi_neutral = rsi >= 30 and rsi <= 70
// MACD for Confirmation
[macd, signal, hist] = ta.macd(close, 12, 26, 9)
macd_bullish = hist > 0 and hist > hist[1]
macd_bearish = hist < 0 and hist < hist[1]
// ============================================================================
// SIGNAL LOGIC - CLEAR AND SIMPLE
// ============================================================================
// Entry Conditions Score (0-5 points for clarity)
calculate_signal_quality(is_buy) =>
score = 0
if is_buy
// Trend alignment (2 points max)
if uptrend
score := score + 2
else if price_above_trend
score := score + 1
// Momentum (1 point)
if macd_bullish
score := score + 1
// RSI not overbought (1 point)
if rsi_bullish
score := score + 1
// Volume confirmation (1 point)
if high_volume
score := score + 1
else
// Trend alignment (2 points max)
if downtrend
score := score + 2
else if price_below_trend
score := score + 1
// Momentum (1 point)
if macd_bearish
score := score + 1
// RSI not oversold (1 point)
if rsi_bearish
score := score + 1
// Volume confirmation (1 point)
if high_volume
score := score + 1
score
// Signal Thresholds
min_score = signal_sensitivity == "Conservative" ? 4 : signal_sensitivity == "Balanced" ? 3 : 2
// Primary Signal Detection
ema_cross_up = ta.crossover(ema_fast, ema_slow)
ema_cross_down = ta.crossunder(ema_fast, ema_slow)
// Calculate Signal Quality
buy_quality = calculate_signal_quality(true)
sell_quality = calculate_signal_quality(false)
// Generate Clear Signals
buy_signal = ema_cross_up and buy_quality >= min_score and (not use_confirmation or high_volume) and normal_volatility
sell_signal = ema_cross_down and sell_quality >= min_score and (not use_confirmation or high_volume) and normal_volatility
// Signal Strength for Display
signal_strength(quality) =>
quality >= 4 ? "STRONG" : quality >= 3 ? "GOOD" : "WEAK"
// ============================================================================
// POSITION MANAGEMENT
// ============================================================================
// Stop Loss Calculation
calculate_stop_loss(is_long) =>
stop = 0.0
if sl_type == "ATR"
stop := is_long ? close - atr * sl_atr_mult : close + atr * sl_atr_mult
else if sl_type == "Percentage"
stop := is_long ? close * (1 - sl_percent/100) : close * (1 + sl_percent/100)
else // Recent Low/High
lookback = 10
stop := is_long ? ta.lowest(low, lookback) : ta.highest(high, lookback)
stop
// Take Profit Calculation
calculate_take_profit(entry, stop, is_long) =>
risk = math.abs(entry - stop)
tp = is_long ? entry + (risk * tp_ratio) : entry - (risk * tp_ratio)
tp
// ============================================================================
// STRATEGY EXECUTION
// ============================================================================
// Entry Logic
if buy_signal and strategy.position_size == 0
stop_loss = calculate_stop_loss(true)
take_profit = calculate_take_profit(close, stop_loss, true)
strategy.entry("BUY", strategy.long)
if use_stop_loss
strategy.exit("EXIT_BUY", "BUY", stop=stop_loss, limit=use_take_profit ? take_profit : na)
if sell_signal and strategy.position_size == 0
stop_loss = calculate_stop_loss(false)
take_profit = calculate_take_profit(close, stop_loss, false)
strategy.entry("SELL", strategy.short)
if use_stop_loss
strategy.exit("EXIT_SELL", "SELL", stop=stop_loss, limit=use_take_profit ? take_profit : na)
// ============================================================================
// VISUAL ELEMENTS
// ============================================================================
// Plot EMAs with colors indicating trend
plot(ema_fast, "Fast EMA (20)", color=fast_above_slow ? color.new(BUY, 50) : color.new(SELL, 50), linewidth=2)
plot(ema_slow, "Slow EMA (50)", color=fast_above_slow ? color.new(BUY, 70) : color.new(SELL, 70), linewidth=1)
plot(ema_trend, "Trend EMA (200)", color=color.new(color.gray, 50), linewidth=2)
// Background Color for Market State
market_color = uptrend ? color.new(BUY, 96) : downtrend ? color.new(SELL, 96) : na
bgcolor(market_color, title="Market Trend")
// ============================================================================
// ALERTS
// ============================================================================
alertcondition(buy_signal, "BUY Signal", "Clear BUY signal detected - Score: {{plot_0}}/5")
alertcondition(sell_signal, "SELL Signal", "Clear SELL signal detected - Score: {{plot_1}}/5")
alertcondition(buy_signal and buy_quality >= 4, "STRONG BUY Signal", "STRONG BUY signal detected")
alertcondition(sell_signal and sell_quality >= 4, "STRONG SELL Signal", "STRONG SELL signal detected")