この戦略は,ボリンジャー・バンド指標に基づいて取引信号を生成し,ストップ・ロス/テイク・プロフィートを使用してポジションを管理する.ボリンジャー・バンド上位および下位帯のブレイクアウトをモニターし,価格が上位帯を超えるとロング,価格が下位帯を超えるとショート,ストップ・ロスオーダーを使用して価格が逆の帯を超えると退場する.
この戦略は,ボリンジャー・バンド指標の中間,上間,下間帯を使用します.中間帯は移動平均線で,上帯は中間帯プラス2つの標準偏差,下帯は中間帯マイナス2つの標準偏差です.
まず,ボリンジャーバンドの中央,上部,下部帯を計算します. その後,価格が上部帯以上または下部帯以下に突破するかどうかを確認します. 上部帯以上に価格が突破した場合,それは長くなります. 下部帯以下に価格が突破した場合,それは短くなります. また,価格が逆方向にバンドを突破した場合,ストップロスのオーダーを使用してポジションを終了します.
具体的には 戦略の論理は
ストップ・ロスを使って損失を制限する一方で,価格が大きな動きをするときにトレンドを捕まえることができます.
インディケーターを組み合わせたり,ストップ・ロスの単位を調整したりして最適化できます
これはボリンジャーバンドに基づいた戦略に従う比較的単純なトレンドです.価格がブレイクしたとき,迅速にポジションを取ることができ,リスクを制御するためにストップロスを使用します.しかし,価格だけに頼ることは誤判を引き起こす可能性があります.敏感なストップロスは取引頻度を増やす可能性があります.パラメータチューニング,指標の組み合わせ,ストップの調整などによってさらに改善することができます.全体的には,シンプルで信頼性の高い量取引フレームワークを提供します.
/*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()