Esta estrategia se basa en las bandas de Bollinger y el indicador ATR. Captura las fluctuaciones de precios utilizando las bandas de Bollinger, utiliza las rupturas de precios por encima o por debajo de las bandas como señales de entrada y emplea ATR como un stop loss trasero. La estrategia cierra posiciones cuando el precio cruza el promedio móvil simple.
La estrategia Bollinger Band ATR Trend Following captura los mercados de tendencia utilizando Bollinger Bands y el indicador ATR. Tiene las ventajas de seguir la tendencia, detener la pérdida oportuna y la simplicidad. Sin embargo, también enfrenta riesgos como sensibilidad de parámetros, mercados agitados e inversiones de tendencia.
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands and ATR Strategy", overlay=true) // Veri Çekme symbol = "AAPL" timeframe = "D" src = close // Bollinger Bantları Hesaplama len = 20 mult = 2 sum1 = 0.0, sum2 = 0.0 for i = 0 to len - 1 sum1 += src[i] basis = sum1 / len for i = 0 to len - 1 diff = src[i] - basis sum2 += diff * diff dev = math.sqrt(sum2 / len) upper_band = basis + dev * mult lower_band = basis - dev * mult // ATR Hesaplama atr_period = input(10, title="ATR Period") atr_value = 0.0 for i = 0 to atr_period - 1 atr_value += math.abs(src[i] - src[i + 1]) atr_value /= atr_period loss = input(1, title="Key Value (Sensitivity)") atr_trailing_stop = src[1] if src > atr_trailing_stop[1] atr_trailing_stop := math.max(atr_trailing_stop[1], src - loss * atr_value) else if src < atr_trailing_stop[1] atr_trailing_stop := math.min(atr_trailing_stop[1], src + loss * atr_value) else atr_trailing_stop := src - loss * atr_value // Sinyal Üretme long_condition = src < lower_band and src[1] >= lower_band[1] short_condition = src > upper_band and src[1] <= upper_band[1] close_long = src > basis close_short = src < basis buy_signal = src > atr_trailing_stop[1] and src[1] <= atr_trailing_stop[1] sell_signal = src < atr_trailing_stop[1] and src[1] >= atr_trailing_stop[1] if (long_condition) strategy.entry("Long", strategy.long, comment="Long Signal") if (short_condition) strategy.entry("Short", strategy.short, comment="Short Signal") if (close_long) strategy.close("Long", comment="Close Long") if (close_short) strategy.close("Short", comment="Close Short") if (buy_signal) strategy.entry("Long", strategy.long, comment="Buy Signal") if (sell_signal) strategy.entry("Short", strategy.short, comment="Sell Signal") // Çizim plot(upper_band, color=#0000FF, linewidth=2, title="Upper Band") plot(lower_band, color=#0000FF, linewidth=2, title="Lower Band") plot(basis, color=#808080, linewidth=2, title="SMA") plot(atr_trailing_stop, color=#FFA500, linewidth=2, title="ATR Trailing Stop") plot(src, color=#FFA500, linewidth=2, title="Price") // Sinyal İşaretleri plotshape(long_condition, style=shape.arrowup, color=#00FF00, location=location.belowbar, size=size.small, title="Long Signal") plotshape(short_condition, style=shape.arrowdown, color=#FF0000, location=location.abovebar, size=size.small, title="Short Signal") plotshape(buy_signal, style=shape.diamond, color=#00FF00, location=location.belowbar, size=size.small, title="Buy Signal") plotshape(sell_signal, style=shape.diamond, color=#FF0000, location=location.abovebar, size=size.small, title="Sell Signal")