Количественная торговая стратегия на основе ADX, BB %B, AO и EMA


Дата создания: 2023-12-11 16:24:11 Последнее изменение: 2023-12-11 16:24:11
Копировать: 0 Количество просмотров: 782
1
Подписаться
1621
Подписчики

Количественная торговая стратегия на основе ADX, BB %B, AO и EMA

Обзор

Эта стратегия называется стратегия отслеживания динамики четырех факторов. Эта стратегия использует средний показатель движения в направлении ((ADX) для определения направления тенденции, процентный процент Блин-пояса в B-диапазоне ((BB % B) для определения относительно сильной стороны акций, волшебная равновесие ((AO) для определения количества движений и индексных движущихся средних различных циклов ((EMA) для определения свободного пространства, для отслеживания динамики цен на акции, отслеживания эффекта сильных акций, избегания слабых акций.

Стратегический принцип

Стратегия использует четыре различных технических показателя для определения времени покупки и продажи. Конкретная логика заключения заключается в следующем:

Условия для участия: 21-дневная EMA на 5-дневную EMA, 200-дневная EMA на 50-дневную EMA, BB % B больше установленной линейки перекупа, AO больше установленного положительного значения, ADX больше установленного значения.

Входное условие: 5-дневная EMA с прохождением 21-дневной EMA, 50-дневная EMA с прохождением 200-дневной EMA, BB % B меньше установленной проданной линии, AO меньше установленного отрицательного значения, ADX больше установленного значения.

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

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

  1. Индекс ADX позволяет эффективно оценивать наличие тенденции и ее силу, избегая частого открытия позиций в нестабильных рынках;

  2. BB %B - показатель, позволяющий определить, находятся ли акции на высоком или низком уровне, и эффективно избежать преследования высоких и низких уровней;

  3. AO-индекс определяет, существует ли сильная мотивационная поддержка при покупке, гарантирующая эффективность прорыва;

  4. Показатель EMA Gold Fork/Dead Fork объединяется для определения основного направления рынка и предотвращения открытия позиций на обратном направлении.

В целом, эта стратегия позволяет эффективно контролировать риски торговли и отслеживать сильные акции на рынке.

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

Несмотря на то, что в стратегии используются различные показатели, существуют определенные риски:

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

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

  3. Такие показатели, как EMA, имеют запаздывающий характер и могут не вовремя отражать влияние внезапных событий. Следует надлежащим образом сочетаться с другими показателями или надлежащим образом сокращать циклы MA.

  4. Внезапные крупные события могут привести к разбросу индикаторов, которые должны быть объединены с фундаментальным анализом и, при необходимости, могут приостановить стратегию.

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

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

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

  2. Добавление других показателей тенденции, таких как CCI, MACD и т. Д., Образует портфель показателей, повышающий точность суждения.

  3. Присоединяйтесь к стратегии стоп-стоп, чтобы контролировать одноразовые потери.

  4. Устанавливайте срок хранения, избегайте чрезмерной жадности.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

//ADX + BB %B + AO + EMA

strategy("ADX + BB %B + AO + EMA", overlay=true, initial_capital=10000)
take_profit_perc = input(title="Take Profit %", type=input.integer, defval=10, minval=1, maxval=100)
stop_loss_perc = input(title="Stop Loss %", type=input.integer, defval=5, minval=1, maxval=100)
bb_overbought = input(title="BB %B Overbought", type=input.integer, defval=75, minval=1, maxval=100)
bb_oversold = input(title="BB %B Oversold", type=input.integer, defval=25, minval=1, maxval=100)
ao_value = input(title="Awesome Oscillator", type=input.integer, defval=2)
adx_value = input(title="ADX", type=input.integer, defval=15)

startDate = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2018, minval=2008, maxval=2200)

inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0))

ema5 = ema(close, 5)
ema21 = ema(close, 21)
ema50 = ema(close, 50)
ema200 = ema(close, 200)

//BB %B
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)

//Awesome Oscillator
ao = sma(hl2,5) - sma(hl2,34)

// ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
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)
sig = adx(dilen, adxlen)

long_strategy = ema5>ema21 and ema50>ema200 and bbr>(bb_overbought/100) and ao>ao_value and sig>adx_value
short_strategy = ema5<ema21 and ema50<ema200 and bbr<(bb_oversold/100) and ao<-ao_value and sig>adx_value

plot(ema5, color=color.blue)
plot(ema21, color=color.aqua)
plot(ema50, color=color.purple)
plot(ema200, color=color.red)
bgcolor(color=long_strategy ? color.green : na, transp=80)
bgcolor(color=short_strategy ? color.purple : na, transp=80)
    
if inDateRange and long_strategy
    strategy.entry("long", strategy.long)
    strategy.exit("exit", "long", stop=close*(100-stop_loss_perc)/100, limit=close*(100+take_profit_perc)/100)
if inDateRange and short_strategy
    strategy.entry("short", strategy.short)
    strategy.exit("exit", "short", stop=close*(100+stop_loss_perc)/100, limit=close*(100-take_profit_perc)/100)