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

アダプティブ・レンジ・ボラティリティー・トレンド 取引戦略をフォローする

作者: リン・ハーンチャオチャン開催日:2024年11月28日 17:24:30
タグ:WPRRSISMAATRトレンド

img

概要

これは,波動性とウィリアムズ百分比範囲指標を組み合わせる適応型トレンドフォロー戦略である.この戦略は,価格範囲とカスタムカウンタを計算することによってトレンド決定感度を調整し,異なる市場条件でより良い適応性を達成する.コアメカニズムは,価格波動に基づいてウィリアムズ指標パラメータを動的に調整して,市場のトレンド移行点をより正確に把握することを含む.

戦略の原則

この戦略は,価格範囲とその移動平均 (AvgRange) を期間中に計算することによって始まる.平均変動範囲とのリアルタイム価格変化を比較することによって,重要な変動頻度を記録するために2つのカウンター (TrueCountとTrueCount2) を確立する.これらのカウンターは,ウィリアムズ指標計算パラメータを動的に調整するために使用され,戦略が市場変動条件に基づいて敏感性を自動的に調整することを可能にする.調整されたウィリアムズ指標値が事前に設定された値を突破したとき,購入または販売信号が生成される.

戦略 の 利点

  1. 高い適応力 - 戦略は変動適応メカニズムを通じて,異なる市場環境で安定したパフォーマンスを維持する
  2. 総合的なリスク管理 - RISK パラメータは,トレーダーがリスクの優先順位に基づいて戦略の積極性を調整できるようにします.
  3. 明確な信号 - 偽信号を避けるために明確な突破信号メカニズムを使用する
  4. 優れたスケーラビリティ - 戦略の枠組みは,最適化のために他の技術指標の統合を可能にします
  5. 高計算効率 - リアルタイム取引に適したシンプルで効率的な計算方法を使用

戦略リスク

  1. パラメータ感度 - ASClength と RISK パラメータの選択は,戦略のパフォーマンスに大きく影響する
  2. 市場環境依存性 - 変動する市場で過剰な取引信号を生む可能性があります.
  3. 遅延 - 移動平均値の使用は,エントリーと終了の遅延を引き起こす可能性があります.
  4. 偽ブレイク - 高波動期間に偽シグナルが発生する可能性があります. バックテストによるパラメータの最適化と他の確認指標との組み合わせを推奨し,リスクを減らす.

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

  1. 容量指標を組み込む - 容量分析を通じて傾向変化の有効性を確認する
  2. コントロジックを最適化する - 市場の変動を評価するためにより複雑な統計方法を使用することを検討する
  3. ストップ・ロスのメカニズムを追加する - より良いリスク管理のために動的ストップ・ロスの実装を提案する
  4. 市場環境フィルタリング - 不適切な条件での取引を避けるために市場状況評価モジュールを追加する
  5. パラメータ適応 - 戦略の適応性を向上させるパラメータ自動最適化メカニズムを開発する

概要

この革新的な戦略は,変動分析とトレンドフォローを組み合わせ,適応メカニズムを通じて戦略の安定性と信頼性を向上させる.固有のリスクが存在するものの,戦略は適切なパラメータ設定と最適化実装を通じてさまざまな市場条件で安定したパフォーマンスを維持することができる.戦略の枠組みは,さらなる拡大と最適化が可能で,良好な開発の可能性を示している.


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

//@version=5
strategy("ASCTrend", shorttitle="ASCTrend", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

eternalfg = input(false, title="eternal 確定")
eternal = eternalfg ? 1 : 0
ASClength = input.int(title="ASC Length", minval=4, defval=10)
RISK = input.int(title="RISK", minval=0, defval=3)

// Custom sum function
customSum(source, length) =>
    sum = 0.0
    for i = 0 to length - 1
        sum := sum + source[i]
    sum

x1 = 67 + RISK
x2 = 33 - RISK
Range = ta.highest(ASClength) - ta.lowest(ASClength)
AvgRange = ta.sma(Range, ASClength)
CountFg = math.abs(open - close) >= AvgRange * 2.0 ? 1 : 0
TrueCount = customSum(CountFg, ASClength)
CountFg2 = math.abs(close[3] - close) >= AvgRange * 4.6 ? 1 : 0
TrueCount2 = customSum(CountFg2, ASClength - 3)
wpr3RR = ta.wpr(3 + RISK + RISK)
wpr3 = ta.wpr(3)
wpr4 = ta.wpr(4)
WprAbs = 100 + (TrueCount2 > 0 ? wpr4 : TrueCount > 0 ? wpr3 : wpr3RR)
ASC_Trend = 0
ASC_Trend := WprAbs[eternal] < x2[eternal] ? -1 : WprAbs[eternal] > x1[eternal] ? 1 : ASC_Trend[1]

if (ta.crossover(ASC_Trend, 0))
    strategy.entry("Long", strategy.long)

if (ta.crossunder(ASC_Trend, 0))
    strategy.entry("Short", strategy.short)

plotshape(ta.crossover(ASC_Trend, 0), location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small, text="B", textcolor=color.white)
plotshape(ta.crossunder(ASC_Trend, 0), location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, text="S", textcolor=color.white)

alertcondition(ta.crossover(ASC_Trend, 0), title="ASC_Trend UP", message="ASC_Trend UP")
alertcondition(ta.crossunder(ASC_Trend, 0), title="ASC_Trend Down", message="ASC_Trend Down")

関連性

もっと