ADX,MA,EMA ロング・オンリー・トレンド・トラッキング・戦略

作者: リン・ハーンチャオチャン開催日: 2024-01-29 11:30:15
タグ:

img

概要

この戦略は,主にADX指標を使用してトレンドを判断し,MAとEMA移動平均を異なるパラメータ設定と組み合わせて,ロングのみのトレンド追跡戦略を構築する.ADXが上昇すると,それは長い方向を示します.価格が上向きMAとEMAを突破すると,ロングポジションを開きます.ADXが落ちたり,価格がMAまたはEMAを下回ったりすると,ポジションを閉じる.

戦略原則

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

この戦略では,MAとEMAという2つの移動平均値も使用し,異なるパラメータ設定を補助判断として使用する.それらは価格のランダム性を効果的にフィルタリングし,価格の主なトレンド方向を示します.価格が上昇してMAとEMAを突破すると,それは長い信号です.価格が落ちて突破すると,それは閉じる信号です.

ADXと移動平均値の特徴を組み合わせて,この戦略はトレンド方向を判断するための取引信号を構築します.ADXが上昇し,価格が上向きMAとEMAを突破するとロングで,ADXが落ちたり,価格がMA/EMAを突破したとき,ポジションを閉じます.それはロングのみトレンド追跡戦略を実装します.

利点分析

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

  1. ADX を使用してトレンド強さを判断し,無効なトレードを削減し,トレンドを追跡します.
  2. 異なるパラメータ設定の 2 つの移動平均を組み合わせることで,動向を効果的に特定することができます.
  3. ロングポジションのみは,頻繁な逆転操作と滑り損を回避する.
  4. 厳格な入国条件は リスクを効果的に制御できます
  5. 長期に限ったトレンド追跡戦略を導入する.

リスク分析

リスクもあります:

  1. ADXインジケーターが遅れている 最良のエントリーポイントを 見逃している可能性があります
  2. ロングポジションだけが 市場の落ち込みから利益を得られない.
  3. 傾向が変わると ある程度の損失のリスクがあります
  4. 間違ったパラメータ設定も 戦略のパフォーマンスに影響します

解決策:

  1. ADXパラメータを調整して 遅延を合理的に減らす
  2. 単一の損失を制御するストップ損失を設定する.
  3. テストして最適化して 最高のパラメータを選びます

最適化

戦略は以下の側面から最適化できます.

  1. ストップ・ロスの戦略を追加して リスクをコントロールする
  2. ポジション管理を追加し,市場の状況に基づいてポジションを動的に調整します.
  3. 最良の組み合わせを見つけるために パラメータをテストして最適化します
  4. マシン学習アルゴリズムを追加して パラメータを動的に最適化します
  5. 利益率の影響を減らすための マルティンゲル戦略を構築します

結論

ADXは,トレンド強度と2つの移動平均値を補助フィルターとして判断するために使用する,長期間のトレンドトラッキング戦略である.無効な取引の発生を効果的に制御し,トレンドを追跡する効果を達成する.これは比較的安定した長期間の戦略である.いくつかの最適化により,戦略の安定性と収益性はさらに向上することができる.


/*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")


もっと