Bollinger Breakout ストップ・ロスの戦略

作者: リン・ハーンチャオチャン開催日:2023年10月27日 16:50:24
タグ:

img

概要

この戦略は,ボリンジャー・バンド指標に基づいて取引信号を生成し,ストップ・ロス/テイク・プロフィートを使用してポジションを管理する.ボリンジャー・バンド上位および下位帯のブレイクアウトをモニターし,価格が上位帯を超えるとロング,価格が下位帯を超えるとショート,ストップ・ロスオーダーを使用して価格が逆の帯を超えると退場する.

戦略の論理

この戦略は,ボリンジャー・バンド指標の中間,上間,下間帯を使用します.中間帯は移動平均線で,上帯は中間帯プラス2つの標準偏差,下帯は中間帯マイナス2つの標準偏差です.

まず,ボリンジャーバンドの中央,上部,下部帯を計算します. その後,価格が上部帯以上または下部帯以下に突破するかどうかを確認します. 上部帯以上に価格が突破した場合,それは長くなります. 下部帯以下に価格が突破した場合,それは短くなります. また,価格が逆方向にバンドを突破した場合,ストップロスのオーダーを使用してポジションを終了します.

具体的には 戦略の論理は

  1. Bollinger Bands を計算する 中間,上,下帯
  2. 価格が上位を突破したら,ロング
  3. 価格が低値を下回ったらショート
  4. 価格が下位帯を下回ると,既にロングならロングを閉じる.
  5. 価格が上位帯を突破すると,すでにショートならショートを閉じる.

ストップ・ロスを使って損失を制限する一方で,価格が大きな動きをするときにトレンドを捕まえることができます.

利点

  • 入力シグナルにボリンジャーバンドを使用すると,ブレイク後のトレンドが把握されます.
  • 明確な長/短信号 シンプルなルール
  • ストップ・ロスの戦略は,取引ごとに最大損失を制限する.
  • 戦略を最適化するためのパラメータ調整性

リスク

  • 小規模なストップ・ロスの取引が頻繁に行われる場合,全体的なP/Lが損なわれる可能性があります.
  • パラメータの調節が不十分である場合,信号が多すぎたり,取引が失敗したりする可能性があります.
  • 価格のみを考慮し 確認のための他の指標はありません
  • ストップ・ロスの調整は,ブレイクアウトの近くで損失を増やすことができません.

インディケーターを組み合わせたり,ストップ・ロスの単位を調整したりして最適化できます

増進 の 機会

  • ボリューム,移動平均などの他の指標を組み合わせて信号を確認します
  • 異なる市場のためのボリンガーパラメータを最適化
  • 超敏感性を避けるためにブレイクに近いストップ・ロスの距離を調整する
  • トートル取引のルールのように
  • マシン学習アルゴリズムでパラメータを自動最適化

結論

これはボリンジャーバンドに基づいた戦略に従う比較的単純なトレンドです.価格がブレイクしたとき,迅速にポジションを取ることができ,リスクを制御するためにストップロスを使用します.しかし,価格だけに頼ることは誤判を引き起こす可能性があります.敏感なストップロスは取引頻度を増やす可能性があります.パラメータチューニング,指標の組み合わせ,ストップの調整などによってさらに改善することができます.全体的には,シンプルで信頼性の高い量取引フレームワークを提供します.


/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ROBO_Trading

//@version=5
strategy(title = "Bollinger Stop Strategy", shorttitle = "BBStop", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 10000, default_qty_value = 100, commission_value = 0.1)

//Settings
long = input(true)
short = input(true)
length = input.int(20, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)
source = input(close)
showbb = input(true, title = "Show Bollinger Bands")
showof = input(true, title = "Show Offset")
startTime = input(defval = timestamp("01 Jan 2000 00:00 +0000"), title = "Start Time", inline = "time1")
finalTime = input(defval = timestamp("31 Dec 2099 23:59 +0000"), title = "Final Time", inline = "time1")

//Bollinger Bands
basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev

//Show indicator
offset = showof ? 1 : 0
colorBasis = showbb ? color.gray : na
colorUpper = showbb ? color.blue : na
colorLower = showbb ? color.blue : na
colorBands = showbb ? color.blue : na
p0 = plot(basis, "Basis", color = colorBasis, offset = offset)
p1 = plot(upper, "Upper", color = colorUpper, offset = offset)
p2 = plot(lower, "Lower", color = colorLower, offset = offset)
fill(p1, p2, title = "Background", color = colorBands, transp = 90)

//Trading
truetime = true
if basis > 0 and truetime
    if long
        strategy.entry("Long", strategy.long, stop = upper, when = truetime)
    if short
        strategy.entry("Short", strategy.short, stop = lower, when = truetime)
    if long == false
        strategy.exit("Exit", "Short", stop = upper)
    if short == false
        strategy.exit("Exit", "Long", stop = lower)
if time > finalTime
    strategy.close_all()

もっと