Стратегия торговли VWAP, основанная на ценовом канале


Дата создания: 2024-02-19 14:25:18 Последнее изменение: 2024-02-19 14:25:18
Копировать: 0 Количество просмотров: 782
1
Подписаться
1617
Подписчики

Стратегия торговли VWAP, основанная на ценовом канале

Обзор

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

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

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

Стратегия использует среднюю линию показателя VWAP и ее отклонение от коридора. Пропорции отклонения от коридора устанавливаются с помощью параметров longlevel1 и shortlevel1. Когда цена прорывает верхнюю отклонение от коридора, открывайте позиции в процентном соотношении от позиции на lotsizelong; когда цена прорывает нижнюю отклонение от коридора, открывайте позиции в процентном соотношении от позиции на lotsizeshort.

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

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

Эта торговая стратегия имеет следующие преимущества:

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

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

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

В этой стратегии также есть некоторые риски, о которых следует помнить:

  1. VWAP не чувствителен к высокочастотным сделкам и не может отражать экстремальные ценовые аномалии
  2. Неправильная настройка параметров ширины канала может привести к слишком радикальным сделкам
  3. Возвращение к операционной равновесии может привести к убыткам в ловушке, если она слишком широка

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

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

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

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

  1. Увеличение уровня каналов, оптимизация пакетов параметров
  2. Эффективность прорыва в сочетании с объемом сделок
  3. Добавление стратегии по удержанию убытков, установка удержания убытков в процентах отступления

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

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

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

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

//@version=4
strategy(title = "VWAP Bands Backtest", shorttitle = "VWAP Bands Backtest", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
lotsizelong = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot long, %")
lotsizeshort = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot short, %")
short1 = input(true, title = "short 1")
long1 = input(true, title = "long 1")
shortlevel1 = input(1.0, title = "Short line 1")
longlevel1 = input(-1.0, title = "Long line 1")
needoffset = input(true, title = "Offset")

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")

//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick
truetime = true

//VWAP
ma = vwap(hlc3)

//Levels
longline1 = long1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
shortline1 = short1? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close


//Lines
colorlong1 = long1 ? color.lime : na
colorshort1 = short1 ? color.red : na
offset = needoffset ? 1 : 0
plot(shortline1, offset = offset, color = colorshort1, title = "Short line 1")
plot(ma, offset = offset, color = color.blue, title = "MA line")
plot(longline1, offset = offset, color = colorlong1, title = "Long line 1")


//Trading
lotlong = 0.0
lotshort = 0.0
lotlong := size == 0 ? (strategy.equity / close) * (lotsizelong / 100) : lotlong[1]
lotshort := size == 0 ? (strategy.equity / close) * (lotsizeshort / 100) : lotshort[1]


if ma > 0
    if lotlong > 0
        lotslong = 0.0
        lotslong := strategy.position_size > 0 ? round(strategy.position_size / lotlong) : 0.0
        strategy.entry("L1", strategy.long, lotlong, limit = longline1, when = (lotslong == 0 and long1 and truetime))
    if lotshort > 0
        lotsshort = 0.0
        lotsshort := strategy.position_size < 0 ? round(strategy.position_size / lotshort) : 0.0
        strategy.entry("S1", strategy.short, lotshort, limit = shortline1, when = (lotsshort == 0 and short1 and truetime))
if strategy.position_size > 0
    strategy.exit("TPL", "L1", limit = ma)
if strategy.position_size < 0
    strategy.exit("TPS", "S1", limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("L1")
    strategy.cancel("S1")
    strategy.cancel("TPL")
    strategy.cancel("TPS")