この戦略は,RSIが過剰に買い上げられた場合,VSTOPとRSIインジケーターを組み合わせて,RSIが過剰に売り上げられた場合,LONGとShortを組み合わせ,トレンドの方向性を決定し,トレンドが逆転するときに損失を削減するためにVSTOPを使用します.
RSI インディケーター値を計算し,過剰購入と過剰販売ラインを設定します.RSIが過剰購入ラインを超えるとロングで,RSIが過剰販売ラインを下回るとショートします.
VSTOP を計算します.これは価格変動範囲に基づいてストップ・ロスの線です.計算手順は以下の通りです.
ATR指標を計算し,ATR係数のマルチを設定する
最大価格と最小価格を記録する
アップトレンド状態 is_uptrend に基づいて,現在のストップ損失線を計算します:ストップ = is_uptrend? max - mult * ATR : min + mult * ATR
ストップ・ロスのラインを更新: vstop1 = is_uptrend? max ((vstop_prev,stop) : min ((vstop_prev,stop)
トレンド逆転が起こると,ストップ損失ラインをリセットします.
RSIが過剰に売れた場合,価格が VSTOP を越えると,ショート,RSIが過剰に買われた場合,ロング.
傾向指標と過買い/過売り指標を組み合わせることで,傾向市場における逆転の機会を把握できます.
VSTOP を使ってストップ・ロスを設定するとリスクが効果的に制御されます
柔軟なRSIパラメータ設定は,異なる製品に最適化できます.
VSTOPは手動の介入なしに ストップ損失を系統的に追跡します
ATRパラメータが大きすぎたり小さすぎたりすると,ストップ損失線は意味がない.異なるATRパラメータをテストしたり,ATR平均と組み合わせることもできます.
レンジ・バインド市場では,RSIは頻繁に取引信号を誘発し,取引頻度と滑りコストを増加させる可能性があります. RSIパラメータは調整または無効な信号を減らすために追加のフィルターを追加することができます.
この戦略の主なリスクは逆転が失敗することである.トレーダーは反トレンド取引を避けるためにより大きなタイムフレームのトレンド方向を観察する必要があります.トレンドを決定するために長期移動平均を使用することができます.
無効な信号をフィルタリングするために他の指標を組み合わせることを検討してください.例えば,音量,ドンキアンチャネルなど.
バックテスト結果に基づいてパラメータを最適化して最適なパラメータの組み合わせを見つける.
ATR係数を動的に調整し,異なる市場環境に適応する方法を研究する
高リスク期間の戦略の停止を検討します
この戦略は,トレンド市場における逆転機会を把握するために,トレンド判断とオーバーバイト/オーバーセールレベルを統合する. VSTOPはリスク管理のための体系的なストップ損失管理を提供します. 戦略はパラメータ最適化および他の指標を組み合わせることでさらに強化できます. トレーダーは主要なリスクである失敗した逆転に注意する必要があります.
/*backtest start: 2022-10-02 00:00:00 end: 2023-10-08 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Vstop and RSI", overlay=true) //RSI Section length = input(2, "RSI Period") overSold = input(30, "Oversold Level") overBought = input(70, "Overbought Level") price = close vrsi = rsi (price, length) //VSTOP Section vlength = input(2, "Vstop Length") mult = input(2, "Vstop Mult") atr_ = atr(vlength) max1=0.0 min1=0.0 is_uptrend_prev = false stop=0.0 vstop_prev=0.0 vstop1=0.0 is_uptrend=false is_trend_changed=false max_ = 0.0 min_ = 0.0 vstop=0.0 max1 := max(nz(max_[1]), close) min1 := min(nz(min_[1]), close) is_uptrend_prev := nz(is_uptrend[1], true) stop := is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_ vstop_prev := nz(vstop[1]) vstop1 := is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop) is_uptrend := close - vstop1 >= 0 is_trend_changed := is_uptrend != is_uptrend_prev max_ := is_trend_changed ? close : max1 min_ := is_trend_changed ? close : min1 vstop := is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1 plot(vstop, color = is_uptrend ? green : red, style=cross, linewidth=2) if vrsi > overBought strategy.entry("Buy", strategy.long, comment="Buy") if vrsi < overSold and vstop > price strategy.entry("Sell", strategy.short, comment="Sell")