Esta estrategia es un sistema de negociación adaptativo basado en bandas de Bollinger, la gestión de posiciones mediante el monitoreo dinámico de la relación entre el precio y las bandas.
La estrategia aplica los principios estadísticos de las bandas de Bollinger, que controlan las fluctuaciones de precios dentro de un rango de distribución normal. 1. Utiliza una media móvil simple de 20 días (SMA) para construir la banda media 2. Establece bandas superiores e inferiores utilizando 2 desviaciones estándar para formar un rango de fluctuación de precios 3. Compra la posición del 50% cuando el precio se rompe por encima de la banda superior en un 5% o permanece por encima de ella durante 1 hora Reducción de la posición en un 10% en el primer retorno a la banda media, 50% cuando el precio cae por debajo de la banda inferior en un 5% 5. Controla el riesgo y optimiza los rendimientos a través de la construcción y reducción de posiciones por fases
La estrategia establece un sistema de negociación completo a través de bandas de Bollinger y análisis de períodos de tiempo, logrando un equilibrio entre el seguimiento de tendencias y el control de riesgos.
/*backtest start: 2024-11-11 00:00:00 end: 2024-12-10 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands Strategy", overlay=true) // 設定布林通道 length = 20 source = close mult = 2.0 basis = ta.sma(source, length) dev = mult * ta.stdev(source, length) upper = basis + dev lower = basis - dev // 畫出布林通道 plot(upper, color=color.red, linewidth=1) plot(basis, color=color.blue, linewidth=1) plot(lower, color=color.green, linewidth=1) // 設定買入條件:突破布林通道高點5%或持續1小時在高點上方 breakout_level = upper * 1.01 hour_breakout = ta.change(time("60")) == 1 and close > upper buy_condition = (close > breakout_level or hour_breakout) if (buy_condition) strategy.entry("Buy", strategy.long, qty=0.5) // 設定賣出條件:第一次回測中線、跌破低點5%或回升中線 sell_10_condition = ta.crossover(close, basis) and strategy.opentrades > 0 sell_50_condition = close < lower * 0.95 // 賣出10%現貨 if (sell_10_condition) strategy.close("Buy", qty=0.1) // 賣出50%現貨 if (sell_50_condition) strategy.close("Buy", qty=0.5) // 監控買入與賣出信號 plotshape(series=buy_condition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal") plotshape(series=sell_10_condition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell 10% Signal") plotshape(series=sell_50_condition, location=location.abovebar, color=color.blue, style=shape.labeldown, title="Sell 50% Signal")