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

ADXフィルターによるMA拒絶戦略

作者: リン・ハーンチャオチャン, 日付: 2024-05-17 10:35:58
タグ:ADXマルチWMA

img

概要

この戦略は,複数の移動平均値 (MA) を主要な取引信号として利用し,平均方向指数 (ADX) をフィルターとして組み込む.この戦略の背後にある主なアイデアは,高速MA,遅いMA,平均MAの関係を比較することによって,潜在的な長期および短期機会を特定することです.同時に,ADX指標は,十分なトレンド強度を持つ市場環境をフィルタリングするために使用され,取引信号の信頼性を高めます.

戦略原則

  1. 高速MA,低速MA,平均MAを計算します
  2. 閉じる価格と緩やかなMAを比較して,潜在的な長値と短値を特定する.
  3. 閉じる価格と高速MAを比較して長値と短値を確認する.
  4. ADX指標を手動で計算し,トレンド強度を測定する.
  5. 速度のMAが平均MAを超え,ADXが設定された値を超え,長値が確認されたとき,長エントリー信号を生成する.
  6. 速度のMAが平均MAを下回り,ADXが設定された値を超え,短値が確認されたとき,短エントリー信号を生成する.
  7. 閉じる価格がスローMAを下回るとロングアウトシグナルを生成し,閉じる価格がスローMAを下回るとショートアウトシグナルを生成する.

戦略 の 利点

  1. 複数のMAsを使用することで,市場動向や動向の変化をより包括的に把握できます.
  2. 急速なMA,遅いMAと平均的なMAの関係を比較することで,潜在的な取引機会を特定することができます.
  3. ADX インディケーターをフィルターとして利用することで,不安定な市場で過剰な偽信号を生成するのを避け,取引信号の信頼性を向上させます.
  4. 戦略の論理は明確で 分かりやすく 実行できます

戦略リスク

  1. トレンドが不明確で市場が不安定な状況では 戦略は多くの誤った信号を生み出し 取引や損失が頻繁に起こる可能性があります
  2. この戦略は,MAやADXのような遅れている指標に依存し,早期トレンド形成の機会を逃す可能性があります.
  3. 戦略のパフォーマンスにはパラメータ設定 (例えば,MA長度とADX値) が大きく影響し,異なる市場や手段に基づいて最適化が必要である.

戦略の最適化方向

  1. RSIやMACDなどの他の技術指標を組み込むことを検討し,取引信号の信頼性と多様性を高める.
  2. 市場変化に適応するために,さまざまな市場環境のための異なるパラメータの組み合わせを設定します.
  3. 潜在的な損失を制御するために,ストップ・ロースやポジションサイズなどのリスク管理措置を導入する.
  4. 経済データや政策の変化などの基本的な分析を組み合わせて,より包括的な市場視点を得ます.

概要

ADXフィルターによるMA拒否戦略は,複数のMAとADX指標を使用して潜在的な取引機会を特定し,低品質の取引シグナルをフィルタリングする.戦略の論理は明確で,理解し,実装するのが簡単です.しかし,戦略を実践する際には,市場の環境の変化を考慮し,他の技術指標とリスク管理措置を最適化するために組み合わせることが重要です.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gavinc745

//@version=5
strategy("MA Rejection Strategy with ADX Filter", overlay=true)

// Input parameters
fastMALength = input.int(10, title="Fast MA Length", minval=1)
slowMALength = input.int(50, title="Slow MA Length", minval=1)
averageMALength = input.int(20, title="Average MA Length", minval=1)
adxLength = input.int(14, title="ADX Length", minval=1)
adxThreshold = input.int(20, title="ADX Threshold", minval=1)

// Calculate moving averages
fastMA = ta.wma(close, fastMALength)
slowMA = ta.wma(close, slowMALength)
averageMA = ta.wma(close, averageMALength)

// Calculate ADX manually
dmPlus = high - high[1]
dmMinus = low[1] - low
trueRange = ta.tr

dmPlusSmoothed = ta.wma(dmPlus > 0 and dmPlus > dmMinus ? dmPlus : 0, adxLength)
dmMinusSmoothed = ta.wma(dmMinus > 0 and dmMinus > dmPlus ? dmMinus : 0, adxLength)
trSmoothed = ta.wma(trueRange, adxLength)

diPlus = dmPlusSmoothed / trSmoothed * 100
diMinus = dmMinusSmoothed / trSmoothed * 100
adx = ta.wma(math.abs(diPlus - diMinus) / (diPlus + diMinus) * 100, adxLength)

// Identify potential levels
potentialLongLevel = low < slowMA and close > slowMA
potentialShortLevel = high > slowMA and close < slowMA

// Confirm levels
confirmedLongLevel = potentialLongLevel and close > fastMA
confirmedShortLevel = potentialShortLevel and close < fastMA

// Entry signals
longEntry = confirmedLongLevel and ta.crossover(fastMA, averageMA) and adx > adxThreshold
shortEntry = confirmedShortLevel and ta.crossunder(fastMA, averageMA) and adx > adxThreshold

// Exit signals
longExit = ta.crossunder(close, slowMA)
shortExit = ta.crossover(close, slowMA)

// Plot signals
plotshape(longEntry, title="Long Entry", location=location.belowbar, style=shape.triangleup, size=size.small, color=color.green)
plotshape(shortEntry, title="Short Entry", location=location.abovebar, style=shape.triangledown, size=size.small, color=color.red)

// Plot moving averages and ADX
plot(fastMA, title="Fast MA", color=color.blue)
plot(slowMA, title="Slow MA", color=color.red)
plot(averageMA, title="Average MA", color=color.orange)
// plot(adx, title="ADX", color=color.purple)
// hline(adxThreshold, title="ADX Threshold", color=color.gray, linestyle=hline.style_dashed)

// Execute trades
if longEntry
    strategy.entry("Long", strategy.long)
else if longExit
    strategy.close("Long")

if shortEntry
    strategy.entry("Short", strategy.short)
else if shortExit
    strategy.close("Short")

関連性

もっと