Diese Strategie basiert auf Bollinger Bands und dem ATR-Indikator. Sie erfasst Preisschwankungen mit Bollinger Bands, verwendet Preisschwankungen oberhalb oder unterhalb der Bands als Einstiegssignale und verwendet ATR als Trailing Stop Loss. Die Strategie schließt Positionen, wenn der Preis den einfachen gleitenden Durchschnitt überschreitet. Sie zielt darauf ab, trendige Märkte zu erfassen, Positionen in die Richtung des Trends einzugeben und sofort Positionen zu schließen, wenn sich der Trend umkehrt.
Die Bollinger Band ATR Trend Following Strategie erfasst Trendmärkte mithilfe von Bollinger Bands und dem ATR-Indikator. Sie hat die Vorteile von Trendfollowing, zeitnahem Stop Loss und Einfachheit. Sie ist jedoch auch mit Risiken wie Parameterempfindlichkeit, unruhigen Märkten und Trendumkehrungen konfrontiert. Die Leistung der Strategie kann durch Parameteroptimierung, das Hinzufügen von Filtern und Positionsmanagement weiter optimiert werden.
/*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")