この戦略は,RSI 長期戦略として略称される"リラティブ・ストレンジ・インデックス・ロングターム・量子戦略"と呼ばれる.特定の期間の上昇と減少範囲の移動平均を計算することによって,RSI 技術指標が構築され,市場のタイミングを判断するためにオーバーバイトとオーバーセールラインが設定される.RSI が設定されたオーバーセールラインよりも低いとき,ロングポジションは徐々に長期保持に構築される.
この戦略の核心指標は,相対強度指数 (RSI) である.このRSI指標は,現在の証券価格が過大評価または過小評価されているかどうかを決定するために,一定の期間における平均上昇と減少を比較する.その計算式は:
RSI = 100 - 100 / (1 + UP / DOWN)
UP は過去 n 日間の閉じる価格上昇の平均幅,DOWN は過去 n 日間の閉じる価格減少の平均幅である.インデックスは 0-100 の間隔間で振動する.70 以上の値は過買いゾーンであり,30 未満は過売りゾーンである.
この戦略では,RSIパラメータ長さ=14を設定し,14日間の閉盤価格に基づいてRSIを計算します.そして,過売線 Rsvalue=40を設定します.つまり,RSIが40を下回ると過売が決定されます.その日のRSIが40を下回ると,買い窓が開かれ,過売エリアでポジションが徐々に構築され,最終閉盤時間は閉盤時間を超えた後に売り切れるように設定されます.
この戦略の最大の利点は,RSIインジケーターを使用して市場のタイミングを決定することで,低価格のキャプチャが実現することです.RSIが40を下回ると,前回の減少が大きすぎたことを意味し,リバウンドのチャンスがあることを意味する過剰販売状態です.この時点で,より良いコストを得るために徐々にポジションを構築します.RSIが70を超えると,過剰購入状態にあり,それは市場がピークに達し,ポジションが減少することが可能であることを意味します.
さらに,戦略は,単一のエントリーのリスクを減らすために段階的なポジション構築アプローチを採用しています. 建設ウィンドウはポジションの高点として機能し,最終閉じる時間は長期投資を達成するためのポジションの低点として機能します.
この戦略は主にRSI技術指標に依存しており,一定の遅れがあります.特に市場が突然変化すると,RSIは間に合わずに反応することがあります.この時点で,RSI指標を盲目的にフォローしてポジションを構築すると,利益が限られ,損失が増加することがあります.
この戦略は,確率的な取引信号を提供している.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")