Bollinger 帯がRSI コールバックで価格を下回るときのショートセール取引戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-26 12:08:44
タグ:

img

概要

この戦略は,ボリンジャーバンドを使用して価格がオーバーボールドエリアに入ったかどうかを決定し,RSIインジケーターを組み合わせてコールバック機会を特定します.オーバーボールドエリアで死亡クロスが形成されたときにショートになり,価格がボリンジャー上部帯を超えると停止します.

取引の原則

戦略は以下の原則に基づいています.

  1. 閉じる価格がボリンジャー上部帯を上回ると,資産が過買い領域に入っており,コールバックが起こりそうであることを示します.
  2. RSI インディケーターは,過剰購入/過剰販売レベルを効果的に決定します.RSI > 70は過剰購入とみなされます.
  3. 閉じる価格が上部帯を下回るとショート
  4. RSIがオーバー買いゾーンから引き下がり,またはストップ・ロスは引き起こすとき,ポジションを閉じる.

利点分析

この戦略の利点:

  1. ボリンジャー・バンドは,取引成功率を向上させ,過剰購入/過剰売却レベルを正確に決定します.
  2. RSIは誤ったブレイクシグナルをフィルタリングし,不必要な損失を回避します
  3. リスクと報酬の比率が高く,リスクを効果的にコントロールすることで得られる

リスク分析

この戦略におけるリスク:

  1. 価格が上位帯を突破した後も上昇し続ける可能性があり,さらなる損失につながる.
  2. RSI の 適時 の 引き下げ が 失敗 する と 損失 の 増幅 が 起こる.
  3. 一方向のショートポジションは,統合取引の余地がない.

リスクは以下によって最小限に抑えられます.

  1. 適切なストップ・ロスの調整
  2. RSIのコールバックを確認するための指標を追加する
  3. 統合を決定するために移動平均値を使用する

オプティマイゼーションの方向性

この戦略は,次の点において改善できる:

  1. より多くの資産のためにボリンガーパラメータを最適化
  2. より良い信号のために RSI パラメータを細かく調節する
  3. 傾向の逆転点を特定するためにより多くの指標を追加する
  4. ロング・トレード・ロジックを組み込む
  5. 動向性に基づく動的ストップロスの実施

結論

概要すると,これは典型的な過剰購入のショートスカルピング戦略である.取引エントリのためのボリンジャーバンドとRSIをシグナルをフィルタリングするために利用する.リスクは慎重なストップロスの配置によって管理される.パラメータ調節,インジケーターを追加,取引ロジックを拡張などによりさらなる改善がもたらされる.


/*backtest
start: 2023-11-01 00:00:00
end: 2023-11-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Coinrule


strategy("Bollinger Band Below Price with RSI",
         overlay=true,
         initial_capital=1000,
         process_orders_on_close=true,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=70,
         commission_type=strategy.commission.percent,
         commission_value=0.1)

showDate = input(defval=true, title='Show Date Range')
timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0)
notInTrade = strategy.position_size <= 0

//Bollinger Bands Indicator
length = input.int(20, minval=1)
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

// RSI inputs and calculations
lengthRSI = 14
RSI = ta.rsi(close, lengthRSI)



// Configure trail stop level with input options
longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01
shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01

// Determine trail stop loss prices
//longStopPrice = 0.0
shortStopPrice = 0.0

//longStopPrice := if strategy.position_size > 0
    //stopValue = close * (1 - longTrailPerc)
    //math.max(stopValue, longStopPrice[1])
//else
    //0

shortStopPrice := if strategy.position_size < 0
    stopValue = close * (1 + shortTrailPerc)
    math.min(stopValue, shortStopPrice[1])
else
    999999


//Entry and Exit
strategy.entry(id="short", direction=strategy.short, when=ta.crossover(close, upper) and RSI < 70 and timePeriod and notInTrade)

if (ta.crossover(upper, close) and RSI > 70 and timePeriod)
    strategy.exit(id='close', limit = shortStopPrice)











もっと