RSIとMAの組み合わせ戦略

RSI MA EMA SMA HMA WMA STOCHRSI
作成日: 2024-05-28 17:34:11 最終変更日: 2024-05-28 17:34:11
コピー: 2 クリック数: 1310
1
フォロー
1617
フォロワー

RSIとMAの組み合わせ戦略

概要

この戦略は,RSI指標と移動平均 (((MA) を組み合わせて取引信号を生成する. RSIは,市場が過買か過売かを判断するために用いられ,MAは価格トレンドを判断するために用いられる. RSIが過買でMAより高い価格になると買入信号が生成され,RSIが過買か,MAがデッドフォークを生成すると売り信号が生成される. さらに,戦略は,ランダムなRSI指標 (((StochRSI) を補助判断として導入し,StochRSIがシグナルを生成するときに提示をグラフにマークする.

戦略原則

  1. 市場が過買 ((>70)) か過売 ((<30)) か判断するために,RSI指標値を計算します.
  2. カスタムサイクルMAを計算し,EMA,SMA,HMA,WMAの4つのタイプを構成し,パラメータ設定に基づいてグラフに表示されるかどうかを決定します.
  3. RSIがオーバーバイし,閉盘価格がMAより高いとき,買入シグナルを生じ;RSIがオーバーセールまたはMAがデッドフォークを生じるとき,売り出せシグナルを生じます.
  4. ストックRSI指標を補助判断として導入すると,ストックRSIが超買い ((>70)) または超売り ((<30) になると,グラフにヒントをマークするが,実際の取引信号を生成しない.

戦略的優位性

  1. RSIとMAの2つのクラシックな指標を有機的に組み合わせることで,トレンドの状況や超買い超売のタイミングをよりよく捉えることができます.
  2. MAの種類とパラメータは自由に設定され,柔軟性があり,異なる市場の特徴に応じて調整することができます.
  3. 取引の判断に役立つStochRSIの導入.
  4. コードロジックは明快で読みやすく,理解し易く二次開発できます.

戦略リスク

  1. RSIとMAは遅滞指数であり,トレンドの逆転の初期に誤った信号が多く発生する可能性があります.
  2. パラメータを正しく設定しない場合,信号が早すぎたり遅すぎたりして,全体的な利益に影響を与える可能性があります.
  3. ストップとポジション管理の欠如は,市場が急激に波動するときに大きなリスクを負う可能性があります.

戦略最適化の方向性

  1. 傾向の変化を予測するために,変動率などの先行指標を導入する.
  2. 買入シグナルをフィルタリングし,RSIとMAが同時に一定の条件を満たすように要求してシグナルを生成する.
  3. 戦略にストップ・ロスとポジション管理モジュールを追加し,単一取引リスクと全体リスクを制御する.
  4. 戦略のパラメータを最適化し,最適なパラメータの組み合わせを探します.
  5. 異なる周期や複数の品種を入れることを検討し,各品種や周期間の関連性を充分利用する.

要約する

この戦略は,RSIとMAの2つのクラシック指標を組み合わせることで,トレンドの動きと超買い超売りのタイミングを捉えることができ,同時にStochRSI指標を補助判断として導入し,全体的な考え方はシンプルで明確である.しかし,戦略には,リスク管理措置の欠如,信号の正確性の改善等などの欠陥があります.将来,より多くの指標を導入し,信号規則を最適化し,リスク管理モジュールを追加することで,戦略を完善して,より安定した収益を期待することができます.

ストラテジーソースコード
/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI Strategy with Customizable MA and StochRSI Alert", overlay=true)

// กำหนดค่า RSI สำหรับการเปิดสัญญาณซื้อและขาย
rsiOverbought = input(70, title="RSI Overbought Level")
rsiOversold = input(30, title="RSI Oversold Level")

// เลือกชนิดของเส้นค่าเฉลี่ยเคลื่อนที่
maType = input.string("EMA", title="MA Type", options=["EMA", "SMA", "HMA", "WMA"])

// กำหนดค่าเส้นค่าเฉลี่ยเคลื่อนที่
maShortLength = input(12, title="MA Short Length")
maLongLength = input(26, title="MA Long Length")

// เลือกการแสดงผลของเส้นค่าเฉลี่ยเคลื่อนที่
showShortMA = input(true, title="Show Short Moving Average")
showLongMA = input(true, title="Show Long Moving Average")

// ฟังก์ชันสำหรับเลือกชนิดของเส้นค่าเฉลี่ยเคลื่อนที่
f_ma(src, length, type) =>
    switch type
        "SMA" => ta.sma(src, length)
        "EMA" => ta.ema(src, length)
        "HMA" => ta.hma(src, length)
        "WMA" => ta.wma(src, length)

// คำนวณค่าเส้นค่าเฉลี่ยเคลื่อนที่
maShort = showShortMA ? f_ma(close, maShortLength, maType) : na
maLong = showLongMA ? f_ma(close, maLongLength, maType) : na

// คำนวณค่า RSI
rsiValue = ta.rsi(close, 14)

// สร้างสัญญาณซื้อและขาย
buySignal = (rsiValue > rsiOverbought and ((showShortMA and showLongMA and close > maShort and maShort > maLong) or (showShortMA and not showLongMA and close > maShort) or (showLongMA and not showShortMA and close > maLong)))
sellSignal = (showShortMA and showLongMA and ta.crossover(maLong, maShort)) or (showShortMA and not showLongMA and ta.crossover(maShort, close)) or (showLongMA and not showShortMA and ta.crossover(maLong, close))

// แสดงค่าเส้นค่าเฉลี่ยเคลื่อนที่บนกราฟ
plot(maShort, color=color.red, title="MA Short")
plot(maLong, color=color.green, title="MA Long")

// คำนวณค่า Stochastic RSI
smoothK = 3
smoothD = 3
RSIlen = 14
STOlen = 14
SRsrc = close
OSlevel = 30
OBlevel = 70

rsi1 = ta.rsi(SRsrc, RSIlen)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, STOlen), smoothK)
d = ta.sma(k, smoothD)

stochRSIOverbought = OBlevel
stochRSIOversold = OSlevel

stochRSIBuyAlert = ta.crossover(k, stochRSIOversold)
stochRSISellAlert = ta.crossunder(k, stochRSIOverbought)

// สร้างคำสั่งซื้อและขายเมื่อมีสัญญาณจาก RSI และ MA เท่านั้น
if (buySignal)
    strategy.entry("Buy", strategy.long)
if (sellSignal)
    strategy.close("Buy")

// แสดงสัญญาณเตือนจาก Stochastic RSI บนกราฟ
plotshape(series=stochRSIBuyAlert, location=location.belowbar, color=color.green, style=shape.labelup, title="StochRSI Buy Alert")
plotshape(series=stochRSISellAlert, location=location.abovebar, color=color.red, style=shape.labeldown, title="StochRSI Sell Alert")

// แสดงสัญญาณซื้อและขายจาก RSI และ MA บนกราฟ
plotshape(series=buySignal, location=location.top, color=color.green, style=shape.triangleup, title="RSI>70")
plotshape(series=sellSignal, location=location.top, color=color.red, style=shape.triangledown, title="MA crossoverDown")