相対力RSI反転戦略


作成日: 2023-11-14 16:49:02 最終変更日: 2023-11-14 16:49:02
コピー: 0 クリック数: 762
1
フォロー
1617
フォロワー

相対力RSI反転戦略

概要

RSI反転戦略は,相対的に強い指標であるRSIを活用して超買超売状況を識別し,反転点で買入を施す量化取引戦略である.この戦略は,RSI超買区と超売区の値を設定し,RSIが超買区に入るとき空売りし,RSIが超売区に入るとき多売りして,価格反転を捕獲して利益を得る.

戦略原則

この戦略は以下の原則に基づいています.

  1. RSIは,市場が現在過剰買いまたは過剰売り状態にあるかどうかを反映することができます. RSIは,一時期の平均上昇と平均下落の比率を計算し,多頭勢力の相対的な強さを空頭勢力の比率で測定し,現在の市場の超買い超売り程度を判断します.

  2. RSIが超買区に入ると (通常,RSIが70以上になると超買であると考えられる) は,多端の勢いがすでに強いことを示す.このとき,看板ポジションを保有するトレーダーの数は比較的多く,看板を継続するスペースは限られており,価格は超買状態を逆転するために継続的に下落する可能性がある.

  3. RSIが超売り領域に入るとき (通常はRSIが30未満で超売りであると考えられる) は,空頭勢いがすでに強いことを示す.このとき,下落ポジションを保有するトレーダーの数は比較的多く,下落を続ける余地が限られ,価格が上昇し続け,超売り状態を逆転させる可能性がある.

  4. したがって,RSI超買区の値が90で,超売区の値が10で,RSIが超買区に入るときに空白し,RSIが超売区に入るときに多めにして反転をキャッチすることができます.

具体的には,この戦略の核心的な論理は:

  1. RSI指標値を計算し,閉盘価格をRSIの計算インプットとして,長さは2サイクルである.

  2. RSIが90を突破すると,超買区に入り,空きポジションを開くことを示す.RSIが10を下回ると,超売り区に入り,空きポジションを開くことを示す.

  3. ポジション開設する取引ごとに,ストップ・ロース・ポイントを設定する. 多頭ストップは最低価格 (low) で,空頭ストップは最高価格 (high) で設定する.

  4. 取引開始ごとに,追跡ストップを設定します. RSIがさらに超売り領域に入ると,追跡ストップを調整して,ストップ距離を緩やかにします.

  5. 逆転が来ると,RSIが50の近くの中性領域に戻ると,平準化を停止するオプションがあります.

  6. 逆転が来ない場合,3K線以上のポジションを開設し,止損または停止条件に達していない場合は,過剰なポジションによるより大きな損失を避けるために,強制的に平仓する.

戦略的優位性

RSI反転策には以下の利点があります.

  1. RSI指標を用いて超買超売を判断すると,市場の逆転点を効果的に捕捉できます. RSIは超買超売を判断するのに正確で,逆転の成功率は高くなります.

  2. 逆転取引戦略は,継続的なトレードに続くシステムの優位性を持っています. 過剰買いが発生した場合,空白を間に合わせ,過剰売りは多めにして,被套を避けることができます.

  3. 策略に Stop Loss メカニズムを加えることで,単一取引の損失を効果的に制御できます.逆転が成功しない場合でも, Stop Loss は,損失を一定範囲で制御できます.

  4. トラッキングストップは,価格が継続する状況に応じてストップ距離を柔軟に調整することができ,ストップが有効であることを保証するだけでなく,より多くの価格差を追跡するために努力します.

  5. 強制停止損失は,長期にわたって反転しない取引は,無限期間の損失を招かないように,平仓を保証します.

  6. RSIのパラメータは調整可能であり,異なる市場に対応してパラメータを調整し,戦略の適応性を向上させることができます.

戦略リスク

この戦略にはいくつかのリスクがあります.

  1. RSI反転は,技術指標の取引戦略として,その反転結果には曲線適合のリスクがあります.実盤の反転の成功率は,反転結果よりも低い可能性があります.

  2. RSIは超買いと超売りを判断できるが,逆転の正確なタイミングを予測することはできない.この戦略を採用した後に逆転が起こらず,価格が継続するリスクがある.

  3. 策略によって決定されたRSI超買超売領域は不合理であり,誤って設定された場合,見逃した反転または反転前夜破盤を引き起こす可能性があります.

  4. 逆転が止位置に達しない場合,逆転が再び逆転する確率がある.この場合止は取引できないかもしれない.

  5. ストップダメージポイントは不合理に設定され,近すぎるとストップダメージが終了し,遠すぎるとストップダメージの意味が失われる.

  6. 取引手数料は収益にも影響を及ぼします.

