この戦略は,相対力指数長線量化戦略 (RSI長線戦略) と呼ばれる.この戦略は,一定の周期間の価格上昇と下落の移動平均を計算し,RSI技術指標を構築し,超買い超売ラインを設定して,行情のタイミングを判断する.RSIが設定された超売ラインを下回ると,段階的にポジションを構築して,長線に入ります.
この戦略の核心指標は,相対的に強い指数 ((RSI) である. RSI指数は,現在の証券価格が過大評価されているか過小評価されているかを判断するために,平均的な上昇と平均的な低下を比較します. 計算式は次のとおりです.
RSI = 100 - 100 / (1 + UP / DOWN)
その中,UPは,最近n日間の閉盘価格上昇の平均幅度;DOWNは,最近n日間の閉盘価格低下の平均幅度である.指標は0-100の範囲で揺れ,70以上は超買区,30未満は超売区である.
この戦略は,RSIパラメータをLength=14で設定し,14日の閉盘価格に基づいてRSIを計算する.また,超売りラインをRsvalue=40で設定し,すなわち,RSIが40を下回ると超売りと判断する.当日のRSIが40を下回ると,買入ウィンドウを開き,段階的にポジションを構築する戦略をとり,超売り区間に段階的に買い入りをし,最後の平仓時間を設定し,平仓時間を上回った後にすべて売却する.
この戦略の最大の利点は,RSI指標によって市場を判断するタイミングで,低価格の捕獲を実現することにある.RSIが40を下回ると,超売り状態であり,前期下落が過大であり,反発の機会がある.このとき,徐々にポジションを構築し,より良いコストを得ることができる.RSIが70を超えると,超買い状態であり,動きがピークに達する可能性があり,このとき,徐々にポジションを減らすことを考慮することができる.
また,戦略は段階的にポジションを構築する方法を採用することで,単一の入場によってもたらされるリスクを軽減することができます. ポジションの高点としてポジションの建てる窓,最後にポジションの平時間としてポジションの低点,ロングラインの投資を実現します.
この戦略は主にRSIという技術的指標に依存しており,ある程度の遅れがある.特に市場状況が突然変化したときに,RSIは反応を遅らせることがあります.このとき,RSI指標を盲目的にフォローしてポジションを構築すると,利益が制限され,損失が増加する可能性があります.
また,戦略は,probabilisticの取引シグナルを与える. RSIが40未満であっても,100%の反発のチャンスがあることを意味しない. ポジションを確立した後,価格が再び創新する低い確率も存在する.
この戦略は以下の点で最適化できます.
複数の株を組み合わせて,ポートフォリオ取引を行う.単一の株は特定のイベントの影響を受けやすいが,ポートフォリオは個々の株のリスクを分散させる.
ストップ・ストラトジーを加え,さらにリスクをコントロールする.例えば,ストップ・ストラトジーを加え,価格が下がり続ける場合,ストップ・ストラトジーをエクジットする.
オーバーセール区間の使用時間加重平均価格で,全倉庫ではなく,段階的に倉庫を建設するなど,倉庫建設戦略を最適化する.
他の指標のフィルタリング信号,例えば量能指数,移動平均などと組み合わせて,RSIを盲目についていかないようにする.
この戦略は,RSI指標を構築して,超買い超売り区間を判断し,超売り区間で段階的に多頭ポジションを確立し,最後の平仓時間を設定し,長線を保持する.短線取引と比較して,この戦略は,長線を定量化するための投資ツールとしてより適しています.その優位性は,低価格のキャプチャとコストの制御であり,リスクは,指標の遅れとシグナル誤導にあります.将来,組合せ最適化,止損戦略の構築,仓庫最適化など,複数の方法で改善することができます.
/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Relative Strength Index", shorttitle="RSI")
len = input(14, minval=1, title="Length")
src = input(close, "Source", type = input.source)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, "RSI", color=#8E1599)
band1 = hline(70, "Upper Band", color=#C0C0C0)
band0 = hline(30, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, title="Background")
Rsvalue = input(defval = 40, title = "RSvalue", minval = 20, maxval = 75)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2015, title = "From Year", minval = 999)
ToMonth = input(defval = 3, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 2022, title = "To Year", minval = 999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
booking = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() => time >= start and time <= finish ? true : false
endtrade() => time >= booking ? true : false
longCondition = rsi< Rsvalue
if (longCondition)
strategy.entry("BUY", strategy.long)
strategy.close("BUY")