RSI逆転取引戦略

作者: リン・ハーンチャオチャン,日付: 2023-11-14 16:49:02
タグ:

img

概要

RSI逆転取引戦略は,相対強度指数 (RSI) を用いて過買い・過売条件を特定し,逆転点で長または短取引を行う量的な取引戦略である.この戦略は,RSI過買い・過売の値を設定し,RSIが過買いゾーンに入ると短く,RSIが過売ゾーンに入ると長く,価格逆転を捕捉する.

戦略の論理

戦略は次の基本的な論理に基づいています

  1. RSIは,現在の市場が過買いか過売れているかを反映することができる.RSIは,平均上向きの変化と平均下向きの変化の比率を計算することによって,上向き対下向きの相対的な勢いを測定する.

  2. RSIが過剰購入ゾーン (通常は70を超えるRSIと見なされる) に突入すると,強烈な上昇勢いを示します.上昇傾向のポジションを長期にわたって保持しているトレーダーは多くなり,上昇傾向を継続する余地が限られています.価格は過剰購入状態を修正するために下向きに逆転する可能性があります.

  3. RSIが過売りゾーン (通常は30以下) に突入すると,強烈な下向きの勢いを示します.下向きのポジションを保持するトレーダーが多くなり,下向きの継続の余地が限られています.価格が過売り状態を修正するために上向きに逆転する可能性があります.

  4. 逆転を捕捉するために,RSIが過剰購入ゾーンに入るとショート,RSIが過剰販売ゾーンに入るとロングをします.

具体的には 戦略の論理は

  1. RSIの指標値を計算し,RSIのソースとして閉じる価格を用い 2つの期間の長さで計算する.

  2. RSIが90を超えると,オーバー買いゾーンに入ると,ショートになります. RSIが10を下回ると,オーバーセールゾーンに入ると,ロングになります.

  3. ストップ・ロスを設定します 低価格でロングストップ,高価格でショートストップです

  4. 各取引にトレーリングストップを設定します.RSIがより極端な過剰購入/過剰販売レベルに続く場合は,トレーリングストップを調整してより多くのスペースを与えます.

  5. RSIが50周りの中性帯に戻ると 利益を得ることを考慮してください

  6. 3バーの後に逆転がない場合は,無制限損失を避けるために取引を閉じる.

利点

RSI逆転戦略には以下の利点があります.

  1. RSIを使用して過剰購入/過剰販売条件を特定することで,市場の逆転点を効果的に把握することができます. RSIは極端な判断に正確であり,逆転の成功率は高いです.

  2. 逆転戦略は,傾向を追跡し続けるという体系的な利点を有します. 罠にはまりないように,過剰購入で短く,過剰販売で長くすることができます.

  3. ストップロスのメカニズムは,個々の取引での損失を効果的に制御します.逆転が失敗しても,損失は一定の範囲内にとどまります.

  4. トレイリングストップは,継続的な価格動きに基づいてストップ距離を柔軟に調整し,ストップを起動させ,より多くの価格差を捉える間にバランスを取ることができます.

  5. 固定バーの後に強制的な退出は タイムリーな逆転なしの取引が 無制限の損失につながらないことを保証します

  6. 調整可能なRSIパラメータは,戦略を異なる市場に適応させることができます.

リスク

この戦略には次のリスクもあります

  1. テクニカル指標戦略として,RSI逆転パフォーマンスには曲線適合バイアスがある可能性があります.実際の取引逆転成功率はバックテスト結果よりも低い場合があります.

  2. RSIは過買い/過売状態を特定できるが,逆転のタイミングを正確に予測することはできない.入場後逆転がないリスクと価格の傾向が続く.

  3. RSIの買い過ぎ/売り過ぎレベルは,合理的に設定されていない場合もあります.間違ったレベルは,逆転を逃すか,逆転の前に停止される可能性があります.

  4. 利益を得る前に価格が再び逆転する確率です. 利益を得ることは満たされないかもしれません.

  5. ストップ損失距離が不合理に狭くまたは太りすぎると,ストップは効果がない状態になる.

  6. 取引手数料も 戦略の収益性に影響を与えます

改良

戦略は以下の方法で強化できます.

  1. RSIの長さ,過買い/過売値値など,最適な組み合わせを見つけるために,異なるRSIパラメータをテストする.

  2. 誤った逆転信号を避けるために,より多くのフィルターを追加します.例えば,MACDなどと組み合わせることで確率を増やす.

  3. ストップ・ロスの戦略を最適化する.例えば,ATRベースのストップ,変動調整距離.

  4. 利得戦略を最適化して 価格差を拡大して 利得を拡大して

  5. 機械学習モデルを追加して 逆転を判断し 成功率を改善します

  6. 実際の取引のための最良のパラメータを見つけるために,異なる市場とインstrumentで戦略をテストします.

  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)










もっと