
この戦略は,相対的に強い指標 ((RSI)) に基づくショートライン取引戦略である.これは,RSI指標を使用して,オーバーバイのオーバーセール区間を識別し,K線実体フィルタリングの偽信号と組み合わせて,ターニングポイントで買入と売却の操作を行う.この戦略は,極端なオーバーバイのオーバーセール状態の後に反発の機会を捕捉することを追求する.
まず,RSI指標を計算し,計算データ源として閉盘価格を選択し,周期を7日とする.その後,超買線を30と超売り区間を70に設定する.RSI上線30を突破すると買信信号が生じ,下線70を突破すると売り信号が生じます.
偽信号をフィルターするために,K線実体に対して通常の1〜3倍の大きさに拡大するように要求し,取引信号を触発する.ここでは,RSI 1〜5本のK線が連続して超買超売の範囲にあることを確認するために信号を使用し,実体に対する拡大倍数は4倍に設定されている.
RSIが連続して5つのK線が30を下回ったときに買入シグナルを生じ,その後K線が陽線を收えた場合,実体が4倍以上の拡大をすると買入操作を実行する.
利潤をロックするために,ポジション保持方向が現在のK線方向と一致するときに,実体2倍拡大の場合には平仓ストップする.
RSI指標は,超買い超売り状態をよりよく識別する. 株式が超買い超売り区間にあるとき,短期的に反転の可能性が高く,超売り区間は,反転が起ころうとしていることをよく予告する. この戦略は,反転の前夜にチャンスを捕まえる.
単なるRSI指標の取引では,偽信号がより多く存在することがあります.この戦略は,K線エンティティの拡大をフィルタリング条件として加え,逆転のターニングポイントの前夜にK線エンティティの拡大が発生したときにポジションを追加し,震動市場の偽信号に誤導されないようにします.
RSIが1-5のK線を継続的に超買い超売り区間にあることを確認することを要求し,個々の異動のK線によって誤導されないようにし,信号の信頼性を向上させる.
实体拡大倍数は,異なる品種に応じて調整できる.大大落型品種には適当な緩和条件が与えられ,波動平穏型品種には適当な強化条件が与えられ,自分の取引品種に適した自由調整が可能である。
この策略のパラメータ設定には一定の制限があり,異なる品種と異なる時代にはパラメータを調整する必要がある. 一つのパラメータ設定を固定的に使用すると,過適合の問題が発生する可能性があります.
RSI指数は,それ自体には一定程度の遅滞性がある.実体増幅をフィルタリング条件として加えると,先程一定の幅でポジションを退出することもできる。したがって,買出点識別の正確さは,一般的には特に高いものではない。
振動的な状況では,RSI指標は頻繁に買い売りシグナルを誘発し,長期にわたってポジションを保持する可能性があります.この場合,パラメータを調整したり,戦略の実行を一時的に停止したりする必要があります.
この戦略は,ショートラインの取引戦略であり,利益をロックし,リスクを制御するために,平均線を削除し,ストップ・ストップなどの適切なポジション戦略と連携する必要があります.
周期,超買超売ライン,およびK線実体フィルタリングパラメータなどの異なるRSIパラメータの組み合わせをテストすることができ,パラメータを異なる品種に適合するように最適化します.
利潤をロックするために移動停止またはパーセンテージ停止を設定することも可能で,ATR 値に基づいてストップポイントを設定することも,またはDonchain チャンネルと組み合わせてストップを行うこともできます.
MACD,KDJなどの他の指標のフィルタリング条件を添加して,無効ブレイク時に誤信号を生じさせないようにする.また,トレンドの反転信号を識別するために波動率指標を使用することができます.
平均線を用いてトレンドの方向を判断し,トレンドの方向が一致するときにのみ取引信号を考慮し,揺れ動いている時,一時停止戦略を選択できます。また,トレンドの強い指標のフィルタリング信号と組み合わせることもできます。
このRSI反転戦略は,全体として,典型的なショートラインの取引戦略であり,一定の利点とリスクがあります.主な利点は,超買い後超売り後の反転を捕捉できることです.主なリスクは,自信値の正確性が低いことと,震動状況下でのポジション保持時間が長すぎることです.
/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title = "Noro's FRSI Strategy v1.21", shorttitle = "FRSI str 1.21", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_type = strategy.commission.percent, commission_value = 0.0)
//Settings
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rb = input(1, defval = 1, minval = 1, maxval = 5, title = "RSI Bars")
sps = 0
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2038, defval = 2018, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//Fast RSI
fastup = rma(max(change(rsisrc), 0), rsiperiod)
fastdown = rma(-min(change(rsisrc), 0), rsiperiod)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
//Limits
bar = close > open ? 1 : close < open ? -1 : 0
uplimit = 100 - limit
dnlimit = limit
//RSI Bars
ur = fastrsi > uplimit
dr = fastrsi < dnlimit
uprsi = rb == 1 and ur ? 1 : rb == 2 and ur and ur[1] ? 1 : rb == 3 and ur and ur[1] and ur[2] ? 1 : rb == 4 and ur and ur[1] and ur[2] and ur[3] ? 1 : rb == 5 and ur and ur[1] and ur[2] and ur[3] and ur[4] ? 1 : 0
dnrsi = rb == 1 and dr ? 1 : rb == 2 and dr and dr[1] ? 1 : rb == 3 and dr and dr[1] and dr[2] ? 1 : rb == 4 and dr and dr[1] and dr[2] and dr[3] ? 1 : rb == 5 and dr and dr[1] and dr[2] and dr[3] and dr[4] ? 1 : 0
//Body
body = abs(close - open)
emabody = ema(body, 30)
//Signals
up = bar == -1 and sps == 0 and dnrsi and body > emabody / 4
dn = bar == 1 and sps == 0 and uprsi and body > emabody / 4
exit = bar == 1 and fastrsi > dnlimit and body > emabody / 2
//Trading
if up
strategy.entry("Long", strategy.long, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
sps := 1
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
strategy.close_all()
sps := 0