資源の読み込みに... 荷物...

RSIのトレンド逆転戦略

作者: リン・ハーンチャオチャン, 日付: 2023年10月23日 17:04:13
タグ:

RSI趋势反转策略

概要

RSIのトレンドリバーサリング戦略は,潜在的トレンドリバーサリングポイントを判断するために,RSI指標のリバーサリング信号を利用し,多空を進める.この戦略は,価格リバーサリングとRSIリバーサリングを組み合わせて,偽のリバーサリング信号を効果的にフィルタリングすることができます.

戦略の原理

この戦略は,RSIの反転信号と価格の反転信号を組み合わせて判断し,主に4つの状況に分けます.

  1. 通常の多頭反転:RSIが上から下へと逆転する傾向にある高低点を形成し,価格が低低点を形成する傾向がある時,通常の多頭反転信号が発生する.

  2. 隠れた多頭反転:RSIが低低点 (RSIが上から下へと続くことを意味する) を形成し,価格が高低点 (RSIが上から下へと逆転することを意味する) を形成すると隠れた多頭反転信号が生じる.

  3. 通常空頭逆転:RSIが低い高値 (RSIの傾向が下から上へと逆転することを意味する) を形成し,価格が高い高値 (価格の傾向が上から下へと逆転することを意味する) を形成すると,通常空頭逆転信号が生じる.

  4. 隠れた空心逆転:RSIが高い高みを形成する (RSIの傾向が下から上へと続くことを意味する),しかし価格が低い高みを形成する (価格の傾向が上から下へと逆転することを意味する) 時,隠れた空心逆転信号が生じる.

これは,RSI指標の逆転と価格の逆転を同時に組み合わせて取引信号を発信し,RSI指標のみまたは価格の逆転のみによる偽信号を効果的に回避し,戦略の安定性を強化する.

優位性分析

RSIの傾向逆転戦略には以下のような利点があります.

  1. RSI指標と価格逆転信号を組み合わせると,偽の逆転信号を効果的にフィルタリングし,信号の質を向上させることができます. RSI指標だけでは,逆転点を完全に判断することはできません.価格逆転と共同検証が必要です.

  2. 隠れた多頭形や隠れた空頭形を認識し,傾向の機会を早期に把握する.

  3. RSIのパラメータと回顧周期はカスタマイズ可能で,異なる市場に対応し,柔軟で便利である.

  4. 視覚化して指標の形状と信号を描き,市場状態を直感的に判断します.

  5. 戦略論理は簡潔で明確で,理解しやすい実装であり,量化取引戦略に適しています.

リスク分析

RSIの逆転戦略には,次のリスクもあります:

  1. RSIの反転は,価格の反転を組み合わせ,多くの偽信号をフィルタリングすることができますが,誤判の可能性は排除されません.指標は,価格の統計的測定量であり,完全に依存することはできません.

  2. 隠された多頭形と隠された空頭形は,容易に認識されず,これらの機会を逃す可能性があります.

  3. 回転周期パラメータの設定が不適切である場合,反転時刻を逃したり判断遅延を引き起こす可能性があります. 異なる市場では周期パラメータを調整する必要があります.

  4. 停止損失戦略の協調使用を確実にする必要があり,空頭逆転の後,損失を拡大させる継続的な低下を避ける必要がある.

リスクは,パラメータの最適化,厳格な停止,適切な把握,隠された逆転などによって制御することができます.

優化方向

RSIの傾向逆転戦略は,以下の点から最適化することができます.

  1. RSIパラメータを調整し,RSIサイクルのパラメータに対する異なる市場の感受性をテストし,最適なパラメータを見つけます.

  2. 回転周期パラメータを最適化し,反転時刻を捉え,偽信号を防止するニーズをバランスする.

  3. 取引量増加の統計分析,例えば大幅な減価引き下げが価格逆転を引き起こす取引量偏差の識別.

  4. 他の指標信号,例えばMACD,ブリン帯などと組み合わせることで判断の正確性が向上します.

  5. 損失拡大を防ぐために停止損失戦略を追加します. 新高値/新低値に突破した後に停止損失を設定できます.

  6. 復習結果に基づいて戦略論理を修正し,利潤因子を向上させる.例えば,開場条件の論理関係を調整する (と,または,否),最適な取引戦略を探す.

概要

