ADX、RSIモメンタム指標戦略


作成日: 2023-12-11 16:06:30 最終変更日: 2023-12-11 16:06:30
コピー: 0 クリック数: 886
1
フォロー
1621
フォロワー

ADX、RSIモメンタム指標戦略

概要

この戦略は,動力の指標ADX,RSIおよびブリン帯を使用し,市場動向とオーバーバイオーバーセルの判断によって,低価格,高価格,高価格,利益の退出の自動取引戦略を実現します.

戦略原則

  1. ADX指数は,トレンドを判断する。ADXが32より大きいときは,市場がトレンド状態にあると考えられる。
  2. RSI指標は,超買超売を判断する. RSI指標が30レベルを突破すると,市場が超売とみなされ,RSI指標が70レベルを突破すると,市場が超買とみなされる.
  3. ブリン帯は,収束と突破を判断する. 収束価格がブリン帯を突破して軌道に乗ったとき,市場が収束終了で上昇したと考えられる. 収束価格がブリン帯を下回ったとき,市場が収束終了で下落したと考えられる.

上記の指標に基づいて,市場状況を判断し,取引戦略を以下のように策定します.

購入条件:

  1. ADX>32,トレンド状況
  2. RSIが30度上昇し,超売り状態となった.
  3. ブリン帯の下位で閉店し,下落を終了した

販売条件:

  1. ADX>32,トレンド状況
  2. RSIが70を下回り,超買い状態
  3. ブリン・ベルトより高値で閉店し,終盤に値調整

優位分析

この戦略は,複数の指標を総合的に使用して市場の状況を判断し,単一の指標で判断誤りの確率を避ける.同時に,傾向,超買い超売り状態の判断によって,市場の転換点を効果的にロックし,低買い高売りを実現することができる.

トレンド指標のみを使用するよりも,この戦略は短期的な機会をより早く捉えることができます. 震動指標のみを使用するよりも,この戦略はトレンドの方向をよりよく把握できます. したがって,この戦略は,トレンドを追跡する利点を維持しながら,逆勢操作の柔軟性を持ち,潜在的に高効率の量化戦略です.

リスク分析

この戦略には以下のリスクがあります.

  1. 指標が誤ったシグナルを発するリスク.市場が重大事件に突入したときに,指標の判断は失効する可能性がある.
  2. ストップ・ロッド・ポジション設定が過度に過激なリスクである.ストップ・ロッド・距離が小さすぎると,短期市場の波動によってストップ・ロッド・アウトされる可能性がある.
  3. パラメータデータ適合リスク.指標パラメータが歴史的データのみに基づいて適合される場合,パラメータの安定性は劣り,市場の変化に適応できない可能性があります.

対応するリスク管理策:

  1. 人工干渉は異常市場を操作し,誤った信号による損失を回避するために,手動で戦略を停止します.
  2. 合理的な止損距離を設定し,均線などの指標を組み合わせて止損価格を判断し,套用されないようにする.
  3. パラメータチューニングモジュールを追加し,Walk Forward Analysisの方法を使用してパラメータを動的に最適化し,パラメータの安定性を保証します.

最適化の方向

この戦略の最適化には以下のポイントが重要です.

  1. 最適化指標パラメータ。 知的最適化アルゴリズムを導入して,異なる品種パラメータに対して独立した最適化を行う。

  2. 特徴工学を増やし,価格技術指標を導入し,ベクトルマシンなどのモデルを訓練するためのサポートを構築し,信号の正確性を向上させる.

  3. 突破戦略を組み合わせる.異なる品種の状況特性に応じて,通路,支柱抵抗などの判断ルールを適用し,突破点を把握し,戦略の安定性を強化する.

  4. ストップ・ストップ・メカニズムの最適化 ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ・ストップ

要約する

この戦略は,市場状況を判断するために,ADX,RSI,ブリン帯などの複数の技術指標を使用する中短期量的取引戦略として,市場構造が重大に変化するときに買い売りを行う.戦略のロジックは明確に説明可能であり,単一の技術指標判断誤りの確率を大幅に減らすことができます.同時に,戦略は,誤った信号を発する警告指標,過度に激進的なストップと損失パラメータ偏差などのリスクを設定する,リスク管理とモデル最適化からスタートして,戦略の安定性と効率性を向上させる必要があります.

ストラテジーソースコード
/*backtest
start: 2023-11-10 00:00:00
end: 2023-12-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("DAX Shooter 5M Strategy", overlay=true)

//Creo ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
th = input(title="threshold", type=input.integer, defval=20)
dirmov(len) =>
    up = change(high)
    down = -change(low)
    plusDM = na(up) ? na : up > down and up > 0 ? up : 0
    minusDM = na(down) ? na : down > up and down > 0 ? down : 0
    truerange = rma(tr, len)

    plus = fixnan(100 * rma(plusDM, len) / truerange)
    minus = fixnan(100 * rma(minusDM, len) / truerange)

    [plus, minus]

adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
    adx


[plus, minus] = dirmov(dilen)
sig = adx(dilen, adxlen)

//Creo RSI

src = close
len = input(7, minval=1, title="Periodo RSI")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
bandainf = input(30, title="Livello Ipervenduto")
bandasup = input(70, title="Livello Ipercomprato")


//Creo Bande di Bollinger

source = close
length = input(50, minval=1, title="Periodo BB")
mult = input(2.0, minval=0.001, maxval=50, title="Dev BB")

basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

plot(basis, color=color.white)
p1 = plot(upper, color=color.aqua)
p2 = plot(lower, color=color.aqua)
fill(p1, p2)

//Stabilisco regole di ingresso

if crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower
    strategy.entry("COMPRA", strategy.long, limit=upper, oca_name="DaxShooter", comment="COMPRA")
else
    //strategy.exit("exit", "COMPRA", loss = 90) 
    strategy.cancel(id="COMPRA")

if crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper
    strategy.entry("VENDI", strategy.short, limit=lower, oca_name="DaxShooter",comment="VENDI")
else
    //strategy.exit("exit", "VENDI", loss = 90)
    strategy.cancel(id="VENDI")

//Imposto gli alert
buy= crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower
sell= crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper
alertcondition(buy, title='Segnale Acquisto', message='Compra DAX')
alertcondition(sell, title='Segnale Vendita', message='Vendi DAX')

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)