ADX、MA、EMAに基づくロングオンリートレンドフォロー戦略


作成日: 2024-01-29 11:30:15 最終変更日: 2024-01-29 11:30:15
コピー: 1 クリック数: 682
1
フォロー
1617
フォロワー

ADX、MA、EMAに基づくロングオンリートレンドフォロー戦略

概要

この戦略は,主にADX指標を使用してトレンドを判断し,MAとEMAの2つの異なるパラメータ設定を組み合わせた移動平均を構成する,多行のみのトレンド追跡戦略である.ADXが上昇するときに多方向を提示し,価格が上行MAとEMAを突破するときに多行を打つ.ADXが下行するか,価格がMAまたはEMAのいずれかを破ると平行する.

戦略原則

この戦略は,市場傾向と強さを判断するためにADXを主に使用する.ADXは,価格の変化の程度と方向を計算することによって,傾向の存在と強さを判断する.ADXが上昇すると,現在上昇傾向にあることを示し,ADXが低下すると,傾向が弱まっていることを示している.

この戦略は,二つの異なるパラメータの設定の移動平均MAとEMAを同時に使用して,補助判断を行う.それらは,価格のランダム性を効果的に除し,価格の主要なトレンドの方向を示す.価格が上昇してMAとEMAを突破すると,多シグナルを行う.価格が下がって破綻すると,平仓シグナルを行う.

ADXと移動平均線の特徴を組み合わせて,この戦略はトレンド方向を判断する取引シグナルを構成する.ADXが上昇し,価格が上行MAとEMAを突破すると多開ポジション,ADXが下落し,または価格がMA/EMAを突破すると平仓,多開トレンドフォロー戦略を実現する.

戦略的優位分析

この戦略の利点は以下の通りです.

  1. ADXはトレンドの強さを判断し,無効取引の発生を軽減し,トレンドを追跡します.
  2. 2つの異なるパラメータ設定を組み合わせた移動平均をフィルタリングすることで,トレンドを効果的に識別できます.
  3. 29797 繰り返し反転するので滑り損なわれない
  4. リスクの管理に役立つ 厳格な入国条件
  5. 長期トレンドの追跡戦略を導入する.

戦略的リスク分析

この戦略にはいくつかのリスクがあります.

  1. ADXの指標は遅滞しており,入場の最適なタイミングを逃している可能性がある.
  2. 市場が低迷した時に利益を得られない.
  3. 市場が変化したときに,損失のリスクは一定です.
  4. パラメータの設定を間違えた場合も, 策略のパフォーマンスに影響する.

対応方法:

  1. ADXのパラメータを適正に調整し,遅滞を軽減する.
  2. ストップ・ロスの戦略を設定し,単一損失をコントロールできます.
  3. パラメータをテスト最適化し,最適なパラメータを選択する.

戦略最適化の方向性

この戦略は,以下の点で最適化できます.

  1. リスクの管理を向上させるため,損失を抑える戦略を増やす.
  2. ポジション管理を増やし,市場状況に応じてポジションを動的に調整する.
  3. パラメータをテストして最適化します.
  4. 機械学習のアルゴリズムと動的最適化パラメータの追加
  5. マーチングルは,利益率の影響を減らすために多戦略的に構築されています.

要約する

この戦略全体は,ADXを利用してトレンドの強さを判断し,二つの移動平均でフィルター信号を構築する補助的な単行多行トレンド追跡戦略である.それは,無効取引の発生を効果的に制御し,トラッキングトレンドの効果を実現し,比較的安定した単行多行戦略である.一定の最適化調整によって,戦略の安定性と収益性をさらに強化することができる.

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

//@version=4
strategy("ADX, MA, and EMA Long Strategy - ADX Trending Up", shorttitle="ADX_MA_EMA_Long_UpTrend", overlay=true)
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
maPeriod = input(50, title="MA Period")
emaPeriod = input(50, title="EMA Period")
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
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
maValue = sma(close, maPeriod)
emaValue = ema(close, emaPeriod)
longCondition = sig > sig[1] and close > maValue and close > emaValue
if (longCondition)
    strategy.entry("Long", strategy.long)
exitCondition = sig < sig[1] or  close < maValue or close < emaValue
if (exitCondition)
    strategy.close("Long")
plot(maValue, color=color.blue, title="MA")
plot(emaValue, color=color.orange, title="EMA")
plot(sig, color=color.red, title="ADX")