La estrategia Double Gap es una estrategia cuantitativa utilizada para el comercio a corto plazo de Bitcoin y oro. Combina promedios móviles, bandas de Bollinger y paradas ATR para identificar señales de ruptura y gestionar el riesgo.
La estrategia de doble brecha utiliza EMA rápida y cruces de EMA lenta para determinar la dirección de la tendencia. Una señal de compra se genera cuando la EMA rápida cruza por encima de la EMA lenta, y una señal de venta se genera cuando la EMA rápida cruza por debajo de la EMA lenta. Para evitar fallas, la estrategia requiere que el cruce ocurra cerca de las bandas de Bollinger superiores o medias.
Específicamente, para determinar una señal de compra, ambas de las siguientes condiciones deben cumplirse: 1) La EMA rápida cruza por encima de la EMA lenta; 2) El precio de cierre está cerca o por debajo de las bandas superiores o medias de Bollinger.
Además, la estrategia Double Gap utiliza el indicador ATR para calcular un stop loss dinámico para controlar el riesgo de cada operación.
La estrategia de doble brecha puede optimizarse en los siguientes aspectos:
La estrategia Double Gap identifica de manera efectiva las oportunidades a corto plazo utilizando tanto el seguimiento de tendencias como el filtrado de rupturas. Con la gestión dinámica de stop loss, es adecuada para el comercio a corto plazo de monedas digitales y metales preciosos de alta volatilidad.
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © singhak8757 //@version=5 strategy("Bitcoin and Gold 5min Scalping Strategy2.0", overlay=true) // Input parameters fastLength = input(5, title="Fast EMA Length") slowLength = input(13, title="Slow EMA Length") bollingerLength = input(20, title="Bollinger Band Length") bollingerMultiplier = input(2, title="Bollinger Band Multiplier") stopLossMultiplier = input(1, title="Stop Loss Multiplier") // Calculate EMAs fastEMA = ta.ema(close, fastLength) slowEMA = ta.ema(close, slowLength) // Calculate Bollinger Bands basis = ta.sma(close, bollingerLength) upperBand = basis + bollingerMultiplier * ta.stdev(close, bollingerLength) lowerBand = basis - bollingerMultiplier * ta.stdev(close, bollingerLength) // Buy condition buyCondition = ta.crossover(fastEMA, slowEMA) and (close <= upperBand or close <= basis) // Sell condition sellCondition = ta.crossunder(fastEMA, slowEMA) and (close >= lowerBand or close >= basis) // Calculate stop loss level stopLossLevel = ta.lowest(low, 2)[1] - stopLossMultiplier * ta.atr(14) // Plot EMAs plot(fastEMA, color=color.rgb(0, 156, 21), title="Fast EMA") plot(slowEMA, color=color.rgb(255, 0, 0), title="Slow EMA") // Plot Bollinger Bands plot(upperBand, color=color.new(#000000, 0), title="Upper Bollinger Band") plot(lowerBand, color=color.new(#1b007e, 0), title="Lower Bollinger Band") // Plot Buy and Sell signals plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar) plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar) // Plot Stop Loss level plot(stopLossLevel, color=color.orange, title="Stop Loss Level") // Strategy logic strategy.entry("Buy", strategy.long, when = buyCondition) strategy.exit("Stop Loss/Close", from_entry="Buy", loss=stopLossLevel) strategy.close("Sell", when = sellCondition)