この戦略は"暗号通貨取引のためのストカスティックRSI戦略"と呼ばれています.これは,仮想通貨の購入・売却信号を特定するために,相対強度指数 (RSI) とストカスティックRSI指標を組み合わせます.
この戦略の背後にある主なアイデアは,まずRSI値を計算し,その後,RSIに基づいてストカスティックRSI指標,すなわちKとD値を構築する.K値がD値を超えると,購入信号が生成される.K値がD値を下回ると,販売信号が生成される.誤った信号をフィルタリングするために,戦略はまた,変化率指数 (RVI) とその移動平均線を確認するために導入する.
RSI の 14 期値を計算する.
RSIに基づいて14期ストカスティックRSI指標を構築し,KとD値を得ます (DはKの3期移動平均値です).
5 期間の RVI とその信号線 (RVI の移動平均値) を計算する.
K が D を越えると,RVI > シグナルラインと最後の周期
生成された信号に基づいて,ロングまたはショートポジションを開く.
ストカスティックRSIとRVIからの二重確認の組み合わせは 誤った信号を効果的にフィルタリングすることができます
RVI指標は,短期間の過買い/過売状態を反映し,極端な時点でのポジション開設を避ける.
ストカスティックRSI指標は,過買い/過売りゾーンを識別します.KDJ指標の黄金/死十字を使って入口点を決定します.
バックテスト結果は,この戦略が一部の仮想通貨ペア (FCT/BTCなど) で良いパフォーマンスを達成したことを示しています.
誤ったストップ・ロスは,同様のストップ・トライリング・ストップ・戦略を早期に停止させる可能性があります.
高い信号周波数は,考慮すべき過剰な取引手数料につながる可能性があります.
KDJとRVIの両方の指標は誤った信号を生成し,不必要な損失を引き起こす可能性があります.
戦略パラメータは,異なる取引対に最適化され,一般的な適用性を評価する必要があります.
利益をロックするために移動ストップ損失を追加します. ATRはストップ損失レベルを設定するために参照することができます.
RVI パラメーターとストカスティック RSI パラメーターを最適化して よりクリーンな信号を表示します
過剰に大きい単一の注文を避けるために取引サイズ制御を追加します.
不利なレベルでのポジション開設を避けるためにフィルタリングメカニズムを追加します.市場が現在不安定な状態にあるかどうかを判断するために波動性指標を導入することができます.
異なる暗号通貨ペアでテストして 最適なペアを見つけます
この戦略は,まずRSI指標に基づいてストカスタスティックRSIを構築し,その後,短期的なオーバーバイト/オーバーセール条件とターニングポイントのオープンポジションを検出するために,確認のためにRVI指標を使用します.デメリットは,ダブル確認が偽信号をフィルタリングできるということです.欠点はパラメータがオーバーフィットするリスクです.全体として,この戦略はいくつかの取引ペアで良い結果を達成しました.さらなる最適化はより一貫した利益を得ることができます.
/*backtest start: 2022-12-08 00:00:00 end: 2023-12-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Stochastic RSI", shorttitle="Stoch RSI", overlay = true) Per = input(5, title="Length", minval=1) 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) rvi = sum(swma(close-open), Per)/sum(swma(high-low),Per) sig = swma(rvi) //plot(rvi, color=green, title="RVI") //plot(sig, color=red, title="Signal") //plot(K, title="K") //plot(D, title="D") Dn = K <= D and K > 70 and rvi <= sig and rvi[1] >= sig[1] Up= K >= D and K < 30 and rvi >= sig and rvi[1] <= sig[1] ARROW = Up - Dn plotarrow(ARROW, title="Down Arrow", colordown=red, transp=0, maxheight=10, minheight=10) plotarrow(ARROW, title="Up Arrow", colorup=lime, transp=0, maxheight=10, minheight=10) long = crossover(Up, Dn) short = crossunder(Up, Dn) last_long = long ? time : nz(last_long[1]) last_short = short ? time : nz(last_short[1]) long_signal = crossover(last_long, last_short) short_signal = crossover(last_short, last_long) //plot(long_signal, "BUY", color=green) //plot(short_signal, "SELL", color=red) strategy.entry("BUY", strategy.long, when=long_signal) strategy.entry("SELL", strategy.short, when=short_signal)