急速なRSI逆転戦略

作者: リン・ハーンチャオチャン開催日:2023年12月1日 13:37:20
タグ:

img戦略名,概要,戦略原則,優位性分析,リスク分析,最適化方向,概要などを含む,あなたの提供したコードと要求に基づいて書いたSEO記事です.

概要

この戦略は,RSIが過剰購入または過剰販売された場合の逆転機会を主に捕捉する急速なRSI逆転取引戦略である. 過剰購入および過剰販売レベルを判断するために3日間のRSIを使用し,突破信号を決定するために30日間のMAを組み合わせ,過剰購入または過剰販売状態の後,逆転が発生した場合のポジションを開設する.

戦略の論理

戦略は2つの指標を使用しています.

  1. 3日間のRSIは 過剰購入と過剰販売を判断します

  2. 逆転信号の強さを決定するための30日間MA.逆転バーボディが30日間のMAの半分以上である場合,入力信号として使用されます.

特別取引規則

ロング・シグナル:RSIが下限 (デフォルト 25) 以下の値で,現在のバーボディが30日間のMAの半分以上になるとロングします.

ショート信号:RSIが上限 (デフォルト75) を超え,現在のバーボディが30日間のMAの半分を超えるとショートします.

終了信号: ロングポジションを保持する際に,RSIが上限を超えるとか,ショートポジションを保持する際に,RSIが下限を超えると,間もなくバーボディが30日間MAの半分以上になると,ポジションを閉じる.

利点分析

この戦略の利点は以下の通りです.

  1. 短期的な逆転の機会を迅速に把握するために 短期的なRSIを使用します

  2. MAフィルターと組み合わせることで信号の信頼性を高め,範囲限定市場でのウィップソーを回避する.

  3. 制御可能な抽出量で 最大抽出量は大きすぎない

  4. ポジション管理のルールが明確で 過剰な取引は避けられます

リスク分析

この戦略のリスクは以下のとおりです.

  1. 逆転の失敗リスク 過剰購入と過剰販売は必ずしも逆転につながらない

  2. 市場動向に逆らって取引する損失のリスク

  3. フィルタールールが厳格すぎたため 機会を逃した

  4. 高いパラメータ感度,RSIとMA期間調整が必要です.

オプティマイゼーションの方向性

戦略は以下の側面から最適化できます.

  1. 最適な期間を見つけるために RSI パラメータを最適化します

  2. 最適なバーフィルター期間を決定するために MA パラメータを最適化する.

  3. シングルトレード損失を制御するために,ストップ・ロスのストラテジーを追加します.

  4. トレンドを決定するルールを追加し,トレンドに反する取引を避ける.

結論

結論として,これは短期間の逆転に焦点を当てたRSI戦略である.それは,迅速なRSIオーバーバイトとオーバーセールレベルを特定することによって逆転を捉え,エントリを確認するためにMAバーフィルターを使用する.利点は制御可能な引き下げと明確なポジション制御である.短期間の取引に適しているが,失敗した逆転やトレンドに対する取引のリスクを注意すべきである.パラメータ最適化,ストップ損失を追加し,トレンドを判断することによって改善することができる.


/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.0", shorttitle = "Fast RSI str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
limit = input(25, defval = 25, minval = 1, maxval = 100, title = "RSI limit")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast RSI
src = close
fastup = rma(max(change(src), 0), 3)
fastdown = rma(-min(change(src), 0), 3)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
uplimit = 100 - limit
dnlimit = limit

//Body
body = abs(close - open)
emabody = ema(body, 30) / 2

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = bar == -1 and fastrsi < dnlimit and body > emabody
dn = bar == 1 and fastrsi > uplimit and body > emabody
exit = ((strategy.position_size > 0 and fastrsi > dnlimit) or (strategy.position_size < 0 and fastrsi < uplimit)) and body > emabody

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()

もっと