Адаптивные полосы VWAP на основе динамической стратегии отслеживания волатильности Гармана-Класса

VWAP GKV STD MA VWMA
Дата создания: 2024-12-20 14:51:00 Последнее изменение: 2024-12-20 14:51:00
Копировать: 0 Количество просмотров: 449
1
Подписаться
1617
Подписчики

Адаптивные полосы VWAP на основе динамической стратегии отслеживания волатильности Гармана-Класса

Обзор

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

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

В основе стратегии лежит сочетание VWAP с GKV-волатильностью. Сначала рассчитывается VWAP как центробежность, а затем используется стандартная разница в цене закрытия для построения полосы. Ключевым моментом является использование формулы GKV для расчета волатильности, которая учитывает четыре цены открытия и закрытия и является более точной, чем традиционная волатильность.

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

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

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

  1. На рынке может быть много торгов, что увеличивает затраты
  2. Более чувствительный к длине VWAP и колебаниям циклов
  3. Возможно медленное реагирование при быстром реверсии
  4. Необходимость в реальном времени, высокие требования к качеству данных Предложения по контролю рисков:
  • Установите разумный стоп-лост.
  • Параметры оптимизации для разных рынков
  • Добавить индикаторы подтверждения тренда
  • Контроль над размером капитала

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

  1. Внедрение многоциклического анализа для повышения надежности сигнала
  2. Повышение объема транзакций и подтверждение эффективности прорыва
  3. Оптимизация методов расчета волатильности, например, рассмотрение введения EWMA
  4. Добавлен фильтр силы тренда
  5. Рассмотреть возможность включения динамического механизма остановки убытков Эти оптимизации могут повысить стабильность стратегии и качество доходов.

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

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

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

//@version=5
strategy("Adaptive VWAP Bands with Garman Klass Volatility", overlay=true)

// Inputs
length = input.int(25, title="Volatility Length")
vwapLength = input.int(14, title="VWAP Length")
vol_multiplier = input.float(1,title="Volatility Multiplier")

// Function to calculate Garman-Klass Volatility
var float sum_gkv = na
if na(sum_gkv)
    sum_gkv := 0.0

sum_gkv := 0.0
for i = 0 to length - 1
    sum_gkv := sum_gkv + 0.5 * math.pow(math.log(high[i]/low[i]), 2) - (2*math.log(2)-1) * math.pow(math.log(close[i]/open[i]), 2)

gcv = math.sqrt(sum_gkv / length)

// VWAP calculation
vwap = ta.vwma(close, vwapLength)

// Standard deviation for VWAP bands
vwapStdDev = ta.stdev(close, vwapLength)

// Adaptive multiplier based on GCV
multiplier = (gcv / ta.sma(gcv, length)) * vol_multiplier

// Upper and lower bands
upperBand = vwap + (vwapStdDev * multiplier)
lowerBand = vwap - (vwapStdDev * multiplier)

// Plotting VWAP and bands
plot(vwap, title="VWAP", color=color.blue, linewidth=2)
plot(upperBand, title="Upper Band", color=color.green, linewidth=1)
plot(lowerBand, title="Lower Band", color=color.red, linewidth=1)

var barColor = color.black

// Strategy: Enter long above upper band, go to cash below lower band
if (close > upperBand)
    barColor := color.green
    strategy.entry("Long", strategy.long)
else if (close < lowerBand)
    barColor := color.fuchsia
    strategy.close("Long")

barcolor(barColor)