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

ADX トレンドブレイクモメント・トレード戦略

作者: リン・ハーンチャオチャン開催日:2024年11月28日 15:44:59
タグ:ADXDMIマルチATR

img

概要

ADXは,平均指数 (ADX) と価格ブレイクをベースとした定量的な取引戦略である.この戦略は,主に市場傾向の強さを評価するためにADX指標値を監視し,市場の勢いを把握するために価格ブレイクシグナルを組み合わせます.この戦略は,特定の取引セッション内で動作し,ストップ損失と日々の取引制限を通じてリスク管理を実装します.

戦略の原則

基本論理には次の主要な要素が含まれます.

  1. ADXモニタリング: ADX指標を使用してトレンド強さを評価し,ADX値は17.5未満で,新たなトレンド形成の可能性を示します.
  2. 価格ブレイク検出:過去34期間の最高閉値を追跡し,現在の価格がレジスタンスを超えると取引信号を誘発します.
  3. セッション管理:低流動性の期間を避けるため,指定された取引時間 (0730〜1430) にのみ営業する.
  4. リスク管理メカニズム
    • 単一の取引損失を制限するための固定ドルストップ損失
    • セッションごとに最大3取引の制限
    • セッション終了時の自動ポジション閉じる

戦略 の 利点

  1. トレンドキャプチャ能力: ADX インディケーターと価格ブレイクアウトの組み合わせを通じて初期のトレンド段階を効果的に識別します.
  2. 総合的なリスクマネジメント: 固定ストップ・ロスト,トレード・リミット,自動終了メカニズムを含む複数のリスク管理措置.
  3. 高自動化: 明確な戦略論理により,手動的な介入なしに完全に自動化された取引が可能になります.
  4. 適性: 異なる市場条件に合わせてパラメータを調整できます.

戦略リスク

  1. 偽のブレイクリスク: 連続したストップを様々な市場で経験する可能性があります.
  2. パラメータ依存性:戦略の有効性は,ADXの値と回顧期間の設定に大きく依存する.
  3. 時間制限: 特定のセッションでの取引のみは機会を逃す可能性があります.
  4. ストップ・ロスの配置: 固定ドルストップは,異なる変動環境で柔軟性が欠けることがあります.

オプティマイゼーションの方向性

  1. ダイナミックストップ・ロース: 異なる市場変動条件において,ATRベースのダイナミックストップを実施することを推奨する.
  2. 市場環境フィルター:高変動環境で取引を調整または一時停止するために波動性フィルターを追加します.
  3. 入力最適化: ブレイクアウト信号の信頼性を向上させるために音量確認を追加することを検討します.
  4. ダイナミックパラメータ調整: ADX 限界値と回想期間の適応性調整メカニズムを実装する.

概要

ADXは,効率的なリスクマネジメントフレームワークの下で,ADX指標と価格ブレイクを組み合わせて市場動向を把握する.最適化のための余地がある一方で,戦略の基礎は堅牢で,定量的な取引システムの基本的な構成要素として適しています.トレーダーは,ライブ取引の前に徹底的なバックテストとパラメータ最適化を行い,市場状況に基づいて特定の改善を行うことをお勧めします.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
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/
// © HuntGatherTrade
// ========================
// NQ 30 minute, ES 30 minute

//@version=5
strategy("ADX Breakout", overlay=false, initial_capital=25000, default_qty_value=1)

// ===============================
// Input parameters
// ===============================
stopLoss = input(1000.0, title="Stop Loss ($)", group="Exits")
session = input("0730-1430:1234567", group="Trade Session")
highestLB = input(34, title="Highest lookback window", group="Indicator values")

// ===============================
// Trade Session Handling
// ===============================
t = time(timeframe.period, session)

// Reset numTrades at the start of each session
var int numTrades = 0
is_new_session = ta.change(time("D")) != 0
if is_new_session
    numTrades := 0

// ===============================
// Entry Conditions
// ===============================
[plusDI, minusDI, adxValue] = ta.dmi(50, 14)
entryCondition = (close >= ta.highest(close, highestLB)[1]) and (adxValue < 17.5) and (strategy.position_size == 0) and (numTrades < 3) and not na(t)

// ===============================
// 7. Execute Entry
// ===============================
var float stopPricePlot = na

if entryCondition
    entryPrice = close + syminfo.mintick
    strategy.entry("Long Entry", strategy.long, stop=entryPrice)
    //stopPrice = strategy.position_avg_price - (stopLoss / syminfo.pointvalue)
    //strategy.exit("Stop Loss", "Long Entry", stop=stopPrice)
    numTrades += 1

if (strategy.position_size > 0) and (strategy.position_size[1] == 0)
    stopPoints = stopLoss / syminfo.pointvalue
    stopPrice = strategy.position_avg_price - stopPoints
    stopPrice := math.round(stopPrice / syminfo.mintick) * syminfo.mintick
    strategy.exit("Stop Loss", from_entry="Long Entry", stop=stopPrice)


if ta.change(strategy.opentrades) == 1
    float entryPrice = strategy.opentrades.entry_price(0)
    stopPricePlot := entryPrice - (stopLoss / syminfo.pointvalue)

if ta.change(strategy.closedtrades) == 1
    stopPricePlot   := na

plot(stopPricePlot, "Stop-loss level", color.red, 1, plot.style_linebr)

// ===============================
// Exit at End of Session
// ===============================
if na(t) and strategy.position_size != 0
    strategy.close_all(comment="End of Day Exit")

関連性

もっと