RSIに基づく閾値取引戦略


作成日: 2023-10-30 14:58:38 最終変更日: 2023-10-30 14:58:38
コピー: 0 クリック数: 805
1
フォロー
1617
フォロワー

RSIに基づく閾値取引戦略

概要

この戦略は,比較的強い指標であるRSIをベースに,単純な値取引戦略を実現する. RSIが30を下回ったときに買って,40を下回ったときに売る. ポジション保持期間は10日間固定される. この戦略は,中期短期取引に適している.

戦略原則

この戦略は主にRSI指標の超売区と超買区の取引信号の生成に基づいています. RSI指標は周期内の低下の速さを反映しています. RSIが30を下回ると,売り区を超え,株価が反発する可能性があり,RSIが70を超えると,株価が下がる可能性があります.

具体的には,10日RSIを計算し,30と40の値を設定する. 10日RSIが30を下回ると買入シグナルが生み出され,10日RSIが40を超えると売出シグナルが生み出されます. 買入シグナルを受け取った後,ポジションを開き,購入します.

この戦略はシンプルで分かりやすいもので,RSI指数で超売り超買い領域を判断し,指数に基づく値取引戦略を実現します.

戦略的優位性

  1. RSI指標の幅広く利用され,パラメータの最適化スペースが広い

この戦略は,広く使用されているRSI指標を使用しています. RSIパラメータは,異なる周期と市場環境に適用するために調整して最適化できます.

  1. シンプルなトレンドトラッキングを実現しました

RSIは価格変化のトレンドを反映する. RSI指標に基づいて価格動きを判断する戦略は,簡単なトレンド追跡を実現する.

  1. リスクの管理

戦略は固定保有期限を採用し,単一損失を効果的に制御する.同時に,RSIパラメータは,誤った取引の確率を減らすために調整することができる.

戦略リスク

  1. RSIのパラメータは過度に最適化されやすい.

RSIのパラメータは柔軟に設定できますが,過度な最適化と反測偏差は,実盤リスクをもたらします.

  1. 遅滞がある

RSIはトレンド追跡指標であり,突発事件への反応が遅い,ある程度の遅れがある.他の指標と組み合わせて最適化されるべきである.

  1. 固定資産保有時間は柔軟性がない

固定保有時間は,ストップ・ストラップ・ポイントを強制し,市場の変化に応じて調整することはできません.さらに,ストップ・ストラップを動的に調整することを最適化したい.

戦略最適化の方向性

  1. RSIパラメータを最適化し,異なるパラメータが戦略に与える影響をテストする

  2. 他の指標を追加し,さまざまな指標の優位性を利用して,指標の組み合わせを作成します.

  3. ストップ・ストップ・ロスの戦略を最適化して,市場の変化に動的に適応できるようにする

  4. ポジション管理の最適化,市場状況に応じてポジションの動的調整

  5. 戦略に適した品種をテストし,流動性があり,波動性のある品種を選択する

  6. 取引時間を最適化し,異なる取引時間の戦略への影響をテストする

要約する

この戦略は全体的に比較的単純で,RSI指標によって値に基づく取引戦略を実現している.戦略の優点は,単純で,理解しやすいこと,リスク管理が比較的良いことにある.しかしながら,RSIパラメータ最適化の難しさ,ストップ・ロスの柔軟性がないなどの問題もある.将来の最適化の方向は,パラメータ最適化,ストップ・ロスの最適化,ポジション管理などである.さらなる最適化の必要性がある.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Bitduke

//@version=4
// strategy("Simple RSI Buy/Sell at a level", shorttitle="Simple RSI Strategy", overlay=true,calc_on_every_tick=false,pyramiding=1, default_qty_type=strategy.cash,default_qty_value=1000, currency=currency.USD, initial_capital=1000,commission_type=strategy.commission.percent, commission_value=0.075)
overbought = input(40, title="overbought value")
oversold = input(30, title="oversold value")
// Component Test Periods Code Begin
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2021, "Backtest Stop Year")
testStopMonth = input(16, "Backtest Stop Month")
testStopDay = input(2, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Test Periods Code End
//////////////////////////////////////////////////////////////////////

myrsi = rsi(close, 10) > overbought
myrsi2 = rsi(close, 10) < oversold

barcolor(myrsi ? color.black : na)
barcolor(myrsi2 ? color.blue : na)


myEntry = myrsi2 and hour(time) <= 9

strategy.entry("Buy Signal", strategy.long, when = myEntry and testPeriod())

// Close 10 bar periods after the condition that triggered the entry

//if (myEntry[10])
    //strategy.close("Buy Signal")
strategy.close("Buy Signal", when = barssince(myEntry) >= 10 or myrsi and testPeriod())

//strategy.entry("Sell Signal",strategy.short, when = myrsi2)