RSI移動平均クロスオーバートレンド戦略

作者: リン・ハーンチャオチャン, 日付: 2023年11月28日 17:03:56
タグ:

img

概要

RSI移動平均クロスオーバートレンド戦略は,RSI指標の移動平均クロスオーバーシグナルを使用してトレンドを決定し,取引シグナルを発行する戦略である.この戦略には価格EMAも組み込まれ,価格はEMAを超える場合にのみ購入シグナルを発行する.

戦略の論理

この戦略のコアインジケーターはRSIである.RSIのEMAとSMAの両方を計算する.RSI EMAがSMAよりも高く,価格がEMAよりも高くなったときにのみ購入信号が発行される.RSI EMAがSMAを下回ってトレンドに従うときに販売信号が発行される.

RSIインジケーターは,市場における過剰購入および過剰販売状態を効果的に反映することができる. RSIの70を超えると過買い,30を下回ると過売とみなされる.この戦略は,RSIインジケーターのトレンドとターニングポイントを発見するためにEMAとSMAを使用する.EMAは最近の価格変化により速く反応し,SMAは古いデータに依存する.この2つの線は一緒に機能する.

RSI EMAが上昇し始めると,市場の安定が示される.SMAはその後方向性を確認する.SMAも上昇し始めると,RSIが上昇傾向にあることを確認する.戦略は,価格がEMAを超えていることを考慮して,トレンドに従うために購入信号を発行する.

利点分析

この戦略は,中期から長期間にわたる方向性的な機会を効果的に捉える傾向を追求する戦略である.単一指標と比較して,この戦略は,誤った信号を減少させ,安定性を高めるために,RSI EMAとSMAのクロスオーバーを使用する.

この戦略には,価格 EMA が組み込まれ,価格上昇傾向での購入のみを保証し,レンジ・バインド市場のリスクを回避し,収益性を向上させる.

リスク分析

戦略は主にRSI指標に依存する.誤ったRSI信号は誤った戦略信号につながる.また,RSIは,中長期のトレンドを把握するいくつかの遅れを伴う過剰購入/過剰販売レベルを特定するのにより適している.

RSI EMAとSMAがより範囲に限定されている場合も,時間遅れがある可能性があります.この期間には,シグナルが発信される前にいくつかの損失リスクがあります.

オプティマイゼーションの方向性

  1. 効率を高めるため,より適切なパラメータを選択することで,RSIを最適化することができます.

  2. ストップロスの論理は,リスクを効果的に管理するために,損失が一定のレベルに達した後,出口ポジションに追加することができます.

  3. パラメータは,異なる時間枠でテストされ,最適化され,より多くの製品と期間で戦略が安定して実行できます.

概要

RSI移動平均クロスオーバートレンド戦略は,トレンド方向とクロスオーバーを検証するためにRSIを使用する単純なトレンドフォロー戦略である.上向きのトレンドで購入するための価格EMAを組み込む.この戦略は中長期保有に高い安定性を持っているが,遅れのリスクは管理する必要がある.さらなる最適化は戦略のパフォーマンスを改善することができる.


/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Created by Sv3nla 5-Jan-2021
strategy(title="Sv3nla RSI EMA SMA Strat", shorttitle="Sv3nla RSI EMA SMA Strat", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === BACKTEST RANGE ===
FromMonth = input(defval = 5, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2015, title = "From Year", minval = 2015)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2022) 
// syminfo.mintick = 0.01$ for BTCUSDT

testPeriod() => true

//INPUTS
rsilen = input(defval = 16, minval=1, title="RSILength")
RSIemaLen = input(defval = 12, minval=1, title="RSI EMA Length")
RSIsmaLen2 = input(defval = 29, minval=1, title="RSI SMA Length2")
length = input(defval = 8, minval=1, title="EMA price Length")

// RSI
RSIsrc = close
RSIup = rma(max(change(RSIsrc), 0), rsilen)
RSIdown = rma(-min(change(RSIsrc), 0), rsilen)
rsi = RSIdown == 0 ? 100 : RSIup == 0 ? 0 : 100 - 100 / (1 + RSIup / RSIdown)
emavalue=ema(rsi,RSIemaLen)
smavalue=sma(rsi,RSIsmaLen2)

//EMA
ema=ema(close,length)

//PLOT
plot(ema(rsi, RSIemaLen), color=color.yellow, linewidth=2, title="EMA", transp=0)
plot(sma(rsi, RSIsmaLen2), color=color.aqua, linewidth=2, title="SMA", transp=0)

//ORDERS
if (testPeriod())
    strategy.entry("long",strategy.long, comment="RSIEMA", when=(emavalue > smavalue and close>ema))
    strategy.close(id="long", when=(emavalue < smavalue))

// Colour background when in a trade and 50 horizontal line
backgroundColour = (strategy.position_size > 0) ? color.green : na    
bgcolor(color=backgroundColour, transp=85)
hline(50, color=color.yellow)

もっと