
La stratégie est basée sur les indicateurs Brin et ATR, capture la portée des fluctuations des prix à travers les bandes de Brin, utilise la rupture des bandes de Brin en descente comme signal de prise de position, utilise ATR comme arrêt mobile, et finit par la rupture de la moyenne mobile simple comme signal de prise de position. La stratégie tente de capturer la tendance, de prendre position dans la direction de la tendance et de prendre position à l’heure de la reprise.
Les stratégies de suivi des tendances ATR de la ceinture de Brin capturent les tendances à travers les indicateurs Brin et ATR. Elles ont les avantages de suivre les tendances, de les arrêter à temps et d’être faciles à utiliser. Cependant, il existe également des risques tels que la sensibilité aux paramètres, les marchés surchargés et les retournements de tendance.
/*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")