Эта стратегия называется
Эта стратегия рассчитывает текущую среднюю цену транзакции с помощью индикатора VWAP. VWAP представляет собой среднюю цену и является соотношением оборота к объему торговли. Индикатор VWAP отражает степень отклонения между текущей ценой и исторической средней ценой торговли.
Стратегия использует скользящую среднюю линию индикатора VWAP и его смещенные линии канала. Пропорции смещенных линий канала устанавливаются через параметры
Настройки параметров этой стратегии полностью отражают идею торгового канала. Пользователи могут регулировать ширину канала и размер позиций в процентах от общего объема активов в соответствии со своими предпочтениями, тем самым реализуя различную степень частоты торговли.
Эта торговая стратегия имеет следующие преимущества:
Поскольку индикатор VWAP может хорошо отражать средний уровень цен, торговля на основе его линий канала может эффективно блокировать средние точки стоимости и избегать предвзятости от краткосрочных колебаний. В то же время сочетание каналов с различными параметрами и создание позиций в партии может эффективно контролировать риски и предотвращать одностороннюю концентрацию риска, приводящую к принудительной ликвидации. Наконец, своевременное получение прибыли при закрытии позиций вблизи регрессии движущейся средней линии VWAP может уменьшить убытки, вызванные переворотами цен.
Эта стратегия также сопряжена с некоторыми рисками:
Индикатор VWAP не чувствителен к волатильности высокочастотных торговых операций. В случае экстремальных ценовых разрывов или краткосрочных аномалий он все равно будет вызывать ненужные торговые сигналы и потери. Кроме того, если параметры канала установлены слишком свободно, он легко образует недействительные сигналы проникновения цены. Наконец, если диапазон позиций, закрывающихся в регрессивных операциях, установлен слишком широким, он может пропустить лучшее время для получения прибыли и вызвать потери в ловушке.
Контрмеры заключаются в разумной оценке настроек параметров и соответствующей корректировке параметров канала; одновременно с объединением других показателей для оценки аномалий цен и избежания слепого следования сигналам; наконец, оценка оптимизации параметров каналов различных уровней и диапазонов регрессии для достижения лучших эффектов получения прибыли.
Эта стратегия может быть оптимизирована в следующих направлениях:
Кроме того, могут быть добавлены правила суждения о объеме торговли, чтобы избежать недействительных разрывов в цене, вызывающих торговые потери. Наконец, также могут быть установлены правила остановки потери, чтобы, когда потеря позиций достигнет определенного процента, остановка потери вышла из позиций, эффективно контролируя риски.
Эта стратегия объединяет индикатор 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")