戦略の最適化

RSI反転策は,以下の点で最適化できます.

  1. 異なるRSIパラメータをテストし,RSI長さ,超買区の値,超売区の値などの最適のパラメータの組み合わせを探します.

  2. 偽反転のノイズを避けるために,より多くのフィルタリング条件を追加し,MACD指標などと組み合わせて反転の高確率領域を決定する.

  3. ATRによるストップ,波動率によるストップ距離の設定など,最適化ストップ戦略.

  4. ストップ戦略の最適化,移動ストップの設定,より大きな価格差の追跡など.

  5. 機械学習モデルの補助判断を組み込み,反転の成功率を高めます.

  6. 異なる市場や品種でデータをテストし,最適な実用化のためにパラメータを調整します.

  7. 取引量に合わせて,取引量が大きくなった場合にのみ反転信号を考慮する.

要約する

全体として,RSI反転戦略は,RSI指標を活用して,超買い超売り市場の状態を識別し,反転点での取引を行うことで,良い体系的な利益を得ることができます.しかし,この戦略には,一定のリスクがあり,RSIパラメータとストップ・ストップ・ストップ戦略の最適化テストが必要であり,他のフィルター指標と併せて誤った取引を減らす必要があります.適切な方法であれば,RSI反転戦略は,量化取引システムにおける有効な戦略モジュールになることができます.

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

//@version=4
// Copyright (c) 2021-present, RicMos
//study("RSI2 Sell Strategy, overlay=true)

//------------------------------------------USER VARIABLE DEFINITIONS --------------------------------------
var float lots = 0.1
//var float fixed_commission = 0.6 // forex pairs commission  value USD per position size two sides
var float fixed_commission = 10 // BTC commission value USD per position size two sides
//var float money = 10000 //forex pairs position size
var float money = 0.3333 //BTC position size



strategy(title="RSI2 Sell Strategy", commission_type=strategy.commission.cash_per_order, calc_on_every_tick =true, commission_value = fixed_commission/2, overlay=true, default_qty_value= lots*100000, initial_capital=1000, currency = "USD", calc_on_order_fills = false)
len = input(2, minval=1, title="RSI Length")
src = input(close, "RSI Source", type = input.source)
upRsi = rma(max(change(src), 0), len)
downRsi = rma(-min(change(src), 0), len)
rsi = downRsi == 0 ? 100 : upRsi == 0 ? 0 : 100 - (100 / (1 + upRsi / downRsi))
var color buyColor = color.blue
var color sellColor = color.red


plotshape(rsi <= 10 ? low : na, title="Arrow Up", style=shape.triangleup, location=location.belowbar, size=size.tiny, color=buyColor)
plotshape(rsi >= 90 ? high : na, title="Arrow Down", style=shape.triangledown, location=location.abovebar, size=size.tiny, color=sellColor)


// long = rsi <= 10 
// var float longsl = 0
// var int long_ts_points = 0

// if long
//     longsl:= low
//     long_ts_points := 200
    
// if rsi >= 70
//     long_ts_points := 100
// else if rsi >= 80
//     long_ts_points := 80


// plot (longsl)
// var int barsPassed = 0
// barsPassed := barssince(long)
// if long
//     strategy.entry("long", long = strategy.long, qty = 10000, stop = high)
// strategy.exit("slLo", from_entry="long", stop = longsl-0.0002, trail_points = long_ts_points )
// //strategy.close("long", when = rsi[1]>=50 and rsi < 50 , comment = "rsi under 50" )
// strategy.cancel_all(barsPassed > 3  and not long)


short = rsi >= 90 
var float shortsl = 0
var int short_ts_points = 0
//var bool stClose = 0

if short
    shortsl:= high
    short_ts_points := 200
    
if rsi <= 30
    short_ts_points := 100
    //stClose :=1
else if rsi <= 20
    short_ts_points := 80 
//else
    //stClose := 0

plot (shortsl)
var int barsPassedSh = 0
barsPassedSh := barssince(short)
if short
    strategy.entry("short", long = strategy.short, qty = money, stop = low)
strategy.exit("slSh", from_entry="short", stop = shortsl, trail_points = short_ts_points, trail_offset =20 )
//strategy.close("short", comment="rsi<30", when = stClose)


//strategy.close("long", when = rsi[1]>=50 and rsi < 50 , comment = "rsi under 50" )
strategy.cancel_all(barsPassedSh > 3  and not short)