
この戦略は,比較的強い指標であるRSIをベースに,単純な値取引戦略を実現する. RSIが30を下回ったときに買って,40を下回ったときに売る. ポジション保持期間は10日間固定される. この戦略は,中期短期取引に適している.
この戦略は主にRSI指標の超売区と超買区の取引信号の生成に基づいています. RSI指標は周期内の低下の速さを反映しています. RSIが30を下回ると,売り区を超え,株価が反発する可能性があり,RSIが70を超えると,株価が下がる可能性があります.
具体的には,10日RSIを計算し,30と40の値を設定する. 10日RSIが30を下回ると買入シグナルが生み出され,10日RSIが40を超えると売出シグナルが生み出されます. 買入シグナルを受け取った後,ポジションを開き,購入します.
この戦略はシンプルで分かりやすいもので,RSI指数で超売り超買い領域を判断し,指数に基づく値取引戦略を実現します.
この戦略は,広く使用されているRSI指標を使用しています. RSIパラメータは,異なる周期と市場環境に適用するために調整して最適化できます.
RSIは価格変化のトレンドを反映する. RSI指標に基づいて価格動きを判断する戦略は,簡単なトレンド追跡を実現する.
戦略は固定保有期限を採用し,単一損失を効果的に制御する.同時に,RSIパラメータは,誤った取引の確率を減らすために調整することができる.
RSIのパラメータは柔軟に設定できますが,過度な最適化と反測偏差は,実盤リスクをもたらします.
RSIはトレンド追跡指標であり,突発事件への反応が遅い,ある程度の遅れがある.他の指標と組み合わせて最適化されるべきである.
固定保有時間は,ストップ・ストラップ・ポイントを強制し,市場の変化に応じて調整することはできません.さらに,ストップ・ストラップを動的に調整することを最適化したい.
RSIパラメータを最適化し,異なるパラメータが戦略に与える影響をテストする
他の指標を追加し,さまざまな指標の優位性を利用して,指標の組み合わせを作成します.
ストップ・ストップ・ロスの戦略を最適化して,市場の変化に動的に適応できるようにする
ポジション管理の最適化,市場状況に応じてポジションの動的調整
戦略に適した品種をテストし,流動性があり,波動性のある品種を選択する
取引時間を最適化し,異なる取引時間の戦略への影響をテストする
この戦略は全体的に比較的単純で,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)