資源の読み込みに... 荷物...

RSI トレンドモメンタム トレーディング戦略とダブルMAとボリューム確認

作者: リン・ハーンチャオチャン開催日:2024年11月28日17時02分32秒
タグ:RSISMA

img

概要

この戦略は,RSIオーバーセールシグナル,長期移動平均値,およびボリューム確認を組み合わせたトレンドフォローシステムである.これは,ボリューム拡大によって検証される確立された上昇傾向内のオーバーセール条件下でロングポジションをキャプチャすることを目的としている.この戦略は,10 期間のRSI,250 と 500 期間のダブル SMA,および 20 期間のボリューム移動平均値をコア指標として利用している.

戦略の原則

基本的な論理は 3つの条件に 基づいています

  1. RSI 過売り信号 (RSI<=30): 市場のリバウンド機会を把握する
  2. 双 MA の上昇傾向 (SMA250>SMA500): 長期上昇傾向を確認する
  3. 値確認 (現在の値>20期間の値MA*2.5): 価格変動を検証する

ロングポジションは3つの条件が同時に満たされると開始される.出口信号はデッドクロス (より短いMAがより長いMAを下回る).さらに,リスク管理のために5%ストップロスは実装される.

戦略 の 利点

  1. 多重確認は誤った信号を減らす: RSI,MA,ボリュームの統合は強力な信号フィルタリングを提供します.
  2. トレンドフォローする特徴: 長期MAsは反トレンド取引を防ぐ
  3. 全面的なリスク管理: 固定ストップ・ロスは取引ごとにリスクを効果的に管理する
  4. 高い適応性:パラメータは異なる市場条件に調整できます
  5. 厳格な取引選択: 多様な条件により,最適なエントリータイミングが確保される

戦略リスク

  1. 遅延リスク:長期間MAsは,傾向の特定に重大な遅れをもたらす
  2. 過剰フィルタリングリスク: 厳格な複数の条件は,有効な取引機会を逃す可能性があります
  3. 横向市場では,誤った信号が頻繁に発生する可能性があります.
  4. ストップ・ロスの設定リスク: 固定パーセントストップはすべての市場条件に適合しない可能性があります.
  5. パラメータ最適化リスク:過剰な最適化により,実況取引のパフォーマンスが低下する可能性があります.

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

  1. ダイナミックストップ・ロース:ATRまたは波動性に基づくダイナミックストップの実施を検討する
  2. トレンド強さの定量化: ADX または類似の指標を組み込み,より良いトレンド評価
  3. ポジションサイズ最適化: 信号強さと市場の変動に基づいてポジションサイズを調整する
  4. 脱出メカニズムの強化: 柔軟な脱出のための利益目標と遅延停止を追加
  5. 時間フィルター:非効率な期間を避けるために取引時間フィルターを実装する

概要

この戦略は,厳格な論理で,複数の技術指標を通じて収益とリスクを効果的にバランスする,よく設計されたトレンドフォロー戦略である.その核心の強みは包括的な信号確認とリスク管理システムにあるが,過濾と遅延の課題に直面している.提案された最適化方向性を通じて,戦略は実用的なアプリケーションでパフォーマンスを向上させる可能性を示している.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © wielkieef

//@version=5
strategy(title=' Rsi Long-Term Strategy [15min]', overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03)

// Rsi
rsi_lenght = input.int(10, title='RSI lenght', minval=0)
rsi_up = ta.rma(math.max(ta.change(close), 0), rsi_lenght)
rsi_down = ta.rma(-math.min(ta.change(close), 0), rsi_lenght)
rsi_value = rsi_down == 0 ? 100 : rsi_up == 0 ? 0 : 100 - 100 / (1 + rsi_up / rsi_down)
rsi_overs = rsi_value <= 30
rsi_overb = rsi_value >= 70

// Volume
vol_sma_length = input.int(20, title='Volume lenght  ', minval=1)
Volume_condt = volume > ta.sma(volume, vol_sma_length) * 2.5

//SMA1
lengthSMA1 = input(250, title="Lenght SMA 1")
SMA1 = ta.sma(close, lengthSMA1)
//plot(SMA1, color=color.rgb(245, 108, 3), linewidth=1, title="SMA250")

//SMA2
lengthSMA2 = input(500, title="Lenght SMA 2")
SMA2 = ta.sma(close, lengthSMA2)
//plot(SMA2, color=#9803f5, linewidth=1, title="SMA500")


//Entry Logic
Long_cond = (rsi_overs and SMA1 > SMA2 and Volume_condt )  

if Long_cond
    strategy.entry('Long', strategy.long)

//Close Logic
Long_close = ta.crossunder(SMA1,SMA2)

if Long_close
    strategy.close("Long")

//Bar colors
Bar_color = Volume_condt ? #fc9802 : SMA1 > SMA2 ? color.rgb(84, 252, 0) : SMA1 < SMA2 ? color.maroon : color.gray
barcolor(color=Bar_color)

// Rsi value Plotshapes
plotshape(rsi_value < 30 and SMA1 > SMA2 and Volume_condt, title='Buy', color=color.new(color.green, 0), style=shape.circle, location=location.belowbar, size=size.tiny, textcolor=color.new(color.black, 0))
plotshape(rsi_value > 70 and SMA1 < SMA2 and Volume_condt, title='Sell', color=color.new(color.red, 0), style=shape.circle, location=location.abovebar, size=size.tiny, textcolor=color.new(color.black, 0))
plotshape(ta.crossunder(SMA1,SMA2) , title='DEATH CROSS', color=#000000, style=shape.xcross, location=location.abovebar, size=size.small, textcolor=color.new(color.black, 0))

//Stop-Loss// this code is from author RafaelZioni, modified by wielkieef
pera(pcnt) =>
    strategy.position_size != 0 ? math.round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss = input.float(title=' stop loss', defval=5.0, minval=0.5)
los = pera(stoploss)
strategy.exit('SL', loss=los)




// by wielkieef

関連性

もっと