Esta estrategia es un sistema de trading de seguimiento de impulso basado en el indicador de Bollinger Bands. Identifica oportunidades de ruptura potenciales mediante el monitoreo de la relación entre el precio y la banda superior de Bollinger, y cierra posiciones cuando el precio se rompe por debajo de la banda inferior. Las bandas de Bollinger consisten en tres líneas: la banda media (media móvil), las bandas superior e inferior (calculadas utilizando desviación estándar).
La lógica central de la estrategia se basa en los siguientes puntos:
Esta es una estrategia de seguimiento de tendencias basada en bandas de Bollinger, capturando las tendencias del mercado observando la relación entre el precio y las bandas. La estrategia está bien diseñada con buena adaptabilidad y mecanismos de gestión de riesgos. A través de las direcciones de optimización sugeridas, la estabilidad y rentabilidad de la estrategia pueden mejorarse aún más. Es particularmente adecuado para mercados volátiles, pero los operadores necesitan ajustar los parámetros y las medidas de control de riesgos de acuerdo con las condiciones reales.
/*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(title="Demo GPT - Bollinger Bands Strategy", overlay=true, initial_capital=100000, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3) // Inputs length = input.int(20, minval=1, title="Length") maType = input.string("SMA", "Basis MA Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"]) src = input(close, title="Source") mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev") offset = input.int(0, "Offset", minval=-500, maxval=500) startDate = input(timestamp('01 Jan 2018 00:00 +0000'), title="Start Date") endDate = input(timestamp('31 Dec 2069 23:59 +0000'), title="End Date") // Moving Average Function ma(source, length, _type) => switch _type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) // Calculations basis = ma(src, length, maType) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plotting plot(basis, "Basis", color=#2962FF, offset=offset) p1 = plot(upper, "Upper", color=#F23645, offset=offset) p2 = plot(lower, "Lower", color=#089981, offset=offset) fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95)) // Strategy Logic inTradeWindow = true longCondition = close > upper and inTradeWindow exitCondition = close < lower and inTradeWindow if (longCondition) strategy.entry("Long", strategy.long, qty=1) if (exitCondition) strategy.close("Long")