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.
La estrategia se basa en varios componentes fundamentales:
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")