資源の読み込みに... 荷物...

Bollinger Band ATR トレンド 戦略をフォローする

作者: リン・ハーンチャオチャン開催日:2024年5月15日 (火) 10:50:14
タグ:BBSMAATR

img

概要

この戦略は,ボリンジャーバンドとATR指標に基づいています.ボリンジャーバンドを使用して価格変動を把握し,バンドの上または下の価格ブレイクアウトをエントリー信号として使用し,ATRをトレーリングストップ損失として使用します.価格は単純な移動平均を横切ったときにポジションを閉じます.傾向市場を捕捉し,トレンドの方向にポジションを入力し,トレンドが逆転すると迅速にポジションを閉じることを目的としています.

戦略の原則

  1. ボリンジャー帯を計算する: 閉店価格を使用して,単純な移動平均 (SMA) を中間帯として計算し,波動性 (標準偏差) をベースに上下帯を計算する.
  2. ATRを計算する: 真の範囲 (TR) の移動平均値を使用して ATRを追跡ストップ損失のベースとして計算する.
  3. トレーディング・シグナルを生成する.価格がボリンジャー・バンドの下位を突破すると,ロング・シグナルを生成する.上位ボリンジャー・バンドを突破すると,ショート・シグナルを生成する.価格がATRトレーリング・ストップを突破すると,ロング・シグナルを生成する.ATRトレーリング・ストップを突破すると,ショート・シグナルを生成する.
  4. ローズ・ポジション: ローズ・ポジションでは,価格がシンプル・ムービング・メアディアを突破した場合,ロング・ポジションを閉じる.ショート・ポジションでは,価格がシンプル・ムービング・メアディアを突破した場合,ショート・ポジションを閉じる.

戦略 の 利点

  1. トレンドフォロー: 異なる市場環境に適応して,ボリンジャーバンドとATRトレーリングストップを使用して,トレンド市場を把握します.
  2. タイムリーストロップ: ATRをトラッキングストロップとして使用し,リスク制御のために市場の変動に応じてストロップ・ロースポジションを動的に調整します.
  3. シンプルで使いやすい 戦略の論理は明確で,パラメータは少ないので,理解し適用するのが簡単です

戦略リスク

  1. パラメータ敏感性:戦略のパフォーマンスは,ボリンジャーバンドとATRのパラメータの選択によって影響を受け,異なる市場や楽器に最適化する必要があります.
  2. 不安定な市場: 不安定な市場環境では,頻繁に取引信号が発信されることが,過剰な取引頻度とコストにつながる可能性があります.
  3. 傾向の逆転: 傾向が逆転すると,戦略は大きな引き下げを経験する可能性があります.

戦略の最適化方向

  1. パラメータ最適化: 異なる市場や楽器に最適な組み合わせを見つけるために,ボリンジャーバンドとATRのパラメータを最適化します.
  2. フィルター:他の技術指標や価格行動パターンをフィルターとして追加して誤判を軽減し,信号品質を改善します.
  3. ポジション管理: 市場の変動や口座リスクに基づいてポジションを動的に調整し,資本利用効率とリスク調整回帰を向上させる.

概要

ボリンジャーバンドATRトレンドフォロー戦略は,ボリンジャーバンドとATR指標を使用してトレンド市場を把握する.トレンドフォロー,タイムリーストップ損失,シンプルさの利点があります.しかし,パラメータ敏感性,不安定な市場,トレンド逆転などのリスクにも直面しています. この戦略のパフォーマンスはパラメータ最適化,フィルター追加,ポジション管理を通じてさらに最適化することができます.


/*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")

関連性

もっと