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

2つのRSI指標に基づく適応範囲取引システム

作者: リン・ハーンチャオチャン開催日:2024年12月13日 11:57:17
タグ:RSISLTPMMATRRR

img

概要

この戦略は,二重RSI (相対強度指数) 指標に基づく適応型取引システムである.この戦略は,市場動向と取引機会を特定し,マネーマネジメントとリスク管理メカニズムを通じて取引パフォーマンスを最適化するために,異なるタイムフレームからのRSI指標を組み合わせている.この戦略の核心強みは,多期RSI間のシネージで,取引の安全性を維持しながら収益性を向上させる.

戦略の原則

この戦略は, 7 期間の RSI インディケーターを主要な取引信号として使用し,日々の RSI をトレンドフィルターとして組み合わせます. 短期間の RSI が 40 を超え,日々の RSI が 55 を超えるとロングポジションが開始されます. ポジション中に価格が初期エントリー価格を下回ると,システムは自動的に平均コストを下げるためにポジションに追加します. RSI が 60 を超えるとポジションが閉鎖されます.リスク管理のために 5% のストップロスを実装します. 戦略には,総資本と事前に設定されたリスク比率に基づいてポジションサイズを自動的に計算するマネーマネジメントモジュールも含まれます.

戦略 の 利点

  1. 多期RSIの組み合わせは信号の信頼性を向上させる
  2. 順応性のあるポジション平均化メカニズムは,保有コストを効果的に削減します
  3. 総合的なマネジメントシステムは,リスク優先順位に基づいてポジションを調整する
  4. 固定ストップ・ロスの保護は,取引ごとにリスクを厳格に制御します.
  5. より現実的な取引条件のために取引コストを考慮

戦略リスク

  1. RSI インディケーターは不安定な市場で誤った信号を生む可能性があります
  2. ポジション平均化メカニズムは,継続的なダウントレンドで重大な損失をもたらす可能性があります.
  3. 固定パーセントストップロスは高波動期間に過度に保守的かもしれない.
  4. 取引コストは,頻繁な取引の際に収益に大きく影響する
  5. 戦略の実行には十分な流動性が必要です

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

  1. 動的ストップ・ロース調整のための波動性指標 (ATRなど) を含む
  2. トレンド強度フィルターを追加して,変動市場における誤った信号を減らす
  3. 市場変動に基づく動的調整でポジション平均化ロジックを最適化
  4. 追加時間枠からの RSI 確認を追加する
  5. 適応可能な位置サイズシステムを開発する

概要

この戦略は,技術分析とリスク管理を組み合わせた完全な取引システムである.マルチペリオドRSI調整を通じて取引信号を生成し,マネーマネジメントとストップロスのメカニズムを通じてリスクを制御する.この戦略はトレンド市場に適しているが,実際の市場状況に基づいてパラメータ最適化が必要である.このシステムの優れた拡張性により,さらなる最適化に余地がある.


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

//@version=5
strategy("Dual RSI with Rebuy Logic + Capital, Commission, and Stop Loss", overlay=true)

// Parameter
rsi_length = input.int(7, title="RSI Length")
daily_rsi_length = input.int(7, title="Daily RSI Length")
capital = input.float(10000, title="Initial Capital", minval=0)  // Kapital
risk_per_trade = input.float(0.01, title="Risk per Trade (%)", minval=0.01, maxval=1.0)  // Risikogröße in Prozent
commission = input.float(0.1, title="Commission (%)", minval=0, maxval=100)  // Kommission in Prozent
stop_loss_pct = input.float(5, title="Stop Loss (%)", minval=0.1, maxval=100)  // Stop-Loss in Prozent

// Ordergröße berechnen
risk_amount = capital * risk_per_trade
order_size = risk_amount / close  // Größe der Order basierend auf Risikogröße und Preis

// Daily RSI
day_rsi = request.security(syminfo.tickerid, "D", ta.rsi(close, daily_rsi_length), lookahead=barmerge.lookahead_on)

// RSI auf aktuellem Timeframe
rsi = ta.rsi(close, rsi_length)

// Kauf- und Verkaufsbedingungen
buy_condition = rsi[1] < 40 and rsi > rsi[1] and day_rsi > 55
sell_condition = rsi[1] > 60 and rsi < rsi[1]

// Variablen, um den Preis des ersten Kaufs zu speichern
var float first_buy_price = na
var bool is_position_open = false

// Kauf-Logik
if buy_condition
    if not is_position_open
        // Initiales Kaufsignal
        strategy.entry("Buy", strategy.long, qty=1)
        first_buy_price := close
        is_position_open := true
    else if close < first_buy_price
        // Rebuy-Signal, nur wenn Preis niedriger als erster Kaufpreis
        strategy.entry("Rebuy", strategy.long, qty=1)

// Verkaufs-Logik
if sell_condition and is_position_open
    strategy.close("Buy")
    strategy.close("Rebuy")
    first_buy_price := na  // Zurücksetzen des Kaufpreises
    is_position_open := false

// Stop-Loss-Bedingung
if is_position_open
    // Stop-Loss-Preis berechnen (5% unter dem Einstiegspreis)
    stop_loss_price = first_buy_price * (1 - stop_loss_pct / 100)
    
    // Stop-Loss für "Buy" und "Rebuy" festlegen
    strategy.exit("Stop Loss Buy", from_entry="Buy", stop=stop_loss_price)
    strategy.exit("Stop Loss Rebuy", from_entry="Rebuy", stop=stop_loss_price)

// Performance-Metriken berechnen (mit Kommission)
gross_profit = strategy.netprofit / capital * 100
commission_cost = commission / 100 * strategy.closedtrades
net_profit = gross_profit - commission_cost

// Debug-Plots
plot(first_buy_price, title="First Buy Price", color=color.blue, linewidth=1)
plotchar(buy_condition, title="Buy Condition", char='B', location=location.abovebar, color=color.green)
plotchar(sell_condition, title="Sell Condition", char='S', location=location.belowbar, color=color.red)

// Debugging für Performance



関連性

もっと