RSIチャネル価格差追跡戦略

作者: リン・ハーンチャオチャン開催日:2023年12月18日 17:48:24
タグ:

img

概要

RSIチャネル価格差追跡戦略は,価格ブレイクと組み合わせた値チャネル内のRSI指標の変動を追跡することによって取引信号を生成する.この戦略は,暗号市場での急速な買い売りの爆発を捕捉することを目的としています.

戦略の論理

  1. Hull Moving Average を使って RSI を平滑させ,閉値,最高値,最低値,中値の RSI を含む平滑した RSI インディケーターを生成します.

  2. RSIチャネル範囲を55-45に設定します. RSIが55-45チャネルに入ると,ショックゾーンに入ることを示します.

  3. 閉じる価格のRSIがチャネルの上限から下がり,閉じる価格がミディアン価格よりも低い場合,価格は圧迫を受けていることを示します.しかし,この時点で,ミディアン価格RSIはチャネルの上限以上であり,ミディアン価格はまだ,ミディアン価格ブレイクを追跡する論理を満たす購買力を持っていることを示しています.したがって,購入信号が生成されます.

  4. 閉じる価格RSIはチャネルの下限から反発し,閉じる価格が中位価格よりも高くなります.これは価格がサポートを持っていることを示します.しかし,この時点で,中位価格RSIはチャネルの下限を下回り,中位価格がより大きな圧力を持っていることを示します.これは中位価格ブレイクを追跡する論理を満たします.したがって,セールシグナルが生成されます.

  5. 最も高い価格のRSIと最も低い価格のRSIインジケーターは,不正な取引信号を迅速に識別し,迅速なストップ損失を実現するために使用されます.

戦略 の 利点

  1. 中間価格の強い方向性を追跡するために中間価格のブレイクを使用することは,トレンド追跡のアイデアを満たします.

  2. RSIが値チャネル内で変動すると,ショックゾーンに入ることを示します.この時点で,中位価格を使用して中位価格の強い方向性を追跡することで,レンジ限定ショックに囚われないようにします.

  3. 最も高い価格のRSIと最も低い価格のRSIインジケーターは,不正な取引シグナルを迅速に識別し,損失を効果的に制御できる迅速なストップ損失を実現するために使用されます.

戦略 の リスク

  1. RSI パラメータの設定が正しくない場合,過度に敏感または反応が遅くなる可能性があります.

  2. 平均価格のブレイクの重要性は常に信頼性がないし,平均価格自体も変動する可能性があります.

  3. 仮想通貨市場の変動が高く ストップ・ロスの設定が過度に緩やかで 損失が増大する可能性があります

解決策:

  • 価格変化に適切な対応を行うために,RSIパラメータを最適化
  • 平均価格ブレイクの信頼性を判断するためにより多くの指標を組み合わせる
  • 巨額の損失を防ぐために適切なストップ損失設定を厳しくします.

戦略の最適化のための方向性

  1. 平均価格のブレイク方向を判断するためにより多くの指標を組み合わせる

ボリンジャー帯のような指標を導入し,中間価格が上位または下位帯に近いかどうかを判断し,それによって中間価格のブレイクアウト方向を判断する精度を向上させる.

  1. 判断に役立つ機械学習モデルを導入する

LSTMやその他のディープラーニングモデルを使用して,中位価格の将来の傾向を予測し,中位価格が特定の方向に成功して突破できるか判断するのに役立ちます.

  1. アダプティブストップ損失を使用する

市場変動に基づいてストップ損失ポジションを動的に調整する.例えば,変動が上昇するとストップ損失ポジションを適切に締め,変動が低下するとストップ損失ポジションを適切に緩める.

概要

RSIチャネル価格差トラッキング戦略は,暗号市場における急速な買い/売急を捕捉することを目的として,チャネル内のRSI変動と価格ブレイクを組み合わせてトレーディングシグナルを生成する.この戦略は,トレンドトラッキングとレンジ識別方法を効果的に組み合わせ,価格差が狭くなっても良い取引シグナルを得ることができる.一方,高速ストップ損失メカニズムは,戦略のリスクを制御することもできる.次のステップは,より多くの指標判断と機械学習予測を組み合わせることで,戦略の信頼性と収益性をさらに向上させることである.


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

