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

Автор:Чао Чжан, Дата: 2023-12-11 16:06:30
Тэги:

img

Обзор

Эта стратегия использует индикаторы импульса ADX, RSI и Bollinger Bands для определения рыночных тенденций и ситуаций перекупки/перепродажи, с тем чтобы реализовать автоматизированную торговлю для покупки низкого и продажи высокого.

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

  1. Индикатор ADX определяет тренд. Когда ADX больше 32, он указывает на тренд на рынке.

  2. Индикатор RSI определяет уровни перекупа/перепродажи. Когда RSI пересекает уровень выше 30, он сигнализирует о перепроданном рынке. Когда RSI пересекает уровень ниже 70, он сигнализирует о перекупленном рынке.

  3. Боллингерские полосы определяют консолидацию и прорыв. Когда цена закрытия превышает верхнюю полосу, это сигнализирует о конце консолидации и взлету. Когда цена закрытия превышает нижнюю полосу, это сигнализирует о конце консолидации и прорыве вниз.

На основе вышеуказанных показателей стратегия торговли определяется следующим образом:

Условие покупки:

  1. ADX>32, в тренде
  2. RSI превышает 30, перепроданный
  3. Закрытие цены ниже нижней полосы Боллинджера, конец консолидации нисходящего тренда

Условия продажи:

  1. ADX>32, в тренде
  2. Индекс рентабельности снижается до 70, перекуплен
  3. Закрытие цены выше верхней полосы Боллинджера, конец консолидации восходящего тренда

Анализ преимуществ

Эта стратегия использует несколько индикаторов для определения рыночных условий, избегая вероятности ошибки при использовании одного индикатора.

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

Анализ рисков

К основным рискам этой стратегии относятся:

  1. Риск ложных сигналов от индикаторов.

  2. Риск того, что остановки будут слишком тесными, краткосрочные колебания рынка могут вывести позицию из строя, если остановки слишком близки.

  3. Риск перенастройки: если параметры показателей будут приспособлены только к историческим данным, стабильность будет сомнительной и может не адаптироваться к изменяющейся динамике рынка.

Меры управления рисками:

  1. Ручное вмешательство при ненормальных рыночных условиях, чтобы приостановить стратегию и избежать потерь от ложных сигналов.

  2. Установите разумное расстояние до остановки, используя скользящие средние для определения уровней остановки, чтобы избежать преждевременной остановки.

  3. Введение модуля настройки параметров, динамическая оптимизация параметров с использованием анализа ходьбы вперед для обеспечения надежности.

Руководство по оптимизации

К основным аспектам совершенствования этой стратегии относятся:

  1. Оптимизировать параметры показателей с использованием алгоритмов машинного обучения, адаптированных к каждому рынку.

  2. Инженерия функций, внедрение более технических показателей и моделей обучения, таких как SVM, для улучшения точности сигнала.

  3. Включить стратегии выхода на основе характеристик каждого рынка с использованием ценовых каналов, поддержки/сопротивления и т.д. для повышения стабильности.

  4. Оптимизировать механизмы получения прибыли и остановки потерь путем внедрения остановок, движущихся остановок и т. д. для максимизации прибыли и эффективного контроля рисков.

Заключение

Эта среднесрочная количественная торговая стратегия использует множество технических индикаторов, таких как ADX, RSI и полосы Боллинджера, для определения рыночных условий и размещения сделок при выявлении значительных структурных изменений. Логика ясна и интерпретируема, резко снижая зависимость от одного индикатора. Между тем, риски, такие как ложные сигналы, слишком тесные остановки и перенаправление параметров, необходимо решать путем управления рисками и оптимизации модели для повышения стабильности и эффективности.


/*backtest
start: 2023-11-10 00:00:00
end: 2023-12-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("DAX Shooter 5M Strategy", overlay=true)

//Creo ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
th = input(title="threshold", type=input.integer, defval=20)
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
    adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
    adx


[plus, minus] = dirmov(dilen)
sig = adx(dilen, adxlen)

//Creo RSI

src = close
len = input(7, minval=1, title="Periodo RSI")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
bandainf = input(30, title="Livello Ipervenduto")
bandasup = input(70, title="Livello Ipercomprato")


//Creo Bande di Bollinger

source = close
length = input(50, minval=1, title="Periodo BB")
mult = input(2.0, minval=0.001, maxval=50, title="Dev BB")

basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

plot(basis, color=color.white)
p1 = plot(upper, color=color.aqua)
p2 = plot(lower, color=color.aqua)
fill(p1, p2)

//Stabilisco regole di ingresso

if crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower
    strategy.entry("COMPRA", strategy.long, limit=upper, oca_name="DaxShooter", comment="COMPRA")
else
    //strategy.exit("exit", "COMPRA", loss = 90) 
    strategy.cancel(id="COMPRA")

if crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper
    strategy.entry("VENDI", strategy.short, limit=lower, oca_name="DaxShooter",comment="VENDI")
else
    //strategy.exit("exit", "VENDI", loss = 90)
    strategy.cancel(id="VENDI")

//Imposto gli alert
buy= crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower
sell= crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper
alertcondition(buy, title='Segnale Acquisto', message='Compra DAX')
alertcondition(sell, title='Segnale Vendita', message='Vendi DAX')

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


Больше