Estrategia de seguimiento de tendencia ATR dinámica basada en la ruptura del nivel de soporte

ATR EMA SMC
Fecha de creación: 2024-12-12 17:26:00 Última modificación: 2024-12-12 17:26:00
Copiar: 3 Número de Visitas: 399
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencia ATR dinámica basada en la ruptura del nivel de soporte

Descripción general

Esta es una estrategia de seguimiento de tendencias ATR dinámicas basadas en rupturas de soporte. La estrategia utiliza el sistema de líneas medias EMA, los indicadores de volatilidad ATR y el concepto de fondos inteligentes (SMC) para capturar las tendencias del mercado.

Principio de estrategia

La estrategia se basa en los siguientes componentes centrales:

  1. Utiliza el sistema de EMA de 50 y 200 ciclos 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 ganancias
  3. Buscar los mejores puntos de entrada mediante el análisis de los bloques de orden y las zonas de desequilibrio
  4. Cálculo automático de la cantidad de posiciones abiertas basado en el porcentaje de riesgo de la cuenta
  5. Para determinar si el mercado se encuentra en estado de reorganización, observa el rango de fluctuación de casi 20 líneas K.

Ventajas estratégicas

  1. La gestión de riesgos es perfecta para garantizar que el riesgo de cada transacción sea controlado mediante el cálculo dinámico.
  2. El sistema de valoración de tendencias es fiable y evita la negociación de mercados en balance.
  3. La suspensión de pérdidas es razonable y el riesgo-beneficio es de 1:3.
  4. Tener en cuenta la volatilidad del mercado y adaptarse a las diferentes circunstancias
  5. La estructura del código es clara, fácil de mantener y optimizar.

Riesgo estratégico

  1. Los indicadores de la EMA son retrasados y pueden causar retrasos en el tiempo de entrada
  2. El riesgo de falsas señales en un mercado tan volátil
  3. Las estrategias dependen de la continuidad de la tendencia y pueden ser ineficaces en mercados convulsionados.
  4. La posición de parada es más amplia y en algunos casos puede soportar mayores pérdidas.

Dirección de optimización de la estrategia

  1. Se puede introducir análisis de relación de precio y cantidad para mejorar la precisión de las tendencias
  2. Se pueden aumentar los indicadores de sentimiento en el mercado para optimizar el momento de entrada
  3. Considerar la inclusión de análisis de múltiples ciclos de tiempo para mejorar la estabilidad del sistema
  4. Criterios para refinar los bloques de orden y las zonas de desequilibrio
  5. Optimización de los métodos de pérdidas y consideración de la pérdida móvil

Resumir

La estrategia es un sistema de seguimiento de tendencias más completo, que mejora la estabilidad de las transacciones a través de una gestión de riesgos razonable y la confirmación de múltiples señales. Aunque hay un cierto retraso, en general es un sistema de negociación confiable. Se recomienda realizar una verificación de retroalimentación adecuada antes de su uso en el mercado y optimizar los parámetros según la variedad de transacciones y el entorno del mercado.

Código Fuente de la Estrategia
/*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")