//@version=4
strategy("Hull MA of RSI Strategy",overlay=false)
//+++++++++++++++++++++++++++++++
//++++++++++++ Setup ++++++++++++
//+++++++++++++++++++++++++++++++
// RSI 
rsi1_tt="=== RSI ==="
rsi1_len=input(13,title="Period",inline="set",group=rsi1_tt)
//Mid
mid_tt="=== Mid Channel ==="
upper=input(55.0,title="Upper",inline="set",group=mid_tt)
lower=input(45.0,title="Lower",inline="set",group=mid_tt)
//Over
over_tt="=== Over ==="
ovb=input(70.0,title="Overbought",inline="set",group=over_tt)
ovs=input(30.0,title="Oversold",inline="set",group=over_tt)
//++++++++++++++++++++++++++++++++++++++++
//++++++++++++ Hull MA of RSI ++++++++++++
//++++++++++++++++++++++++++++++++++++++++
hma_tt="=== Hull MA ==="
hma_len=input(3,title="Period",inline="set",group=hma_tt)
rsi_c=hma(rsi(close,rsi1_len),hma_len)
rsi_h=hma(rsi(high,rsi1_len),hma_len)
rsi_l=hma(rsi(low,rsi1_len),hma_len)
rsi_hl2=hma(rsi(hl2,rsi1_len),hma_len)
//++++++++++++++++++++++++++++++++
//++++++++++++ Signal ++++++++++++
//++++++++++++++++++++++++++++++++
var order_status="None"
BuySignal=
       crossunder(rsi_c,ovb)
       and
       close<hl2
       and
       rsi_hl2>ovb
       and
       order_status=="None"
CloseBuy=
       order_status[1]=="Long"
       and
       (crossover(rsi_c,ovb)
       or
       crossunder(rsi_l,upper))
SellSignal=
       crossover(rsi_c,ovs)
       and
       close>hl2
       and
       rsi_hl2<ovs
       and
       order_status=="None"
CloseSell=
       order_status[1]=="Short"
       and
       (crossunder(rsi_c,ovs)
       or
       crossover(rsi_h,lower))
ExitSignal=
       CloseBuy
       or
       CloseSell
if BuySignal
    order_status:="Long"
if SellSignal
    order_status:="Short"
if ExitSignal
    order_status:="None"

//+++++++++++++++++++++++++++++++++++
//++++++++++++ Plot Line ++++++++++++
//+++++++++++++++++++++++++++++++++++
rsi_c_col=
       rsi_c>upper?color.new(color.blue,0):
       rsi_c<lower?color.new(color.blue,0):
       color.new(color.orange,0)
rsi_h_col=
       rsi_h>upper?color.new(color.green,0):
       rsi_h<lower?color.new(color.green,0):
       color.new(color.orange,0)
rsi_l_col=
       rsi_l>upper?color.new(color.yellow,0):
       rsi_l<lower?color.new(color.yellow,0):
       color.new(color.orange,0)
rsi_hl2_col=
       rsi_hl2>upper?color.new(color.olive,0):
       rsi_hl2<lower?color.new(color.olive,0):
       color.new(color.orange,0)
plot(rsi_c,title="RSI Close",color=rsi_c_col,linewidth=2)
plot(rsi_h,title="RSI High",color=rsi_h_col,linewidth=1)
plot(rsi_l,title="RSI Low",color=rsi_l_col,linewidth=1)
plot(rsi_hl2,title="RSI HL2",color=rsi_hl2_col,linewidth=1)
upper_line=hline(upper,title="Upper",color=color.new(color.black,100))
lower_line=hline(lower,title="Lower",color=color.new(color.black,100))
fill(upper_line,lower_line,title="Mid Channel",color=color.silver)
ovb_line=hline(ovb,title="Overbought",color=color.new(color.silver,0),linestyle=hline.style_solid,linewidth=2)
ovs_line=hline(ovs,title="Oversold",color=color.new(color.silver,0),linestyle=hline.style_solid,linewidth=2)

//++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++ Plot Analyzing Signals ++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++
//Color
buy_col=
       BuySignal?color.new(color.blue,70):na
sell_col=
       SellSignal?color.new(color.red,70):na
close_buy_col=
       CloseBuy and order_status[1]=="Long"?color.new(color.yellow,70):na
close_sell_col=
       CloseSell and order_status[1]=="Short"?color.new(color.yellow,70):na
//Background
bgcolor(close_buy_col, title='Close Buy', offset=0)
bgcolor(close_sell_col, title='Close Sell', offset=0)
bgcolor(sell_col, title='Sell', offset=0)
bgcolor(buy_col, title='Buy', offset=0)
//++++++++++++++++++++++++++++++++++
//++++++++++++ Backtest ++++++++++++
//++++++++++++++++++++++++++++++++++
strategy.entry("Long",strategy.long,when=BuySignal)
strategy.close("Long",when=CloseBuy)
strategy.entry("Short",strategy.short,when=SellSignal)
strategy.close("Short",when=CloseSell)
//EOF

もっと