この戦略は,相対強度指数 (RSI) とストックRSIの技術指標を組み合わせて,比較的安定して信頼性の高い二方向取引戦略を実装する.RSI指標が過買いまたは過売シグナルを示し,ストックRSIが黄金十字と死亡十字の取引信号を生成すると,戦略はロングまたはショートポジションに入ります.
この戦略は主にRSIおよびストックRSI指標に基づいています.RSIは,市場が過買いまたは過売れているかどうかを判断するために使用されます.ストックRSIは,特定の取引信号を生成するために使用されます.
まず,RSIは市場が過買いか過売れているかを判断します.RSIが過買い線を超えると,市場は過買いとみなされます.RSIが過売り線を下回ると,市場は過売れていると考えられます.
2つ目に,ストックRSIは取引信号を生成します. 速い線が下のスローラインを越えると,購入信号が生成されます. 速い線が上からのスローラインを下に越えると,販売信号が生成されます.
最後に,戦略は,RSIが過買い/過売り状態を示し,ストックRSIが同時に信号を生成するときにのみ市場に参入する.ロングシグナルはRSI過買いとストックRSIゴールデンクロスであり,ショートシグナルはRSI過買いとストックRSIデッドクロスである.
この戦略は,RSIとストックRSIの両方の利点を組み合わせ,市場全体の動向と詳細な変化の両方を考慮し,不要な偽信号を避けるため,より信頼できる取引信号を生成します.
RSIは,市場が過買いまたは過売れているかどうかを効果的に決定し,上下を追いかけるのを避ける.ストックRSIは,ターニングポイントを間に合うようにRSIの動力変化を調べます.この組み合わせは,取引信号の信頼性と適切なエントリータイミングの両方を保証します.
さらに,時間と価格フィルターが追加され,誤った取引の確率をさらに削減し,戦略全体の信頼性を高めます.
この戦略は主に市場変動に敏感なRSIとストックRSIに依存する.これは頻繁に誤った信号と指標間の差異をもたらし,高い取引頻度と不安定な利益につながる可能性があります.
このようなリスクを軽減するために,RSIとストックRSIのパラメータは,市場の特徴により適するように調整され,より多くのフィルターを追加することができます.また,単一の指標からの信号を取る前に,他の指標との検証を検討する必要があります.
この戦略は,次の側面においてさらに最適化することができる.
移動ストップロスを追加して 利益を固定し 損失を削減します
RSIとストックRSIのパラメータを,異なる期間や製品に合わせて最適化する.
より大きな時間枠や 低取引頻度などの フィルターを追加します
誤りを避けるために,信号の検証のための他の指標を組み込む.
バックテストの最適化により 最適なパラメータの組み合わせが得られます
この戦略は,RSIとストックRSIの両方の強みを活用し,単一の指標を使用するよりもより包括的で信頼性の高い信号生成を提供し,多くの不必要な偽信号を回避する.さらなる最適化により,安定した収益性の高い定量的な取引戦略になることができます.
/*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= 2 strategy("RSI+STOCHRSI v2", overlay=true) lengthrsi = input(10) overSold = input( 20 ) overBought = input( 70 ) price = ohlc4 vrsi = rsi(price, lengthrsi) smoothK = input(3, minval=1) smoothD = input(3, minval=1) lengthRSI = input(14, minval=1) lengthStoch = input(14, minval=1) src = input(close, title="RSI Source") rsi1 = rsi(src, lengthRSI) k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = sma(k, smoothD) srsilow=input(20) srsiup=input(80) yearfrom = input(2018) yearuntil =input(2039) monthfrom =input(6) monthuntil =input(12) dayfrom=input(1) dayuntil=input(31) if ( ( crossover(d,k)) and ( (vrsi<overSold) or crossover(vrsi,overSold) ) and year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY") else strategy.cancel(id="BUY") if ( ( crossunder(d,k) ) and ( (vrsi >overBought) or crossunder(vrsi,overBought) ) and year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND", comment="SELL") else strategy.cancel(id="SELL")