RSIトレンドリバター戦略は,RSI指標の反転と価格反転を組み合わせて潜在的なトレンドリバターポイントを識別する.これは,RSIのトレンド判断力を効果的に利用し,価格市場をフィルタリングする偽信号を組み合わせる.この戦略の論理はシンプルで明確で,容易に実現できる.パラメータ最適化,ストップ損失戦略の最適化によってリスクを制御し,戦略のパフォーマンスをさらに向上させる.全体として,RSIトレンドリバター戦略は,信頼できる,実用的なショートライン取引戦略である.


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

//@version=4
//study(title="Divergence Indicator", format=format.price)
strategy(title="RSI Divergence Indicator", overlay=false,pyramiding=1, default_qty_value=2,   default_qty_type=strategy.fixed, initial_capital=10000, currency=currency.USD)

len = input(title="RSI Period", minval=1, defval=5)
src = input(title="RSI Source", defval=close)
lbR = input(title="Pivot Lookback Right", defval=5)
lbL = input(title="Pivot Lookback Left", defval=5)
rangeUpper = input(title="Max of Lookback Range", defval=60)
rangeLower = input(title="Min of Lookback Range", defval=5)
plotBull = input(title="Plot Bullish", defval=true)
plotHiddenBull = input(title="Plot Hidden Bullish", defval=true)
plotBear = input(title="Plot Bearish", defval=true)
plotHiddenBear = input(title="Plot Hidden Bearish", defval=false)

bearColor = color.purple
bullColor = color.green
hiddenBullColor = color.new(color.green, 80)
hiddenBearColor = color.new(color.red, 80)
textColor = color.white
noneColor = color.new(color.white, 100)

osc = rsi(src, len)

plot(osc, title="RSI", linewidth=2, color=#8D1699)
hline(50, title="Middle Line", linestyle=hline.style_dotted)
obLevel = hline(70, title="Overbought", linestyle=hline.style_dotted)
osLevel = hline(30, title="Oversold", linestyle=hline.style_dotted)
fill(obLevel, osLevel, title="Background", color=#9915FF, transp=90)

plFound = na(pivotlow(osc, lbL, lbR)) ? false : true
phFound = na(pivothigh(osc, lbL, lbR)) ? false : true

_inRange(cond) =>
    bars = barssince(cond == true)
    rangeLower <= bars and bars <= rangeUpper

//------------------------------------------------------------------------------
// Regular Bullish

// Osc: Higher Low
oscHL = osc[lbR] > valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Lower Low
priceLL = low[lbR] < valuewhen(plFound, low[lbR], 1)

bullCond = plotBull and priceLL and oscHL and plFound

plot(
	 plFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bullish",
	 linewidth=2,
	 color=(bullCond ? bullColor : noneColor),
	 transp=0
	 )


plotshape(
	 bullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bullish Label",
	 text=" Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor,
	 transp=0
	 )

//------------------------------------------------------------------------------
// Hidden Bullish

// Osc: Lower Low
oscLL = osc[lbR] < valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Higher Low
priceHL = low[lbR] > valuewhen(plFound, low[lbR], 1)

hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFound

plot(
	 plFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish",
	 linewidth=2,
	 color=(hiddenBullCond ? hiddenBullColor : noneColor),
	 transp=0
	 )

plotshape(
	 hiddenBullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish Label",
	 text=" H Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor,
	 transp=0
	 )

longCondition=bullCond or hiddenBullCond
//? osc[lbR] : na  
//hiddenBullCond
strategy.entry(id="RSIDivLE", long=true,  when=longCondition)


//------------------------------------------------------------------------------
// Regular Bearish

// Osc: Lower High
oscLH = osc[lbR] < valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Higher High
priceHH = high[lbR] > valuewhen(phFound, high[lbR], 1)

bearCond = plotBear and priceHH and oscLH and phFound

plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish",
	 linewidth=2,
	 color=(bearCond ? bearColor : noneColor),
	 transp=0
	 )

plotshape(
	 bearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish Label",
	 text=" Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor,
	 transp=0
	 )

//------------------------------------------------------------------------------
// Hidden Bearish

// Osc: Higher High
oscHH = osc[lbR] > valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Lower High
priceLH = high[lbR] < valuewhen(phFound, high[lbR], 1)

hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFound

plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish",
	 linewidth=2,
	 color=(hiddenBearCond ? hiddenBearColor : noneColor),
	 transp=0
	 )

plotshape(
	 hiddenBearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish Label",
	 text=" H Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor,
	 transp=0
	 )
longCloseCondition=crossover(osc,75) or bearCond
strategy.close(id="RSIDivLE",  when=longCloseCondition)

もっと見る