Стратегия торговли импульсом тренда ADX

ADX DMI MA ATR
Дата создания: 2024-11-28 15:44:59 Последнее изменение: 2024-11-28 15:44:59
Копировать: 0 Количество просмотров: 583
1
Подписаться
1617
Подписчики

Стратегия торговли импульсом тренда 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 с ценовыми прорывами. Хотя есть некоторые возможности для оптимизации, фундаментальная структура стратегии является прочной и подходит для использования в качестве основного компонента системы количественной торговли.

Исходный код стратегии
/*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")