Esta es una estrategia de negociación de ruptura de rango basada en los puntos altos y bajos del día anterior. La estrategia busca oportunidades de negociación mediante la identificación de rupturas o rupturas de precios más allá de los puntos altos o bajos del día anterior, ejecutando solo una operación por dirección de ruptura o ruptura. La estrategia emplea ajustes fijos de toma de ganancias y stop-loss de 50 puntos y restablece las banderas comerciales al comienzo de cada día de negociación para garantizar una negociación ordenada. El núcleo de esta estrategia es capturar movimientos de ruptura de precios de una sola dirección dentro del día mientras se controla el riesgo a través de una gestión comercial estricta.
La lógica central de la estrategia incluye los siguientes aspectos: 1. Generación de señales comerciales: El sistema determina la dirección de negociación comprobando si el precio de cierre actual rompe el máximo o el mínimo del día anterior. Cuando el precio cierra por encima del máximo del día anterior, el sistema genera una señal larga; cuando el precio cierra por debajo del mínimo del día anterior, el sistema genera una señal corta. Control de frecuencia de comercio: la estrategia utiliza banderas para garantizar solo una operación por dirección por día. Este diseño evita operaciones repetidas en el mismo área de precios y reduce los costos de negociación. Gestión de riesgos: Cada operación tiene un take-profit fijo de 50 puntos y un stop-loss, proporcionando una gestión de riesgos simétrica que controla eficazmente el riesgo de una sola operación. 4. Mecanismo de restablecimiento diario: El sistema restablece las banderas comerciales al comienzo de cada día de negociación, preparándose para nuevas oportunidades comerciales.
Esta estrategia es un sistema de negociación clásico basado en breakouts diarios, adecuado para rastrear tendencias de mercado de una sola dirección a través de una estricta gestión comercial y control de riesgos.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-09 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("US 30 Daily Breakout Strategy (Single Trade Per Breakout/Breakdown, New York Time)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, trim_orders = true) // Set pip size for US 30 (1 pip = 1 point) var float pip = 1.0 // Set take profit and stop loss in points (1 pip = 1 point) take_profit_pips = 50 stop_loss_pips = 50 // Calculate the previous day's high and low (assumes chart timezone is set to New York) prevDayHigh = request.security(syminfo.tickerid, "D", high[1]) prevDayLow = request.security(syminfo.tickerid, "D", low[1]) // Initialize flags to track if a breakout/breakdown trade has been taken var bool breakout_traded = false var bool breakdown_traded = false // Reset flags at the start of a new day in New York timezone (as per chart setting) if (ta.change(time("D"))) breakout_traded := false breakdown_traded := false // Condition for a long entry: candle closes above the previous day's high and no breakout trade has been taken longCondition = close > prevDayHigh and strategy.opentrades == 0 and not breakout_traded // Condition for a short entry: candle closes below the previous day's low and no breakdown trade has been taken shortCondition = close < prevDayLow and strategy.opentrades == 0 and not breakdown_traded // Execute long trade if the condition is met, and set the breakout flag if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Take Profit/Stop Loss", "Long", limit=close + take_profit_pips * pip, stop=close - stop_loss_pips * pip) breakout_traded := true // Set breakout flag // Execute short trade if the condition is met, and set the breakdown flag if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Take Profit/Stop Loss", "Short", limit=close - take_profit_pips * pip, stop=close + stop_loss_pips * pip) breakdown_traded := true // Set breakdown flag // Plotting the previous day's high and low for visualization plot(prevDayHigh, color=color.green, linewidth=1, title="Previous Day High") plot(prevDayLow, color=color.red, linewidth=1, title="Previous Day Low")