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

RSI ダイナミックストップ・ロスのインテリジェント・トレーディング戦略

作者: リン・ハーンチャオチャン,日付: 2024年11月12日11時39分06秒
タグ:RSISMAATR

img

概要

この戦略は,RSI指標に基づくダイナミックストップ・ロスの取引システムで,SMAとATR指標を組み合わせて取引決定を最適化する.リスク管理のためにATRダイナミックストップ・ロスを使用しながら,収益を最大化するためにピラミッド型ポジション閉じる多レベルテイク・プロフィートアプローチを使用する.この戦略は高度な適応性を持ち,市場の変動に基づいて取引パラメータを自動的に調整する.

戦略の原則

この戦略は,主にRSI超売り条件 (RSI<30) をエントリーシグナルとして使用し,上昇傾向を確保するために価格が200日間の移動平均値以上である必要がある.ATR動的ストップロースと組み合わせて3つの収益目標 (5%,10%,15%) を実装する.具体的には:

  1. 入場条件:RSIは30以下,価格はSMA200以上
  2. ポジション管理: 取引ごとに75%の資本
  3. ストップ・ロスト: 1.5x ATRに基づくダイナミックストップ
  4. 利益: 5%,10%,15%,それぞれ33%,66%,100%で3つのレベル

戦略 の 利点

  1. 動的リスク管理:市場変動に適したATR
  2. 段階的な利益採取: 感情的干渉を軽減し,利益の確率を向上させる
  3. トレンド確認: 偽信号をフィルタリングするために移動平均を使用する
  4. 資金管理: 異なる口座サイズに対する割合に基づくポジションサイズ化
  5. 欧州委員会による最適化: 実用的な実施のために取引コストを考慮

戦略リスク

  1. 移動平均遅延はエントリを遅らせる可能性があります.
  2. RSIの過剰販売は逆転を保証しない
  3. ポジションの大きさが大きい場合,大幅な引き下げにつながる可能性があります.
  4. 頻繁に部分的な退出が取引コストを増加させる これらのリスクはパラメータ調整や追加のフィルターによって管理できます

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

  1. 音量確認信号を追加する
  2. 傾向強度指標を組み込む
  3. 利得率を最適化する
  4. タイムフレームフィルターを追加する
  5. 波動性適応型ポジションサイズを検討する

概要

この戦略は,技術指標とダイナミックなリスク管理を組み合わせて包括的な取引システムを作成する.その強みは適応性と制御されたリスクにあるが,市場の状況に基づくパラメータ最適化は依然として必要である.この戦略は中長期投資家に適しており,体系的な取引のための堅牢な基盤として機能する.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 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("Simple RSI stock Strategy [1D] ", overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=75, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03)

// Rsi
oversoldLevel = input(30, title="Oversold Level")
overboughtLevel = input(70, title="Overbought Level")
rsi = ta.rsi(close, 5)
rsi_overbought = rsi > overboughtLevel  
rsi_oversold = rsi < oversoldLevel

// Sma 200
lenghtSMA = input(200, title = "SMA lenght")
sma200 = ta.sma(close, lenghtSMA)

// ATR stop-loss
atrLength = input.int(20, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atrValue = ta.atr(atrLength)
var float long_stop_level = na
var float short_stop_level = na
var float tp1_level = na
var float tp2_level = na
var float tp3_level = na

// Strategy entry
long = (rsi_oversold ) and close > sma200 

// Take Profit levels
tp_1 = input.float(5.0, "TP 1", minval=0.1, step=0.1)
tp_2 = input.float(10.0, "TP 2", minval=0.2, step=0.1)
tp_3 = input.float(15.0, "TP 3", minval=0.3, step=0.1)

if long
    strategy.entry('Long', strategy.long)
    long_stop_level := close - atrMultiplier * atrValue
    tp1_level := strategy.position_avg_price * (1 + tp_1 / 100)
    tp2_level := strategy.position_avg_price * (1 + tp_2 / 100)
    tp3_level := strategy.position_avg_price * (1 + tp_3 / 100)

// basic SL - this code is from author RafaelZioni, modified by wielkieef
sl = input.float(25.0, 'Basic Stop Loss %', step=0.1)
per(procent) =>
    strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)

// ATR SL
if (strategy.position_size > 0 and (close <= long_stop_level))
    strategy.close("Long")
    tp1_level := na
    tp2_level := na
    tp3_level := na
plot(long_stop_level, color=color.orange, linewidth=2, title="Long Stop Loss")

// TP levels
if (strategy.position_size > 0)
    if (not na(tp1_level) and close >= tp1_level)
        tp1_level := na
    if (not na(tp2_level) and close >= tp2_level)
        tp2_level := na
    if (not na(tp3_level) and close >= tp3_level)
        tp3_level := na

plot(strategy.position_size > 0 and not na(tp1_level) ? tp1_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 1")
plot(strategy.position_size > 0 and not na(tp2_level) ? tp2_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 2")
plot(strategy.position_size > 0 and not na(tp3_level) ? tp3_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 3")

// Strategy exit points for Take Profits
strategy.exit('TP 1', from_entry="Long", qty_percent=33, profit=per(tp_1), loss=per(sl))
strategy.exit('TP 2', from_entry="Long", qty_percent=66, profit=per(tp_2), loss=per(sl))
strategy.exit('TP 3', from_entry="Long", qty_percent=100, profit=per(tp_3), loss=per(sl))

// by wielkieef

関連性

もっと