La estrategia de reversión media con entrada incremental diseñada por HedgerLabs es un guión de estrategia de negociación avanzada que se centra en la técnica de reversión media en los mercados financieros.
El centro de esta estrategia es el promedio móvil simple (SMA) en torno al cual giran todas las entradas y salidas.
La única característica de esta estrategia es el sistema de entrada incremental. Inicia una primera posición cuando el precio se desvía del MA en un porcentaje especificado. Las entradas posteriores se realizan en pasos incrementales, según lo definido por el comerciante, a medida que el precio se aleja más del MA. Esto tiene como objetivo capitalizar la creciente volatilidad.
La estrategia gestiona las posiciones de manera inteligente entrando en largo cuando el precio está por debajo de MA y corto cuando está por encima para adaptarse a las cambiantes condiciones del mercado.
Las salidas se determinan cuando el precio toca el MA, con el objetivo de cerrar posiciones en puntos de reversión potenciales para obtener resultados optimizados.
Con calcula_on_every_tick habilitado, la estrategia evalúa continuamente el mercado para garantizar una reacción rápida.
La estrategia de reversión media con entrada incremental tiene las siguientes ventajas clave:
Los riesgos a tener en cuenta incluyen:
Las salidas se pueden optimizar, se pueden añadir filtros de tendencia, se puede reducir el tamaño de las posiciones para mitigar los riesgos anteriores.
La estrategia puede reforzarse mediante:
La estrategia de reversión media con entrada incremental se centra en técnicas de reversión media utilizando un enfoque sistematizado de tamaño de posición incremental.
/*backtest start: 2023-12-29 00:00:00 end: 2024-01-28 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Mean Reversion with Incremental Entry by HedgerLabs", overlay=true, calc_on_every_tick=true) // Input for adjustable settings maLength = input.int(30, title="MA Length", minval=1) initialPercent = input.float(5, title="Initial Percent for First Order", minval=0.01, step=0.01) percentStep = input.float(1, title="Percent Step for Additional Orders", minval=0.01, step=0.01) // Calculating Moving Average ma = ta.sma(close, maLength) // Plotting the Moving Average plot(ma, "Moving Average", color=color.blue) var float lastBuyPrice = na var float lastSellPrice = na // Function to calculate absolute price percentage difference pricePercentDiff(price1, price2) => diff = math.abs(price1 - price2) / price2 * 100 diff // Initial Entry Condition Check Function initialEntryCondition(price, ma, initialPercent) => pricePercentDiff(price, ma) >= initialPercent // Enhanced Entry Logic for Buy and Sell if (low < ma) if (na(lastBuyPrice)) if (initialEntryCondition(low, ma, initialPercent)) strategy.entry("Buy", strategy.long) lastBuyPrice := low else if (low < lastBuyPrice and pricePercentDiff(low, lastBuyPrice) >= percentStep) strategy.entry("Buy", strategy.long) lastBuyPrice := low if (high > ma) if (na(lastSellPrice)) if (initialEntryCondition(high, ma, initialPercent)) strategy.entry("Sell", strategy.short) lastSellPrice := high else if (high > lastSellPrice and pricePercentDiff(high, lastSellPrice) >= percentStep) strategy.entry("Sell", strategy.short) lastSellPrice := high // Exit Conditions - Close position if price touches the MA if (close >= ma and strategy.position_size > 0) strategy.close("Buy") lastBuyPrice := na if (close <= ma and strategy.position_size < 0) strategy.close("Sell") lastSellPrice := na // Reset last order price when position is closed if (strategy.position_size == 0) lastBuyPrice := na lastSellPrice := na