相対力指数(RSI)とストップロスに基づくロング定量取引戦略


作成日: 2024-03-08 15:06:58 最終変更日: 2024-03-08 15:06:58
コピー: 0 クリック数: 612
1
フォロー
1617
フォロワー

相対力指数(RSI)とストップロスに基づくロング定量取引戦略

概要

この記事では,相対的に強い指数 ((RSI) とストップをベースにした多頭量化取引戦略について説明します.この戦略は,RSI指標を使用して,市場の過剰売りと過剰買い状態を判断し,過剰売り時に多頭ポジションを開き,過剰買い時に平仓を開きます.同時に,戦略は,百分位ストップを使用してリスクを制御します.これは,強度の市場での上昇傾向を捕捉することを目的としたクラシックなトレンド追跡戦略です.

戦略原則

この戦略の核心は,相対的強弱指数 (RSI) である. RSIは,一時期の価格変化の幅を測定するために使用される動的振動指標である. 計算式は次のとおりである.

RS = N天内上涨幅度的平均值 / N天内下跌幅度的平均值
RSI = 100 - 100 / (1 + RS)

このうち,RSIを計算する時間周期はNで,通常は14。

この戦略の論理は以下の通りです.

  1. N周期のRSIを計算する.
  2. RSIが上下から超売りレベルを突破したときに,多頭ポジションを開きます.
  3. RSIが上から下へと超買いレベル (例えば70) を突破すると,多頭ポジションを平らにする.
  4. ポジション開設時に,現在の価格と設定されたパーセントに基づいて,ストップ・ロスの価格が計算されます.
  5. 価格がストップ・ロスの価格に触れた場合,多頭ポジションを平らにして,損失をコントロールする.

この戦略は,市場が熊から牛の転換の初期にポジションを開き,牛市の終わりに平仓を打つことを試み,主要な上昇傾向を捕捉する.

優位分析

  1. シンプルで使いやすい:この戦略は,RSIという技術指標のみを使用し,論理が明確で,初心者向けに学習・使用が適しています.
  2. トレンド追跡: 戦略は,超売り区でポジションを開き,超買い区で平仓, “低買い高売り”のトレンド投資理念に合致し,牛市の上昇傾向を効果的に捉えることができる.
  3. リスク管理: パーセンテージ・ストップ・ロスは,投資家が取引ごとにリスクの隙間を制御し,損失を許容範囲に制限するのに役立ちます.

リスク分析

  1. 振動市場の損失:RSIは後退指標であり,振動市場の場合,誤った信号が多く発せられ,頻繁に平仓を入れ,小損失が大きな損失になる.
  2. ストップレスの設定が不適切:ストップレスの設定が広くすぎると,単発の損失が大きい.ストップレスの設定が狭すぎると,遅すぎると,後続トレンドが失われます.
  3. ポジション管理の欠如:戦略の欠如 ポジションの動的調整の仕組み,リスク・ゲート・コントロールの柔軟性不足.

最適化の方向

  1. トレンドフィルター:RSI信号を使用する前に,長期平均線または他のトレンド指標を使用して大トレンドを判断し,大トレンドが上昇するときにのみRSI多頭信号を使用します.
  2. ストップ・オプティミゼーション: 移動ストップまたはATRなどのより高度なストップ・ストラテジーを使用し,ストップ・ポジションを動的に調整し,市場リズムに適した状態にする.
  3. ポジション管理:市場の波動性,トレンドの強さなどの要因に応じて,取引ごとにポジションの大きさを動的に調整し,リスクをよりよく制御する.
  4. 複数空頭策略:複数空頭策略を使用する一方で,空頭策略を導入して,策略の全体的なリスクのを低減する.

要約する

この記事では,RSIとストップをベースにした多頭量化取引戦略を紹介する.この戦略は,RSIの超売り超買い信号を利用して,ポジションを平準化すると同時に,パーセントのストップコントロールのリスクを使用する.これは,初心者向けに学ぶための簡単な実用的なトレンド追跡戦略である.しかし,それは,振動市場の不良パフォーマンス,ストップとポジション管理の柔軟性の欠如などのいくつかの限界も持っている.これらの欠陥に対して,トレンドフィルタリング,ストップ,ポジション管理,多空対冲などの側面から戦略を最適化して,より健全な収益を得ることができる.

ストラテジーソースコード
/*backtest
start: 2023-03-02 00:00:00
end: 2024-03-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI Strategy (Long)", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
length = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close
vrsi = ta.rsi(price, length)
co = ta.crossover(vrsi, overSold)
cu = ta.crossunder(vrsi, overBought)

// *** Signals ***
enter_long = ta.crossover(vrsi, overSold)
enter_short = ta.crossunder(vrsi, overBought)
close_long = ta.crossunder(vrsi, overBought)
close_short = ta.crossunder(vrsi, overBought)


// *** Risk management *** 
entry_price = close
percent_diff = input(5)
stop_loss_price_long = (1 - percent_diff / 100.) * entry_price 
stop_loss_price_short = (1 + percent_diff / 100.) * entry_price 


// *** Positions *** 
if enter_long and strategy.position_size == 0
    strategy.entry("Long", strategy.long)
    strategy.exit("SL Long", "Long", stop = stop_loss_price_long)

if enter_short and strategy.position_size == 0
    strategy.entry("Short", strategy.short, qty=.001)
    strategy.exit("SL short", "Short", stop = stop_loss_price_short)

if close_long 
    strategy.close("Long", "Exit Long")

if close_short
    strategy.close("Short", "Exit Short")