123リバーサルと平滑化RSI取引戦略を組み合わせる


作成日: 2023-10-16 16:27:32 最終変更日: 2023-10-16 16:27:32
コピー: 0 クリック数: 766
1
フォロー
1617
フォロワー

123リバーサルと平滑化RSI取引戦略を組み合わせる

概要

この戦略は123の反転形状と平らなRSI指標を組み合わせることで,トレンドの反転点をより正確に捕捉し,より高い勝利率を得ることができます.この戦略は,任意の周期の任意の品種に使用できます.非常に一般的なトレンドの反転取引戦略です.

戦略原則

  1. 123逆転形状判断:当前2日の閉盘価格が高低点を構成し,3日の閉盘価格が前日閉盘価格より高くなるときは,底の逆転信号;当前2日の閉盘価格が低高点を構成し,3日の閉盘価格が前日閉盘価格より低くなるときは,頂上の逆転信号.

  2. RSI指数判断:RSI指数を平らにするには,移動平均を重み付けることで,RSI指数の遅れを軽減します. RSI指数が設定された高位値線を突破すると,買入シグナルとして;RSI指数が設定された低位値線を突破すると,売出シグナルとして.

  3. 策略信号:123反転形状信号と平滑RSI指標信号が同方向である場合にのみ,取引信号が生成されます. 多信号は123反転で底信号を形成し,RSI指標の上位を突破します. 空気信号は123反転で頂点信号を形成し,RSI指標下位を突破します.

戦略的優位性

  1. RSIと逆転パターンを組み合わせると,トレンドの逆転点をより正確に判断できます.

  2. 平滑なRSIは,平滑な処理によって,通常のRSIの遅れの問題を軽減します.

  3. 123反転形はシンプルで明快で,簡単に判断できる.

  4. 柔軟に調整できるパラメータで,異なる品種と周期に適用され,使用範囲は広範囲である.

  5. 拡張する余地があり,最適化や改良が容易です.

戦略リスク

  1. 123反転形は比較的単純で,小波段の調整に無感であり,偽信号を生成する可能性がある.

  2. 平らなRSI指標の最適化程度は不十分であり,調整パラメータは容易に最適化される.

  3. 逆転形状とRSI指数同向が信号を生成するために必要であり,信号が生成頻度は高くないかもしれない.

  4. 取引コストを考慮しない限り,小規模な資金は儲けにくいかもしれません.

  5. 損失を抑制する仕組みがなく,単一損失をコントロールできない.

戦略最適化の方向性

  1. RSIパラメータを優化して,最適なパラメータの組み合わせを見つける.

  2. 他の指標や形状を追加してフィルタリングを行い,信号の質を向上させる.

  3. 単一損失を抑えるためのストップ・メカニズムを追加します.

  4. 取引コストを考慮し,異なる資金量に対応するためにパラメータを調整します.

  5. 異なる品種と周期のパラメータ設定をテストし,最適なパラメータ組み合わせを探します.

  6. 自動パラメータ最適化機能を追加しました.

要約する

この戦略の全体的な考え方は明確でシンプルで,逆転形状とトレンド判断指標を組み合わせることで,潜在的トレンド転換点を効果的に判断することができる.戦略の優点は,広く適用でき,楽に最適化できるという点にあるが,一定のリスクもあるため,注意して予防し,継続的に最適化する必要がある.全体的に言えば,この戦略は,一般的で実用的なショートライン逆転取引戦略であり,研究と応用を深めるに値する.

ストラテジーソースコード
/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/07/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 is new version of RSI oscillator indicator, developed by John Ehlers. 
// The main advantage of his way of enhancing the RSI indicator is smoothing 
// with minimum of lag penalty. 
//
// 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


SRSI(Length, TopBand,LowBand) =>
    pos = 0.0
    xValue = (close + 2 * close[1] + 2 * close[2] + close[3] ) / 6
    CU23 = sum(iff(xValue > xValue[1], xValue - xValue[1], 0), Length)
    CD23 = sum(iff(xValue < xValue[1], xValue[1] - xValue, 0), Length)
    nRes = iff(CU23 + CD23 != 0, CU23/(CU23 + CD23), 0)
    pos:= iff(nRes > TopBand, 1,
    	   iff(nRes < LowBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Smoothed RSI", 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, "---- Smoothed RSI ----")
LengthRSI = input(10, minval=1)
TopBand = input(0.8, step=0.01)
LowBand = input(0.2, step=0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posSRSI = SRSI(LengthRSI, TopBand,LowBand )
pos = iff(posReversal123 == 1 and posSRSI == 1 , 1,
	   iff(posReversal123 == -1 and posSRSI == -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 )