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

ダイナミック・ニューラル・RSI トレンドフォロー・トレーディング・戦略

作者: リン・ハーンチャオチャン, 日付: 2025-01-17 14:19:08
タグ:SMARSI

 Dynamic Neural RSI Trend-Following Trading Strategy

概要

この戦略は,移動平均値,RSI指標,およびトレーリングストップ損失に基づいた定量的な取引システムである.技術分析からのトレンドフォローおよびモメントインディケーターを組み合わせ,厳格なエントリーおよび出口条件を通じてリスク制御取引を達成する.コア論理は,上向きのトレンドで過剰販売機会を探し,トレーリングストップを使用して利益を保護することである.

戦略の原則

この戦略は,トレンド判断のためのベースラインとして200日間のシンプル・ムービング・アベア (SMA) を使用し,トレード・シグナルを生成するために相対強度指数 (RSI) と組み合わせています.具体的には: 1. 200 日間の SMA を使って主要トレンドを判断し,価格が平均以上であるときだけロングポジションを考慮する. 2. RSI が 設定された 限界値 (デフォルト 40) 以下の値を下回るときに 過売り信号を識別する. 3. 両条件が満たされ,最後の出口 (デフォルト10日) 以降の待機期間が経過した場合にロングエントリを起動する 4. トレイリング・ストップ・ロスト (デフォルト 5%) を通してポジション保有時の利益を保護する 5. 価格がトレイルストップまたは200日SMAを下回るとポジションを退場する

戦略 の 利点

  1. トレーディングの精度を向上させるために,トレンドとモメントのダブルフィルタリングを組み合わせます.
  2. 利潤を効果的に確保するために後退停止メカニズムを使用します
  3. 頻繁に取引しないように取引間隔を設定する
  4. 異なる市場環境に適応するための強力なパラメータ調整可能性
  5. 明確な取引論理,理解し実行しやすい
  6. 高計算効率の簡単な計算

戦略リスク

  1. 移動平均遅延は,入出信号の遅延を引き起こす可能性があります.
  2. RSIインジケーターは,変動市場において誤った信号を生む可能性があります.
  3. 固定パーセンテージの遅延停止は,すべての市場環境に適合しない可能性があります.
  4. パラメータの最適化によりオーバーフィッティングが発生する
  5. 高波動性のある市場では,大幅な引き下げを受ける可能性があります.

戦略の最適化方向

  1. 変動に適応した遅延停止パーセントを導入する
  2. 補助確認として音量指標を追加
  3. 単純な移動平均を指数的な移動平均に置き換えて,よりよい感度を得る.
  4. 取引のタイミングを最適化するために市場情勢指標を組み込む
  5. 動的パラメータ最適化メカニズムを開発
  6. 複数タイムフレーム戦略確認メカニズムを追加する

概要

この戦略は,完全な構造と明確な論理を持つ定量的な取引戦略である.複数の技術指標を組み合わせることでリスクを制御しながら安定した収益を追求する.最適化余地があるにもかかわらず,基本的な枠組みは良い実用性と拡張性を持っています.この戦略は中長期投資家に適しており,異なる市場環境にうまく適応します.


/*backtest
start: 2025-01-09 00:00:00
end: 2025-01-16 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy("200 SMA Crossover Strategy", overlay=false)

// Define inputs
smaLength = input.int(200, title="SMA Length")
rsiLength = input.int(14, title="RSI Length")
rsiThreshold = input.float(40, title="RSI Threshold")
trailStopPercent = input.float(5.0, title="Trailing Stop Loss (%)")
waitingPeriod = input.int(10, title="Waiting Period (Days)")

// Calculate 200 SMA
sma200 = ta.sma(close, smaLength)

// Calculate RSI
rsi = ta.rsi(close, rsiLength)

// Plot the 200 SMA and RSI
plot(sma200, color=color.blue, linewidth=2, title="200 SMA")
plot(rsi, color=color.purple, title="RSI", display=display.none)

// Define buy and sell conditions
var isLong = false
var float lastExitTime = na
var float trailStopPrice = na

// Explicitly declare timeSinceExit as float
float timeSinceExit = na(lastExitTime) ? na : (time - lastExitTime) / (24 * 60 * 60 * 1000)
canEnter = na(lastExitTime) or timeSinceExit > waitingPeriod

buyCondition = close > sma200 and rsi < rsiThreshold and canEnter

if (buyCondition and not isLong)
    strategy.entry("Buy", strategy.long)
    trailStopPrice := na
    isLong := true

// Update trailing stop loss if long
if (isLong)
    trailStopPrice := na(trailStopPrice) ? close * (1 - trailStopPercent / 100) : math.max(trailStopPrice, close * (1 - trailStopPercent / 100))

// Check for trailing stop loss or sell condition
if (isLong and (close < trailStopPrice or close < sma200))
    strategy.close("Buy")
    lastExitTime := time
    isLong := false

// Plot buy and sell signals
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=(isLong and close < trailStopPrice) or close < sma200, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")


関連性

もっと