Индикатор динамической волатильности (VIDYA) в сочетании со стратегией разворота тренда ATR

ATR CMO SMA MA
Дата создания: 2024-12-13 10:21:14 Последнее изменение: 2024-12-13 10:21:14
Копировать: 0 Количество просмотров: 474
1
Подписаться
1617
Подписчики

Индикатор динамической волатильности (VIDYA) в сочетании со стратегией разворота тренда ATR

Обзор

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

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

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

  1. Используйте динамический осциллятор Чанде (CMO) для расчета динамики цен
  2. Фактор адаптации альфа, рассчитанный на основе динамики
  3. Конструирование динамических полос в сочетании с ATR
  4. Прорыв цены вверх вызывает сигналы о множественности, а прорыв вниз вызывает сигналы о пустоте
  5. Применение логики обратного позиционирования, то есть новый сигнал одновременно устраняет старые позиции и открывает новые

Стратегические преимущества

  1. Динамическая адаптивность: индикатор VIDYA может автоматически корректировать параметры в зависимости от рыночных колебаний, избегая проблем с отставанием от традиционных скользящих средних
  2. Усовершенствованный контроль риска: установка остановочных потерь с помощью динамических колебаний ATR, способная адаптироваться к различным рыночным условиям
  3. Ясность сигнала: использование логики обратного тренда, четкий и простой в исполнении торговый сигнал
  4. Хорошая визуализация: Интуитивное отображение состояния рынка с помощью цветового разделения на восходящие и нисходящие тенденции
  5. Настраиваемость параметров: ключевые параметры могут быть оптимизированы в соответствии с различными рыночными характеристиками

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

  1. Риски рыночных потрясений: ложные сигналы могут возникнуть в результате частоты торгов на рынках с горизонтальными колебаниями
  2. Влияние скольжения: каждый сигнал, связанный с двусторонней торговлей, подвержен скольжению из-за использования стратегии обратного обращения
  3. Риски управления капиталом: управление фиксированными пропорциями может привести к большим потерям при сильных колебаниях
  4. Чувствительность параметров: параметры VIDYA и ATR имеют большое влияние на эффективность стратегии
  5. Зависимость от рыночных условий: лучшее представление на рынке, где есть явная тенденция, но может быть невыгодно в других рыночных условиях

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

  1. Добавление фильтра тренда: можно добавить долгосрочные тенденции, чтобы отфильтровать сигналы о рыночных колебаниях
  2. Оптимизация управления позициями: рассмотрение возможности внедрения динамического управления позициями с корректировкой пропорций позиций в зависимости от рыночных колебаний
  3. Изменение логики входа в поле: можно добавить подтверждение других технических показателей для повышения надежности сигнала
  4. Усовершенствование механизмов погашения убытков: рассмотрение возможности добавления мобильных убытков или динамических убытков на основе волатильности
  5. Дополнительная временная фильтрация: параметры стратегии могут быть скорректированы в зависимости от рыночных особенностей в разные периоды времени

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

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

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
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/
// © PakunFX

//@version=5
strategy("VIDYA Auto-Trading(Reversal Logic)", overlay=true)

// INPUTS ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
int   vidya_length   = input.int(10, "VIDYA Length")       
int   vidya_momentum = input.int(20, "VIDYA Momentum")    
float band_distance  = input.float(2, "Distance factor for upper/lower bands", step = 0.1)  
float source         = input.source(close, "Source")    
color up_trend_color   = input(#17dfad, "+")  
color down_trend_color = input(#dd326b, "-")  
bool  shadow           = input.bool(true, "Shadow") 

// Define VIDYA (Variable Index Dynamic Average) function
vidya_calc(src, vidya_length, vidya_momentum) =>
    float momentum         = ta.change(src)
    float sum_pos_momentum = math.sum((momentum >= 0) ? momentum : 0.0, vidya_momentum)
    float sum_neg_momentum = math.sum((momentum >= 0) ? 0.0 : -momentum, vidya_momentum)
    float abs_cmo          = math.abs(100 * (sum_pos_momentum - sum_neg_momentum) / (sum_pos_momentum + sum_neg_momentum))
    float alpha            = 2 / (vidya_length + 1)
    var float vidya_value  = 0.0
    vidya_value           := alpha * abs_cmo / 100 * src + (1 - alpha * abs_cmo / 100) * nz(vidya_value[1])

    ta.sma(vidya_value, 15)

// Calculate VIDYA
float vidya_value = vidya_calc(source, vidya_length, vidya_momentum)

// Calculate upper and lower bands
float atr_value = ta.atr(200)
float upper_band = vidya_value + atr_value * band_distance
float lower_band = vidya_value - atr_value * band_distance

// Detect trend direction
bool is_trend_up = na
if ta.crossover(source, upper_band)
    is_trend_up := true
if ta.crossunder(source, lower_band)
    is_trend_up := false

// Smooth the trend line
float smoothed_value = na
if is_trend_up
    smoothed_value := lower_band
if not is_trend_up
    smoothed_value := upper_band

// Detect trend change
bool trend_cross_up = ta.crossover(source, upper_band)
bool trend_cross_down = ta.crossunder(source, lower_band)

// ENTRY & EXIT ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
// Long logic: Enter long when down arrow appears and exit when up arrow appears
if trend_cross_up
    strategy.close("Sell")  // Close short position if any
    strategy.entry("Buy", strategy.long)

if trend_cross_down
    strategy.close("Buy")  // Close long position if any
    strategy.entry("Sell", strategy.short)