2つの移動平均 ADX タイミング戦略

作者: リン・ハーンチャオチャン, 日時: 2023-12-06 15:48:29
タグ:

img

概要

ダブル・ムービング・アベア ADX・タイムリング戦略は,トレンドの開始時にトレンド信号を生成するために,2/20のムービング・アベアとADXR指標を組み合わせることでトレンドを特定する.まず,価格トレンド方向を決定するために2/20の指数的なムービング・アベアを使用し,その後,ADXR指標と組み合わせてトレンド信号をさらに確認し,より信頼性の高いトレード信号を生成する.

戦略の論理

二重移動平均 ADX タイミング戦略の基本論理は,次の主要な構成要素に基づいています.

  1. 2/20 指数関数移動平均 (EMA)

    • 異なるパラメータを持つ 2 つの EMA を使用します. 2 日と 20 日.
    • 2日間の EMA を越えた値の上昇は上昇信号とみなされます.
    • 20日間のEMAを下回る値が下落シグナルとみなされます.
  2. ADXR インディケーター

    • ADXRはADX指標の変数である.
    • ADXの簡単な移動平均値を計算して変動を平らにする.
    • ADXR が値を下回ると 傾向が弱くなる.
    • ADXR が値を超えると 傾向が強くなる.
  3. 取引信号

    • 2日間のEMAGOLDEN CROSS AND ADXRが限界値を超えると上昇シグナルが生成される.
    • 20日間 EMA デッドクロスと ADXR が値を下回るときに下落信号が生成される.
    • ADXRと組み合わせると 偽のブレイクがフィルタリングされ 実際のトレンド信号が強化されます

この戦略の主な革新は ADXR インディケーターを使用して初期段階の傾向を特定し,それを伝統的な移動平均信号と組み合わせて品質と安定性を向上させることである.

利点

二重移動平均 ADX タイミング戦略の主な利点:

  1. 二重MAsとADXRを組み合わせると,誤った信号をフィルタリングして信号がより正確で信頼性があります.
  2. ADXR を使って初期の傾向を特定し,傾向の初期段階を検出する.
  3. 柔軟なADXRパラメータ調整により 変化する市場状況に対応できます
  4. シンプルで明快な論理で 簡単に理解し パラメータを調整するのに便利です
  5. 様々な市場環境で適正な履歴性能で適用できます

リスク

また,この戦略にはいくつかの主要なリスクがあります.

  1. ADXR パラメータの設定が正しくない場合,取引が失敗する可能性があります.

    • ADXR パラメータ範囲を拡大するか,製品ごとに調整する.
  2. 特殊な市場条件では,より多くの誤った信号が発生する可能性があります.

    • 信号をさらにフィルタリングするために他の指標と組み合わせることを検討します.
  3. 固定EMAパラメータは市場の変化に適応できない.

    • 適応 EMA パラメータのテスト最適化バージョン
  4. 取引範囲を特定できない場合,過度に無意味な取引が生じる可能性があります.

    • 市場差を検出するために,追加の論理や指標を追加します.

改善の方向性

この戦略は,次の側面からさらに最適化され,強化することができます.

  1. EMAパラメータの最適化により,市場状況に自動的に適応できる.

  2. ADXR パラメータ範囲を拡大し,より効果的な取引信号を捉える.

  3. 品質を改善するために,組み合わせ信号の追加傾向判断指標を追加します.

  4. ストップ・ロスの戦略を追加し,取引リスクを制御するために利益基準を適用します.

  5. 口座の状態に基づいて動的ポジションサイズ化のためのマネー管理を最適化します.

結論

ダブル・ムービング・アベア ADXタイムリング戦略は,従来のダブル・ムービング・アベアとADXR指標を革新的に組み合わせ,信号品質を改善し安定性を高める.優れた歴史的パフォーマンスを持つトレンドの初期段階を効果的に特定することができる.この戦略は,より複雑な市場で堅牢かつ収益性のあるものにするために最適化できる余地が豊富である.


/*backtest
start: 2023-11-05 00:00:00
end: 2023-12-05 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 04/04/2022
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
// The Average Directional Movement Index Rating (ADXR) measures the strength 
// of the Average Directional Movement Index (ADX). It's calculated by taking 
// the average of the current ADX and the ADX from one time period before 
// (time periods can vary, but the most typical period used is 14 days).
// Like the ADX, the ADXR ranges from values of 0 to 100 and reflects strengthening 
// and weakening trends. However, because it represents an average of ADX, values 
// don't fluctuate as dramatically and some analysts believe the indicator helps 
// better display trends in volatile markets.
//
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos

fADX(Len) =>
    up = ta.change(high)
    down = -ta.change(low)
    trur = ta.rma(ta.tr, Len)
    plus = fixnan(100 * ta.rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * ta.rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

ADXR(LengthADX,LengthADXR,Signal1,Signal2) =>
    pos = 0.0
    xADX = fADX(LengthADX)
    xADXR = (xADX + xADX[LengthADXR]) / 2
    pos := xADXR < Signal1 ? 1 : xADXR > Signal2 ? -1 : nz(pos[1], 0) 
    pos

strategy(title='Combo 2/20 EMA & ADXR', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ ADXR  ═════●'
LengthADX = input(title="Length ADX", defval=14)
LengthADXR = input(title="Length ADXR", defval=14)
Signal1 = input.float(13, step=0.01)
Signal2 = input.float(45, step=0.01)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosADXR = ADXR(LengthADX,LengthADXR,Signal1,Signal2)
iff_1 = posEMA20 == -1 and prePosADXR == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosADXR == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
if possig == 1
    strategy.entry('Long', strategy.long)
if possig == -1
    strategy.entry('Short', strategy.short)
if possig == 0
    strategy.close_all()
barcolor(possig == -1 ? #b50404 : possig == 1 ? #079605 : #0536b3)

もっと