
この策略は,線形回帰RSI指標設計に基づいています. この策略は,線形回帰RSIとEMAの交差を計算して,購入と販売のシグナルを生成します. この策略は,同時に2つの購入ロジックオプションを提供し,必要に応じて選択することができます.
策略は,最初に200サイクル長さの線形回帰を計算し,次に線形回帰の結果に基づいて21サイクル長さのRSIを計算する.その後,50サイクル長さのEMAを計算する. RSIがEMAを突破すると買入シグナルが生じ,RSIがEMAを突破すると売出シグナルが生じ,利益が実現される.
この戦略は,次の2つの購入論理を提示しています.
市場状況に応じて購入ロジックを選択できます.
この戦略は,線形回帰のRSIとEMAの利点を組み合わせ,価格の部分的な騒音を効果的に排除し,より信頼性の高い取引信号を生成します.
線形回帰RSIはトレンドをよりよく表し,EMAはターニングポイントの発見に役立ちます.この2つの組み合わせは,トレンドの中で反転の機会を探して,平均リバーション戦略を形成することができます.
この戦略は,2つの買入論理の選択肢を提供しており,市場段階によりより柔軟に調整することができる.例えば,トレンドが明らかであるときに最初の論理を選択し,震動時に2番目の論理を選択することができる.
この戦略は主にRSIとEMAの関係に依存しており,両者の関係が変化した場合,取引シグナルに誤りが生じます.これは主要なリスクポイントです.
さらに,RSIとEMAは指標として,それ自体には一定の遅れがあり,購入と販売の遅延を一定程度に引き起こし,転換点を完璧に捕捉することができません. これはまた,一定程度の実際のリスクも伴います.
リスクを軽減するために,RSIとEMAの長さのパラメータを適切に調整し,両者の間の配合を最適化することができます.この外為単位は,単一の損失を過大にしないように,適度に制御する必要があります.
この戦略は以下の方向から最適化できます.
この戦略は,RSIとEMAの線形逆転に基づいて,RSIとEMAの交差を介して,整合範囲内の逆転の機会を探すために,Mean Reversion戦略を設計しています.この戦略は,同時に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)