Esta estrategia es un sistema de negociación en red que agrega posiciones basadas en caídas de precios y cierra posiciones cuando se alcanza un objetivo de ganancia fijo. La lógica central es comprar cuando el mercado cae a un porcentaje preestablecido, cerrar todas las posiciones cuando el precio rebota a la ganancia objetivo y generar retornos ejecutando este proceso repetidamente. Esta estrategia es particularmente adecuada para capturar rebotes a corto plazo en mercados oscilantes.
La estrategia emplea un mecanismo combinado de negociación de la red y de obtención de beneficios direccionales:
Esta es una estrategia de negociación de red estructuralmente simple pero práctica que construye posiciones en lotes a caídas de precios preestablecidas y cierra uniformemente posiciones al alcanzar los objetivos de ganancia. Las principales ventajas de la estrategia se encuentran en su certeza de ejecución y diversificación de riesgos, pero la selección del entorno de mercado y la optimización de parámetros son cruciales durante la implementación. Hay un potencial de optimización significativo mediante la adición de stop-loss dinámicos y la mejora de la gestión de posiciones.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Buy Down 5%, Sell at 5% Profit", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1) // Inputs initial_date = input(timestamp("2024-01-01 00:00:00"), title="Initial Purchase Date") profit_target = input.float(5.0, title="Profit Target (%)", minval=0.1) // Target profit percentage rebuy_drop = input.float(5.0, title="Rebuy Drop (%)", minval=0.1) // Drop percentage to rebuy // Variables var float initial_price = na // Initial purchase price var int entries = 0 // Count of entries var float total_profit = 0 // Cumulative profit var bool active_trade = false // Whether an active trade exists // Entry Condition: Buy on or after the initial date if not active_trade initial_price := close strategy.entry("Buy", strategy.long) entries += 1 active_trade := true // Rebuy Condition: Buy if price drops 5% or more from the initial price rebuy_price = initial_price * (1 - rebuy_drop / 100) if active_trade and close <= rebuy_price strategy.entry("Rebuy", strategy.long) entries += 1 // Exit Condition: Sell if the price gives a 5% profit on the initial investment target_price = initial_price * (1 + profit_target / 100) if active_trade and close >= target_price strategy.close_all(comment="Profit Target Hit") active_trade := false total_profit += profit_target // Display information on the chart plotshape(series=close >= target_price, title="Target Hit", style=shape.labelup, location=location.absolute, color=color.green, text="Sell") plotshape(series=close <= rebuy_price, title="Rebuy", style=shape.labeldown, location=location.absolute, color=color.red, text="Rebuy") // Draw statistics on the chart var label stats_label = na if (na(stats_label)) stats_label := label.new(x=bar_index, y=close, text="", style=label.style_none, size=size.small) label.set_xy(stats_label, bar_index, close) label.set_text(stats_label, "Entries: " + str.tostring(entries) + "\nTotal Profit: " + str.tostring(total_profit, "#.##") + "%")