Esta estrategia es un sistema de negociación automatizado basado en el Índice de Flujo de Dinero (IFM), diseñado principalmente para capturar oportunidades potenciales de reversión mediante la identificación del comportamiento de los activos en zonas de sobreventa.
La estrategia se basa en los siguientes pasos clave: 1. Supervisa continuamente los cambios en el valor de las IFM, marcando la entrada en la zona de sobreventa cuando las IFM caen por debajo del umbral preestablecido (default 20). 2. Cuando la IFM se rebote y rompe el umbral de la zona de sobreventa, el sistema coloca una orden de compra límite por debajo del precio actual, con el precio específico determinado por un porcentaje definido por el usuario. El sistema supervisa el período de validez de la orden límite, cancelar automáticamente si no se llena dentro del período de observación preestablecido (default 5 velas). Una vez que se completa la orden de compra, el sistema establece inmediatamente los niveles objetivo de stop-loss y ganancia, calculados en función de los porcentajes del precio de entrada. Las operaciones se cierran automáticamente cuando se alcanza el objetivo de stop-loss o de ganancia.
Se trata de una estrategia de negociación bien diseñada, lógicamente clara y automatizada. A través del uso flexible del indicador de la IMF, combinado con mecanismos integrales de gestión de pedidos, captura efectivamente los rebotes del mercado después de condiciones de sobreventa. La alta configurabilidad de la estrategia facilita la optimización para diferentes entornos de mercado. Si bien existen ciertos riesgos, pueden abordarse a través de las direcciones de optimización sugeridas para mejorar aún más la estabilidad y la rentabilidad de la estrategia. Adecuado para la inversión a medio y largo plazo, especialmente para los inversores que buscan oportunidades de rebote de sobreventa en mercados oscilantes.
/*backtest start: 2024-11-04 00:00:00 end: 2024-12-04 00:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © traderhub //@version=5 strategy("MFI Strategy with Oversold Zone Exit and Averaging", overlay=true) // Strategy parameters mfiPeriod = input.int(title="MFI Period", defval=14) // Period for calculating MFI mfiOS = input.float(title="MFI Oversold Level", defval=20.0) // Oversold level for MFI longEntryPercentage = input.float(title="Long Entry Percentage (%)", minval=0.0, step=0.1, defval=0.1) // Percentage for the buy limit order stopLossPercentage = input.float(title="Stop Loss Percentage (%)", minval=0.0, step=0.1, defval=1.0) // Percentage for the stop-loss exitGainPercentage = input.float(title="Exit Gain Percentage (%)", minval=0.0, step=0.1, defval=1.0) // Percentage gain for the take-profit cancelAfterBars = input.int(title="Cancel Order After # Bars", minval=1, defval=5) // Cancel order after a certain number of bars // Calculate MFI mfi = ta.mfi(close, mfiPeriod) // MFI with specified period // Variables for tracking state var bool inOversoldZone = false // Flag for being in the oversold zone var float longEntryPrice = na // Price for long entry var int barsSinceEntryOrder = na // Counter for bars after placing an order // Define being in the oversold zone if (mfi < mfiOS) inOversoldZone := true // Entered oversold zone // Condition for exiting the oversold zone and placing a limit order if (inOversoldZone and mfi > mfiOS) inOversoldZone := false // Leaving the oversold zone longEntryPrice := close * (1 - longEntryPercentage / 100) // Calculate limit price for entry strategy.entry("Long Entry", strategy.long, limit=longEntryPrice) // Place a limit order barsSinceEntryOrder := 0 // Reset counter for bars after placing the order // Increase the bar counter if the order has not yet been filled if (not na(barsSinceEntryOrder)) barsSinceEntryOrder += 1 // Cancel order if it hasn’t been filled within the specified number of bars if (not na(barsSinceEntryOrder) and barsSinceEntryOrder >= cancelAfterBars and strategy.position_size == 0) strategy.cancel("Long Entry") barsSinceEntryOrder := na // Reset bar counter // Set stop-loss and take-profit for filled positions if (strategy.position_size > 0) stopLossPrice = longEntryPrice * (1 - stopLossPercentage / 100) // Calculate stop-loss level takeProfitPrice = longEntryPrice * (1 + exitGainPercentage / 100) // Calculate take-profit level strategy.exit("Exit Long", from_entry="Long Entry", limit=takeProfitPrice, stop=stopLossPrice) // Visualize oversold and overbought zones bgcolor(mfi < mfiOS ? color.new(color.green, 90) : na) // Background in oversold zone plot(mfi, title="MFI", color=color.blue) // MFI plot hline(mfiOS, "Oversold Level", color=color.red) // Oversold level line