ダブルRSIとボリンジャーバンドのトレンド追跡戦略を組み合わせる


作成日: 2023-09-19 22:10:02 最終変更日: 2023-09-19 22:10:02
コピー: 0 クリック数: 664
1
フォロー
1617
フォロワー

概要

この戦略は,双RSI指標によって超買い超売り状態を判断し,ブリン帯の突破と組み合わせて取引信号を生成する.これはトレンド追跡型の戦略である.この戦略は比較的単純で,複数の指標の組み合わせによって信号の信頼性を高め,トレンドの状況でより良い利益を得ることを目的としている.

原則分析

戦略は,二時間周期RSIを使用して,短期および長期の超買超売状況をそれぞれ判断する.両者が同時に超買または超売の値に達した場合のみ,取引シグナルが生成される.これは,単一のRSIが生成する誤ったシグナルを回避する.

同時に,戦略はブリン帯の指標判断価格突破を導入した. RSIが条件を満たしていると同時に,価格がブリン帯を突破して上線または下線するときのみ,取引が生じます. ブリン帯の突破判断は,トレンド以外の状況で信号を生じることを避けることができます.

最後に,戦略は,急激な平均線判断のトレンド方向も追加します. ブリン帯の突破時に,大トレンドがRSI信号の方向にも合致するときにのみ,ポジションを開きます.

優位分析

戦略は,複数の指標の判断を総合的に使用し,偽の信号をよりよくフィルターし,トレンドが明らかであるときにのみ取引を生成することができる.また,速慢な平均線の配合は,トレンドを追跡するのに便利である.戦略は,単純で直接で,トレンドの追跡状況で発生する短期的なライン幅のトレンドで利益を得るのに適している.

リスク分析

策略には,トレンド反転を早期に識別できないリスクがあるかもしれない.市場が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')