Zスコアとスーパートレンドに基づく動的取引戦略:ロングショート切り替えシステム

RSI ATR SMA
作成日: 2024-11-27 16:01:20 最終変更日: 2024-11-27 16:01:20
コピー: 0 クリック数: 528
1
フォロー
1617
フォロワー

Zスコアとスーパートレンドに基づく動的取引戦略:ロングショート切り替えシステム

概要

この戦略は,Zスコア (Z-Score) の統計的方法,相対的に強い指標 (RSI) と超トレンド (Supertrend) の指標を組み合わせた定量取引システムである.この戦略は,価格の統計的偏差を監視し,動量指標とトレンド確認を組み合わせて,市場で高い確率の機会を探して取引する.この戦略は,市場の超買超売の機会を捕捉するだけでなく,偽の信号をフィルターしてトレンドを確認し,多空双方向取引を実現する.

戦略原則

戦略の核心的な論理は,3つの主要な技術指標の協同作用に基づいています:第一に,現在の価格が歴史的な平均値から偏っている程度を測定するために,75サイクルの移動平均と標準差を使用した価格のZスコアを計算します.Zスコアが1.1以上または-1.1未満であるときは,価格が有意な統計偏差を示します.次に,RSI指標を動量として導入し,ポジションを開く際にRSIが方向に合致する必要があることを確認します (多頭時RSI>60,空頭時RSI<40).最後に,超トレンド指標をトレンドフィルターとして使用します.

戦略的優位性

  1. 多重信号確認: 統計,動力,傾向の3次元を組み合わせた指標によって,取引信号の信頼性が大きく向上する.
  2. 適応性:Zスコアの計算方法により,戦略は,絶対価格レベルの影響を受けずに,異なる市場環境に適応することができます.
  3. リスク管理の改善:超トレンド指標は自動トレンド追跡とリスク管理の仕組みを提供します.
  4. 双方向取引: 戦略は,空白の両方向に機会を捉え,資金の利用効率を向上させる.
  5. 信号の明晰さ: 戦略は,明確な数学モデルと客観的な指標を用いて,主観的な判断を回避する.

戦略リスク

  1. 遅延リスク:複数の周期の移動平均を使用しているため,戦略は,急速に変化する市場において信号遅延が発生する可能性があります.
  2. 偽の突破の危険性:横盤市場では,頻繁に偽の突破信号が発生する可能性があります.
  3. パラメータの感受性:戦略の効果は,パラメータの選択に大きく依存し,異なる市場環境では異なるパラメータ設定が必要となる.
  4. 市場条件依存: 傾向がはっきりしない市場では,戦略のパフォーマンスは理想的ではないかもしれません.

戦略最適化の方向性

  1. ダイナミックパラメータ調整: 市場波動に応じてZスコア値とスーパートレンドのパラメータを自動的に調整する自適性パラメータメカニズムを導入できます.
  2. 市場環境フィルタを追加: 市場環境認識モジュールを追加し,異なる市場条件で異なるパラメータの組み合わせを使用します.
  3. ストップ・メカニズムの改善:ATRベースのストップやストップ・トラッキングなどのダイナミックなストップ・戦略の導入
  4. シグナルフィルタリングの最適化:取引量確認または他の技術指標を追加して取引信号をさらにフィルタリングできます.
  5. タイムフィルターの導入:取引時間ウィンドウの制限を拡大し,波動が大きい時期を避ける.

要約する

これは,統計的方法と技術的分析を統合した定量化取引戦略で,複数のシグナル確認によって取引の信頼性を向上させる.戦略の核心的な優位性は,その客観的な数学モデルと完善したリスク制御機構にあるが,同時に,パラメータ最適化と市場適応性の問題にも注意する必要がある.提案された最適化方向によって,戦略には,特に市場環境とリスク制御に動的に適応する点で,さらに向上する余地がある.この戦略は,波動性が大きく,明らかな傾向のある市場での使用に適しており,安定した収益量を追求するトレーダーにとって考慮すべき選択肢である.

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

//@version=5
strategy("Z-Score Long and Short Strategy with Supertrend", overlay=true)

// Inputs for Z-Score
len = input.int(75, "Z-Score Lookback Length")
z_long_threshold = 1.1  // Threshold for Z-Score to open long
z_short_threshold = -1.1  // Threshold for Z-Score to open short

// Z-Score Calculation
z = (close - ta.sma(close, len)) / ta.stdev(close, len)

// Calculate Driver RSI
driver_rsi_length = input.int(14, "Driver RSI Length")  // Input for RSI Length
driver_rsi = ta.rsi(close, driver_rsi_length)  // Calculate the RSI

// Supertrend Parameters
atrPeriod = input.int(11, "ATR Length", minval=1)
factor = input.float(2.0, "Factor", minval=0.01, step=0.01)

// Supertrend Calculation
[supertrend, direction] = ta.supertrend(factor, atrPeriod)

// Conditions for Long and Short based on Z-Score
z_exceeds_long = z >= z_long_threshold and driver_rsi > 60
z_exceeds_short = z <= z_short_threshold and driver_rsi < 40

// Entry Conditions
if (z_exceeds_long and direction < 0) // Enter Long if Z-Score exceeds threshold and Supertrend is down
    strategy.entry("Long", strategy.long)
    label.new(bar_index, low, text="Open Long", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)
    alert("Open Long", alert.freq_once_per_bar)  // Alert for Long entry

if (z_exceeds_short and direction > 0) // Enter Short if Z-Score exceeds threshold and Supertrend is up
    strategy.entry("Short", strategy.short)
    label.new(bar_index, high, text="Open Short", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)
    alert("Open Short", alert.freq_once_per_bar)  // Alert for Short entry

// Plot Supertrend
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color=color.green, style=plot.style_linebr)
downTrend = plot(direction > 0 ? supertrend : na, "Down Trend", color=color.red, style=plot.style_linebr)
fill(upTrend, downTrend, color=color.new(color.green, 90), fillgaps=false)

// Alert conditions for Supertrend changes (optional)
alertcondition(direction[1] > direction, title='Downtrend to Uptrend', message='The Supertrend value switched from Downtrend to Uptrend')
alertcondition(direction[1] < direction, title='Uptrend to Downtrend', message='The Supertrend value switched from Uptrend to Downtrend')