En la carga de los recursos... Cargando...

Tendencia dinámica de ATR siguiendo una estrategia basada en la ruptura de soporte

El autor:¿ Qué pasa?, Fecha: 2024-12-12 17:26:00
Las etiquetas:El ATREl EMAEl SMC

img

Resumen general

Se trata de una estrategia de tendencia ATR dinámica basada en la ruptura de soporte. La estrategia incorpora el sistema EMA, el indicador de volatilidad ATR y el Concepto de Dinero Inteligente (SMC) para capturar las tendencias del mercado.

Principio de la estrategia

La estrategia se basa en varios componentes fundamentales:

  1. Utiliza el sistema EMA de 50 y 200 períodos para confirmar la dirección de la tendencia del mercado
  2. Utiliza el indicador ATR para ajustar dinámicamente los objetivos de stop-loss y ganancia
  3. Analiza los bloques de orden y las zonas de desequilibrio para encontrar puntos de entrada óptimos
  4. Calcula automáticamente el tamaño de la posición en función del porcentaje de riesgo de la cuenta
  5. Determina la consolidación del mercado observando el rango de precios de las últimas 20 velas

Ventajas estratégicas

  1. Gestión integral del riesgo mediante cálculo dinámico
  2. Sistema fiable de identificación de tendencias que evite los mercados de consolidación
  3. En el caso de las entidades de crédito, el valor de las pérdidas no se calcula en función de las pérdidas de las entidades de crédito, sino de las pérdidas de las entidades de crédito.
  4. Se adapta bien a las diferentes condiciones del mercado
  5. Estructura de código clara que sea fácil de mantener y optimizar

Riesgos estratégicos

  1. Los indicadores de la EMA tienen un retraso inherente, lo que podría retrasar los puntos de entrada
  2. Puede generar señales falsas en mercados altamente volátiles
  3. La estrategia depende de la continuación de la tendencia, puede tener un rendimiento inferior en diversos mercados
  4. Las posiciones de alto stop-loss pueden dar lugar a pérdidas mayores en determinadas situaciones.

Direcciones de optimización

  1. Incorporar el análisis de la relación volumen-precio para mejorar la identificación de tendencias
  2. Añadir indicadores de sentimiento del mercado para optimizar el momento de entrada
  3. Considerar el análisis de marcos de tiempo múltiples para mejorar la estabilidad del sistema
  4. Criterios de identificación del bloque de órdenes y de la zona de desequilibrio
  5. Optimizar el método de stop-loss, considerar la implementación de trailing stops

Resumen de las actividades

Esta estrategia es un sistema integral de seguimiento de tendencias que logra la estabilidad comercial a través de una gestión adecuada del riesgo y la confirmación de múltiples señales. A pesar de cierto retraso en las señales, representa un sistema comercial confiable en general. Se recomienda realizar pruebas de retroceso completas antes de la implementación en vivo y optimizar los parámetros de acuerdo con instrumentos comerciales específicos y condiciones del mercado.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// TradingView Pine Script strategy for Smart Money Concept (SMC)
//@version=5
strategy("Smart Money Concept Strategy", overlay=true, default_qty_type=strategy.fixed, default_qty_value=100)

// === Input Parameters ===
input_risk_percentage = input.float(1, title="Risk Percentage", step=0.1)
input_atr_length = input.int(14, title="ATR Length")
input_ema_short = input.int(50, title="EMA Short")
input_ema_long = input.int(200, title="EMA Long")

// === Calculations ===
atr = ta.atr(input_atr_length)
ema_short = ta.ema(close, input_ema_short)
ema_long = ta.ema(close, input_ema_long)

// === Utility Functions ===
// Identify Order Blocks
is_order_block(price, direction) =>
    ((high[1] > high[2] and low[1] > low[2] and direction == 1) or (high[1] < high[2] and low[1] < low[2] and direction == -1))

// Identify Imbalance Zones
is_imbalance() =>
    range_high = high[1]
    range_low = low[1]
    range_high > close and range_low < close

// Calculate Lot Size Based on Risk
calculate_lot_size(stop_loss_points, account_balance) =>
    risk_amount = account_balance * (input_risk_percentage / 100)
    lot_size = risk_amount / (stop_loss_points * syminfo.pointvalue)
    lot_size

// Determine if Market is Consolidating
is_consolidating() =>
    (ta.highest(high, 20) - ta.lowest(low, 20)) / atr < 2

// === Visual Enhancements ===
// Plot Order Blocks
// if is_order_block(close, 1)
//     line.new(x1=bar_index[1], y1=low[1], x2=bar_index, y2=low[1], color=color.green, width=2, extend=extend.right)
// if is_order_block(close, -1)
//     line.new(x1=bar_index[1], y1=high[1], x2=bar_index, y2=high[1], color=color.red, width=2, extend=extend.right)

// Highlight Imbalance Zones
// if is_imbalance()
//     box.new(left=bar_index[1], top=high[1], right=bar_index, bottom=low[1], bgcolor=color.new(color.orange, 80))

// === Logic for Trend Confirmation ===
is_bullish_trend = ema_short > ema_long
is_bearish_trend = ema_short < ema_long

// === Entry Logic ===
account_balance = strategy.equity
if not is_consolidating()
    if is_bullish_trend
        stop_loss = close - atr * 2
        take_profit = close + (math.abs(close - (close - atr * 2)) * 3)
        stop_loss_points = math.abs(close - stop_loss) / syminfo.pointvalue
        lot_size = calculate_lot_size(stop_loss_points, account_balance)
        strategy.entry("Buy", strategy.long, qty=lot_size)
        strategy.exit("TP/SL", "Buy", stop=stop_loss, limit=take_profit)

    if is_bearish_trend
        stop_loss = close + atr * 2
        take_profit = close - (math.abs(close - (close + atr * 2)) * 3)
        stop_loss_points = math.abs(close - stop_loss) / syminfo.pointvalue
        lot_size = calculate_lot_size(stop_loss_points, account_balance)
        strategy.entry("Sell", strategy.short, qty=lot_size)
        strategy.exit("TP/SL", "Sell", stop=stop_loss, limit=take_profit)

// === Plotting Indicators ===
plot(ema_short, color=color.blue, title="EMA 50")
plot(ema_long, color=color.orange, title="EMA 200")
plotshape(series=is_bullish_trend and not is_consolidating(), style=shape.triangleup, location=location.belowbar, color=color.green, text="Buy")
plotshape(series=is_bearish_trend and not is_consolidating(), style=shape.triangledown, location=location.abovebar, color=color.red, text="Sell")


Relacionados

Más.