トレンドフォローのためのボリンジャー帯と組み合わせた二重RSI

作者: リン・ハーンチャオチャン, 日時: 2023-09-19 22:10:02
タグ:

概要

この戦略は,過剰購入および過剰販売の条件を特定するために二重RSI指標を使用し,トレード信号を生成するためにボリンジャー帯のブレイクアウトと組み合わせます.これはトレンドフォロー戦略カテゴリーに属します.目標は複数の指標を組み合わせて信号の信頼性を向上させ,明らかなトレンドから利益を得ることです.

原則分析

この戦略は,短期および長期間の過剰購入/過剰販売状態を判断するために,異なるタイムフレームを持つ2つのRSIを使用する.両方のRSIが同時に値に達するときにのみ取引信号が生成される.これは,1つのRSIからの誤った信号を避ける.

ボリンジャーバンドは,価格ブレイクを識別するためにも使用されます. RSI条件が満たされ,価格がボリンガーバンド上部/下部バンドをブレイクしたときのみ,取引信号が生成されます.ブレイク確認は,トレンドではない市場で信号を避けるのに役立ちます.

最後に,高速および遅いMAsはトレンド方向をチェックします.ブレイクアウトがRSI信号方向に一致するときにのみ取引が開始されます.

利点分析

複数の指標を組み合わせることで,誤った信号をフィルタリングし,明らかなトレンドのみを取引することができます. 速い/遅いMAsはトレンドフォローも容易にします. 簡単な戦略は短期的なトレンドから利益を得るのに適しています.

リスク分析

主なリスクは,トレンド逆転を迅速に特定できないことです.急激なV型逆転は,適切なストップ損失なしでは重大な損失を引き起こす可能性があります.パラメータ調整もパフォーマンスに影響を及ぼす可能性があります.

最適化 の 提案

  1. ストップ・ロスの戦略を追加して 逆転時に早く退場します

  2. ボリュームなどのフィルタを組み込み 誤ったブレイクを避ける

  3. パラメータを最適化して 最高の組み合わせを見つけます

  4. 機械学習モデルを追加して 市場体制を よりよく識別します

  5. ポジションのサイズ,損失管理を含むリスク管理を強化する.

結論

この戦略は,二重RSIとボリンジャーバンドを組み合わせて短期的なトレンドから利益を得ています. シンプルで直接的ですが,遅延した逆転信号のような制限があります. ストップ損失,シグナルフィルタリング,パラメータ最適化を追加することで,その強度と収益性をさらに高めることができます.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-12 04:00:00
period: 2m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "Madrugada strat copy", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, currency = currency.USD)
 
// === GENERAL INPUTS ===
// RSI 1
RSIlength = input(10,title="RSI") 
RSIoverSold = input(65,title="OSold")
RSIoverBought = input(35,title="OBought")
price = close
vrsi = rsi(price, RSIlength)
// RSI 2
RSIlength2 = input(6,title="RSI2") 
RSIoverSold2 = input(65,title="OSold2")
RSIoverBought2 = input(35,title="OBought2")
price2 = close
vrsi2 = rsi(price2, RSIlength2)

//Bollinger Bands
source = close
Bollinger = input(20, minval=1), Desv = input(1.7, minval=0.001, maxval=50)
basis = sma(source, Bollinger)
dev = Desv * stdev(source, Bollinger)
upper = basis + dev
lower = basis - dev
plot(basis, color=red, title="BB ma")
p1 = plot(upper, color=blue, title="BBajo")
p2 = plot(lower, color=blue, title="BAlto")
fill(p1, p2)

//Media movil
short = input(3, minval=1, title="Media corta")
long = input(10, minval=1, title="Media larga")
src = close
plot(sma(src, short), color=#00FF00, transp=0, linewidth=1, title="Media rapida")
plot(sma(src, long), color=white, transp=0, linewidth=2, title="Media lenta")


// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => vrsi < 30 and  vrsi2 < 27 and cross(lower, price)
exitLong() => short < long
strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => vrsi > 70 and vrsi2 > 70 and cross(upper, price)
strategy.entry(id = "Short", long = false, when = enterShort())


// Definición señales de compra
buy_signals = vrsi < 30 and  vrsi2 < 27 and cross(lower, price)

// Definición señales de venta
sell_signals = vrsi > 70 and vrsi2 > 70 and cross(upper, price)

// Dibuja las señales de compra venta en franjas de color
b_color = (sell_signals) ? color(red,65) : (buy_signals) ? color(green,65) : na
bgcolor(b_color)

// Dibuja las señales de compra venta coloreando las velas
barcolor(buy_signals ? white : sell_signals ? white : na)

plot(vrsi, color=white, linewidth=1)
plot(vrsi, color=white, linewidth=2)

// Crea alarmas usables desde el desplegable para poder enviar mails a haas
alertcondition(buy_signals, title='Buy-Signal', message='compra')
alertcondition(sell_signals, title='Sell-Signal', message='vende')


もっと