双重逆転RSI ヒストアラート戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-04 17:17:24
タグ:

img

概要

ダブルリバーションRSIヒストアラート戦略は,123リバーション戦略とRSIヒストアラート戦略を組み合わせることでより正確な取引信号を生成する.123リバーション戦略は価格逆転点を判断し,RSIヒストアラート戦略は過剰購入および過剰販売点を判断する.両戦略からの統合信号によりより信頼性の高い取引信号を生成することができる.

戦略の論理

123 逆転戦略

123 リバース戦略は以下の仮説に基づいています: 価格逆転のシグナルは,実際の価格逆転の2日前に現れることが多い.

特別規則は以下のとおりです.

  • 購入信号: 前回の閉店 < 2日前閉店 AND 現在の閉店 > 前回の閉店 AND 9日間の低K線 50以下
  • セールシグナル: 前回の閉店 > 2日前の閉店 AND 現在の閉店 < 前回の閉店 AND 9日間の高速K線 50以上

逆転前2日間の価格関係を使用して,潜在的な逆転点を判断する.K線指標はいくつかのノイズ信号をフィルターする.

RSI ヒストアラート戦略

RSI HistoAlert 戦略は,RSI インディケーターを修正します.

  • RSI値を -100 から 100 にスケールする
  • RSIが既定の購入/販売警告線を超えると取引信号を生成する.

絶対RSI値を使用して,過買い/過売り状態を表示し,信号を起動します.

利点

この戦略は2つの異なる戦略のアイデアを組み合わせて,強みを補完し,より信頼できる信号を生成します.

  1. 123 リバース戦略は価格逆転点を捕捉するのに良い. RSI ヒストアラート戦略は過買い/過売り点を捕捉するのに良い. この組み合わせは,取引機会のより包括的な判断につながります.
  2. この2つの戦略は異なる入力指標を使用します.これは誤った信号の確率を低下させ,信頼性を向上させます.
  3. 両方とも最適化空間を有している.パラメータチューニングによってさらなる性能向上を達成することができる.

リスク

主なリスクは以下のとおりです.

  1. 価格の逆転は保証されません. 123 逆転信号の規則を満たしても価格の傾向は続く可能性があります.
  2. RSIインジケーターには誤った信号の割合が高くなる可能性があります.アラートラインを超えると,必ずしも過剰購入/過剰販売状態を表すわけではありません.
  3. 両方とも同時に間違った信号を発する可能性があります.これは間違った方向のリスクを倍増します.

解決策は次のとおりです

  1. 123 リバーサリティーパラメータを調整して,高い確率のリバーサリティーポイントでのみ信号を出すようにします.
  2. 誤った信号の割合を減らすために RSI ヒストアラート警報ラインの位置を調整します.
  3. 過剰な誤った方向のリスクを避けるため,他の指標の確認を追加します.

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

戦略は以下の点において最適化できる.

  1. 両方の戦略の異なるパラメータ組み合わせをテストして最適な値を見つける.
  2. 複数の要素による検証により 誤った信号をフィルタリングできます 誤った信号をフィルタリングすることで
  3. 異なる保持期間のスキームをテストする.現在の戦略はモメント・ホールディングを使用する.保持後のトレンドを評価することができる.
  4. 長期と短期のパラメータを別々に設定します

結論

ダブルリバーションRSIヒストアラート戦略は,単一戦略使用と比較してより信頼性の高い取引信号のために価格逆転と過買い/過売りの判断戦略を組み合わせます. 誤った信号の確率が低く,より包括的な判断があります. 安定性と収益性をさらに高めるためにパラメータチューニング,多因子検証,ポジション保持計画などを通じて最適化するための大きな余地もあります.


/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 28/06/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// This simple indicator modified RSI
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


RSI_Hist(RSIPeriod,BuyAlertLevel,SellAlertLevel,RSIHistoModify) =>
    pos = 0.0
    xPrice = close
    RSIMain = (rsi(xPrice, RSIPeriod) - 50) * RSIHistoModify
    pos:= iff(RSIMain > BuyAlertLevel, 1,
    	     iff(RSIMain < SellAlertLevel, -1, nz(pos[1], 0)))
    pos

strategy(title="Combo Backtest 123 Reversal & RSI HistoAlert", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- RSI HistoAlert ----")
RSIPeriod = input(13, minval=1)
BuyAlertLevel = input(-10)
SellAlertLevel = input(10)
RSIHistoModify = input(1.5)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posRSI_Hist = RSI_Hist(RSIPeriod,BuyAlertLevel,SellAlertLevel,RSIHistoModify)
pos = iff(posReversal123 == 1 and posRSI_Hist == 1 , 1,
	   iff(posReversal123 == -1 and posRSI_Hist == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1 ) 
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

もっと