この戦略は,線形回帰RSI指標に基づいて設計されています. 線形回帰RSIとEMAのクロスオーバーを計算することによって,購入・売却信号を生成します. また,必要に応じて選択できる購入論理の2つのオプションも提供しています.
この戦略は,まず200期間の線形回帰を計算し,その後,線形回帰結果に基づいて21期間のRSIを計算する.その後,50期間のEMAが計算される.RSIがEMAを超えると,購入信号が生成される.RSIがEMAを下回ると,ポジションを閉じるために販売信号が誘発される.
この戦略は,2種類の購入論理を提供しています.
適切な購入ロジックは市場状況に基づいて選択できます.
この戦略は,線形回帰RSIとEMAの両方の強みを組み合わせ,価格ノイズの一部を効果的にフィルタリングし,より信頼性の高い取引信号を生成します.
線形回帰RSIはトレンドをよりよく把握し,EMAはターニングポイントを特定するのに役立ちます.両者の組み合わせはトレンド内の平均逆転機会を見つけることができます.
この戦略は,異なる市場段階に適応するための柔軟性のために,オプションの購入論理を2つ提供している.例えば,最初の論理は強いトレンドで使用できるが,第2の論理は市場範囲に適している.
この戦略の主なリスクは,RSIとEMAの関係が変化し,不正な取引シグナルが生じる可能性があります.
さらに,指標としてのRSIとEMAの遅延性も,転換点を完璧に捉えることができず,エントリーとアウトアウトに一定の遅れを起こす可能性があります.これは,ある程度の実用的なリスクをもたらします.
リスクを軽減するために,RSIとEMAの長さのようなパラメータは,両者の間のより良い調整のために最適化されることがあります.また,単一の取引での損失を制限するために適切なポジションサイズ化が必要です.
戦略は以下の側面から改善できます.
この戦略は,線形回帰RSIとEMAに基づいて平均逆転戦略を設計し,RSI-EMAの交差を見て範囲内の逆転機会を特定する.また,異なる市場に適応するための柔軟性のために2つのオプションの購入論理を提供します.全体的に,複数の指標を組み合わせることで,戦略は効果的に逆転の可能性を発見することができます.パラメータチューニングと追加のフィルターにより,より良いパフォーマンスの可能性があります.
/*backtest start: 2023-01-17 00:00:00 end: 2024-01-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Linear RSI") startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0) end = timestamp(input(9999, "End Year"), input(1, "Month"), input(1, "Day"), 0, 0) _testPeriod() => true //inputs length = input(defval=200, minval=1, title="LR length") length2 = input(defval=21, minval=1, title="RSI length") ema_fast = input(defval=50, minval=1, title="EMA") lag = 0 overBought = input(50) overSold = input(50) //rsi src = close Lr = linreg(src, length, lag) rsi = rsi(Lr, length2) ema = ema(rsi, ema_fast) plot(rsi, color = rsi > overBought ? color.green : rsi < overSold ? color.red : color.silver) plot(overBought, color=color.purple) plot(overSold, color=color.purple) plot(ema, color=color.blue) first_type = input(true, title="Use first logic?") second_type = input(false, title="Use second logic?") long_condition = (first_type ? crossover(rsi, ema) and _testPeriod() : false) or (second_type ? rsi > ema and rsi > overBought and _testPeriod() : false) strategy.entry('BUY', strategy.long, when=long_condition) short_condition = crossunder(rsi, ema) strategy.close('BUY', when=short_condition)