トリプル RSI エクストリーム トレーディング戦略

作者: リン・ハーンチャオチャン, 日付: 2023年11月2日 14:34:21
タグ:

img

概要

この戦略は,市場が極端に過剰購入または過剰販売レベルに達したかどうかを判断するために,異なる期間の3つのRSI指標を使用し,それに応じて購入および販売信号を生成します.主に異なる時間枠における指標の組み合わせを観察することによって市場動向を判断します.

戦略の論理

この戦略は,2期,7期および14期RSIインジケーターを同時に利用する.すべての3つのRSIインジケーターが同時に過買いまたは過売りシグナルを示すとき,取引シグナルが生成される.

具体的には,2期RSIが10以下,7期RSIが20以下,14-期RSIが30以下である場合,市場は過売りとみなされ,購入信号が生成される. 2期RSIが90以上,7期RSIが80以上,14-期RSIが70以上である場合,市場は過買いとみなされ,販売信号が生成される.

このコードは,RSIの過剰購入/過剰販売の限界値を調整するために精度パラメータを使用します.デフォルトは3で,より低い値はより厳格な過剰購入/過剰販売基準を意味します.

買い・売り信号が生成されると,価格が逆転し,その日のオープニング価格を突破すると,現在のポジションは,利益を得たり,損失を削減したりするために閉鎖されます.

利点分析

  • 多期RSI指標の組み合わせを使用することで,過買い/過売り状態をより正確に特定し,誤った信号をフィルターすることができます.

  • 異なるパラメータで過買い/過売基準を細かく調整することで,市場の状況に基づいて戦略の敏感性を調整できます.

  • オープンな価格追跡ストップを導入することで 利益が間に合うように 確保できます

リスク分析

  • RSIインジケーターは,トレンド逆転を特定するのに効果的でない差異傾向があります.

  • 高波動期間の場合は,RSIパラメータを調整する必要があります.そうでなければ,あまりにも頻繁にストップを誘発する可能性があります.

  • 3つのRSIシグナルが同時に発信するのは稀で 良い取引機会を逃す可能性があります

  • 過剰購入/過剰販売基準のパラメータを調整し,異なる市場でテストする必要があります.

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

  • RSIの差異を避けるために,ボリンジャー帯,KDJなど,他の指標を追加することを検討する.

  • RSIのパラメータを自動最適化する

  • ATR停止などの他の停止出口条件を試験する.

  • 不適切な時期での取引を避けるためにフィルターを追加します.

結論

この戦略は,多期RSI指標の組み合わせを使用して過買い/過売りゾーンを特定し,トレンドトラッキングストップを実装する.利点には,正確性を向上させ,間に合う停止が含まれます.デメリットには,行われない取引,RSIの誤判が含まれます.より良いパフォーマンスを達成するために,確認指標を追加することとともに,パラメータ最適化テストが推奨されます.


/*backtest
start: 2023-10-25 00:00:00
end: 2023-10-28 10:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's Triple RSI Top/Bottom", shorttitle = "3RSI Top/Bottom", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
accuracy = input(3, defval = 3, minval = 1, maxval = 10, title = "accuracy")
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")


//RSI-2
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//RSI-7
middleup = rma(max(change(close), 0), 7)
middledown = rma(-min(change(close), 0), 7)
middlersi = middledown == 0 ? 100 : middleup == 0 ? 0 : 100 - (100 / (1 + middleup / middledown))

//RSI-14
slowup = rma(max(change(close), 0), 14)
slowdown = rma(-min(change(close), 0), 14)
slowrsi = slowdown == 0 ? 100 : slowup == 0 ? 0 : 100 - (100 / (1 + slowup / slowdown))

//Signals
acc = 10 - accuracy
up = fastrsi < (5 + acc) and middlersi < (10 + acc * 2) and slowrsi < (15 + acc * 3)
dn = fastrsi > (95 - acc) and middlersi > (90 - acc * 2) and slowrsi > (85 - acc * 3)
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size > 0 and close > open)

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

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

もっと