Стратегия торговли с комбинацией нескольких индикаторов


Дата создания: 2023-10-26 15:22:28 Последнее изменение: 2023-10-26 15:22:28
Копировать: 0 Количество просмотров: 693
1
Подписаться
1617
Подписчики

Стратегия торговли с комбинацией нескольких индикаторов

Обзор

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

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

  1. Индекс CCI используется для определения того, является ли рынок перекупленным или перепроданным. Когда CCI ниже -100, это перепродажа, а когда выше 100 - это перекуп. Эта стратегия проводится, когда CCI меньше 0.

  2. Индекс ADX определяет силу тренда. DI+ означает силу тренда вверх, DI- означает силу тренда вниз. ADX означает среднюю силу тренда. Эта стратегия работает больше, когда DI+ ниже 25.

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

  4. Комбинируя несколько вышеперечисленных показателей, формируется торговая стратегия: при CCI < 0 и DI+ < 25 и AO < 0 делать больше; при DI+ > 25 - быть на равных позициях.

  5. Количество заказов динамически рассчитывается как учетная запись, разделенная на цену закрытия и уменьшение, что позволяет скорректировать количество заказов с учетом изменения учетной записи.

  6. Используйте strategy.entry для многосигнала, strategy.close для сигнала равновесия.

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

  1. Используя CCI для определения перепродажи, можно эффективно отфильтровывать ложные сигналы, вызванные шокирующей ситуацией.

  2. Индекс ADX определяет наличие и силу тренда и может улавливать более сильные трендовые сигналы.

  3. Индекс AO помогает оценить теплоту и энергию тренда и избегать торговли в условиях колебаний.

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

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

  6. Стратегическая логика понятна, проста, легко понятна и отслеживается.

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

  1. Показатель CCI плохо распознает колебания в VSDK, что может привести к ошибочному сигналу.

  2. Индекс ADX задерживается и может пропустить поворотный момент.

  3. Показатель AO плохо влияет на оценку кривообразования.

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

  5. DYNAMICAOR связан с волатильностью рынка и требует корректировки параметров в зависимости от разных сортов и рыночных условий.

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

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

  1. Оптимизация параметров CCI для выявления перекупленных и перепроданных зон на различных рынках.

  2. Оптимизация параметров ADX, чтобы зафиксировать переходные тенденции в разных сортах и рыночных условиях.

  3. Настройка параметров AO для определения реальных тенденций в различных волатильных средах.

  4. Тестирование весовых комбинаций различных показателей для поиска оптимальных параметров.

  5. Добавление стратегии сдерживания убытков для контроля отступления.

  6. В сочетании с показателями объема торгов, чтобы избежать ложных прорывов.

  7. Фиксированные позиции корректируются в зависимости от особенностей разных сортов.

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

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

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

//@version=3
strategy("Strategy Niel", shorttitle="Strategy Niel", max_bars_back=2000, initial_capital=1000)

//Input variables
buywhenadxabove = input(25)
buywhendiplusbelow = input(10)
buywhenccibelow = input(0)
buywhenawesomeoscillatorbelow = input(0)
sellwhendiplusabove = input(25)

//CCI script
numberofbarsforcci = input(20)
CCI = cci(close,numberofbarsforcci)

//+DI and ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
	minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, 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]

[sig, up, down] = adx(dilen, adxlen)

//plot(sig, color=red, title="ADX")
//plot(up, color=blue, title="+DI")
//plot(down, color=orange, title="-DI")


//Awesome Oscillator
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
cClr = xSMA1_SMA2 > xSMA1_SMA2[1] ? blue : red
//plot(xSMA1_SMA2, style=histogram, linewidth=1, color=cClr)

buy = sig > buywhenadxabove and up < buywhendiplusbelow  and CCI < buywhenccibelow and xSMA1_SMA2 < buywhenawesomeoscillatorbelow 

ordersize=floor(strategy.equity/close) // Floor returns largest integer, strategy.equity gives total equity remaining - allows to dynamically calculate the order size as the account equity increases or decreases.
strategy.entry("long",strategy.long,ordersize,when= buy) //strategy.entry let's you enter the market variables id ("long"), strategy.long (long position entry), size of the order and when the order should happen
bought = strategy.position_size[0] > strategy.position_size[1]
entry_price = valuewhen(bought, open, 0)
sell = up > sellwhendiplusabove 
strategy.close("long", when=sell ) //strategy.close let's you close your position with variables id ('long') and when this should happen