В процессе загрузки ресурсов... загрузка...

Стратегия отклонения MA с фильтром ADX

Автор:Чао Чжан, Дата: 2024-05-17 10:35:58
Тэги:ADXМ.А.WMA

img

Обзор

Эта стратегия использует несколько скользящих средних (MA) в качестве основных торговых сигналов и включает в себя средний направленный индекс (ADX) в качестве фильтра. Основная идея стратегии заключается в том, чтобы определить потенциальные длинные и короткие возможности путем сравнения отношений между быстрым MA, медленным MA и средним MA. Одновременно индикатор ADX используется для фильтрации рыночных условий с достаточной силой тренда, повышая надежность торговых сигналов.

Принцип стратегии

  1. Вычислите быстрый, медленный и средний показатели.
  2. Определить потенциальные длинные и короткие уровни путем сравнения цены закрытия с медленной MA.
  3. Подтвердить длинные и короткие уровни путем сравнения цены закрытия с быстрой MA.
  4. Вручную рассчитывать индикатор ADX для измерения силы тренда.
  5. Строгое вхождение сигналов генерируется, когда быстрый MA превышает средний MA, ADX превышает установленный пороговый показатель и подтверждается длинный уровень.
  6. В случае, если быстрый MA переходит ниже среднего MA, ADX превышает установленный порог и подтверждается короткий уровень, генерируется короткий сигнал входа.
  7. Создать длинный выходный сигнал, когда цена закрытия пересекает медленный MA; создать короткий выходный сигнал, когда цена закрытия пересекает медленный MA.

Преимущества стратегии

  1. Использование нескольких МР позволяет более всесторонне отслеживать рыночные тенденции и изменения импульса.
  2. Сравнивая взаимосвязь между быстрой, медленной и средней МР, можно выявить потенциальные торговые возможности.
  3. Использование индикатора ADX в качестве фильтра помогает избежать создания чрезмерных ложных сигналов на нестабильных рынках, повышая надежность торговых сигналов.
  4. Логика стратегии ясна и легко понятна и реализована.

Стратегические риски

  1. В ситуациях, когда тенденция неясна или рынок нестабилен, стратегия может генерировать многочисленные ложные сигналы, что приводит к частым сделкам и потерям.
  2. Стратегия опирается на отстающие показатели, такие как MA и ADX, которые могут лишить возможности формирования раннего тренда.
  3. На эффективность стратегии существенно влияют параметры (например, длины MA и порог ADX), что требует оптимизации на основе различных рынков и инструментов.

Направления оптимизации стратегии

  1. Подумайте о включении других технических индикаторов, таких как RSI и MACD, для повышения надежности и разнообразия торговых сигналов.
  2. Установка различных комбинаций параметров для различных рыночных условий для адаптации к изменениям рынка.
  3. Внедрить меры управления рисками, такие как стоп-лосс и размещение позиций, для контроля потенциальных потерь.
  4. Объединить фундаментальный анализ, такой как экономические данные и изменения политики, чтобы получить более полную перспективу рынка.

Резюме

Стратегия отклонения MA с фильтром ADX использует несколько MAs и индикатор ADX для выявления потенциальных торговых возможностей и фильтрации низкокачественных торговых сигналов. Логика стратегии ясна и легко понятна и реализована. Однако при применении стратегии на практике важно учитывать изменения рыночной среды и комбинировать другие технические индикаторы и меры управления рисками для оптимизации.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
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/
// © gavinc745

//@version=5
strategy("MA Rejection Strategy with ADX Filter", overlay=true)

// Input parameters
fastMALength = input.int(10, title="Fast MA Length", minval=1)
slowMALength = input.int(50, title="Slow MA Length", minval=1)
averageMALength = input.int(20, title="Average MA Length", minval=1)
adxLength = input.int(14, title="ADX Length", minval=1)
adxThreshold = input.int(20, title="ADX Threshold", minval=1)

// Calculate moving averages
fastMA = ta.wma(close, fastMALength)
slowMA = ta.wma(close, slowMALength)
averageMA = ta.wma(close, averageMALength)

// Calculate ADX manually
dmPlus = high - high[1]
dmMinus = low[1] - low
trueRange = ta.tr

dmPlusSmoothed = ta.wma(dmPlus > 0 and dmPlus > dmMinus ? dmPlus : 0, adxLength)
dmMinusSmoothed = ta.wma(dmMinus > 0 and dmMinus > dmPlus ? dmMinus : 0, adxLength)
trSmoothed = ta.wma(trueRange, adxLength)

diPlus = dmPlusSmoothed / trSmoothed * 100
diMinus = dmMinusSmoothed / trSmoothed * 100
adx = ta.wma(math.abs(diPlus - diMinus) / (diPlus + diMinus) * 100, adxLength)

// Identify potential levels
potentialLongLevel = low < slowMA and close > slowMA
potentialShortLevel = high > slowMA and close < slowMA

// Confirm levels
confirmedLongLevel = potentialLongLevel and close > fastMA
confirmedShortLevel = potentialShortLevel and close < fastMA

// Entry signals
longEntry = confirmedLongLevel and ta.crossover(fastMA, averageMA) and adx > adxThreshold
shortEntry = confirmedShortLevel and ta.crossunder(fastMA, averageMA) and adx > adxThreshold

// Exit signals
longExit = ta.crossunder(close, slowMA)
shortExit = ta.crossover(close, slowMA)

// Plot signals
plotshape(longEntry, title="Long Entry", location=location.belowbar, style=shape.triangleup, size=size.small, color=color.green)
plotshape(shortEntry, title="Short Entry", location=location.abovebar, style=shape.triangledown, size=size.small, color=color.red)

// Plot moving averages and ADX
plot(fastMA, title="Fast MA", color=color.blue)
plot(slowMA, title="Slow MA", color=color.red)
plot(averageMA, title="Average MA", color=color.orange)
// plot(adx, title="ADX", color=color.purple)
// hline(adxThreshold, title="ADX Threshold", color=color.gray, linestyle=hline.style_dashed)

// Execute trades
if longEntry
    strategy.entry("Long", strategy.long)
else if longExit
    strategy.close("Long")

if shortEntry
    strategy.entry("Short", strategy.short)
else if shortExit
    strategy.close("Short")

Связанные

Больше