Двунаправленная торговая стратегия индекса направления


Дата создания: 2023-12-19 14:13:52 Последнее изменение: 2023-12-19 14:13:52
Копировать: 0 Количество просмотров: 371
1
Подписаться
1166
Подписчики

Двунаправленная торговая стратегия индекса направления

Обзор

Эта стратегия позволяет осуществлять двустороннюю торговлю товарами, рассчитывая динамический индекс товара ((DI) в сочетании с ограничительными параметрами. Сделайте больше, когда DI+ больше, чем DI-один из ограничительных параметров, и сделайте пустое, когда DI- больше, чем DI+один из ограничительных параметров.

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

Центральным показателем стратегии является динамический индекс ((DI) ≠DI, который рассчитывается по формуле:

DI+ = (DM+ / истинный диапазон) * 100 DI- = (DM- / истинный диапазон) × 100

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

Согласно определению DI, когда DI+ > DI- означает, что в настоящее время многоголовая сила больше, чем пустая сила, относится к многоголовому рынку; когда DI- > DI+ означает, что пустая сила сильнее, чем многоголовая сила, относится к пустоголовому рынку.

Эта стратегия использует эту особенность, чтобы установить ограничительный параметр. Когда DI+ больше, чем DI-один ограничительный параметр, считается, что это рынок с большим количеством голов, делать больше; когда DI-больше, чем DI+один ограничительный параметр, считается, что это рынок с пустым рынком, делать пустое.

Например, если ограничительный параметр установлен на 3, то конкретные правила торговли:

  1. Когда DI+ - DI- > 3, сделайте больше
  2. Сделайте пустоту, когда DI- - DI+ > 3

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

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

Основные преимущества этой стратегии:

  1. Высокий уровень надежности и ориентированности на ситуацию с использованием DI

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

  1. Настройка параметров ограничения эффективно фильтрует сигнал

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

  1. Автоматизированная двусторонняя торговля

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

  1. Настраиваемый промежуток времени

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

  1. Вы можете выбрать только больше или только пусто, в зависимости от ситуации

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

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

Однако эта стратегия также несет в себе некоторые риски:

  1. Вероятность ошибочного сигнала DI

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

  1. Неправильно настроенные параметры ограничения

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

  1. Невозможно определить конец тренда

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

Решение риска включает в себя:

  1. Фильтрация DI-сигнала в сочетании с подвижными средними и другими показателями

  2. Настройка параметров ограничения в соответствии с результатами обратной измерения

  3. Если объединить Volumes, MACD и т.д., можно определить, что тенденция изменилась.

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

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

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

Показатели, позволяющие более интуитивно оценить силу воздушных сил, такие как “Красота дождя” и другие, в сочетании с DI, могут повысить точность оценки.

  1. Присоединиться к стратегии стоп-стоп

Установка перемещаемого стоп-поста, временного или пропорционального стоп-поста позволяет блокировать прибыль и снижать убытки.

  1. Параметры корректируются для конкретных сортов

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

  1. Динамическая оптимизация с помощью машинного обучения

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

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

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

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

//@version=3
strategy("Noro's DI Strategy", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(title="Length", defval=14)
limit = input(3, title = "limit, %")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//DI
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedTrueRange = 0.0
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementMinus = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100

//Trend
trend = 0
trend := DIPlus > DIMinus + limit ? 1 : DIPlus < DIMinus - limit ? -1 : trend[1]

//Background
col = trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Lines
plot(DIPlus, color=lime, title="DI+", linewidth = 3)
plot(DIMinus, color=red, title="DI-", linewidth = 3)

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if trend == 1
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if trend == -1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()