Стратегия следования за трендом на основе VWAP


Дата создания: 2024-02-29 15:26:56 Последнее изменение: 2024-02-29 15:26:56
Копировать: 0 Количество просмотров: 944
1
Подписаться
1617
Подписчики

Стратегия следования за трендом на основе VWAP

Обзор

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

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

Основная логика стратегии заключается в использовании VWAP и EMA для определения ценовых тенденций.

  • VWAP представляет собой типичную цену, которая отражает среднюю стоимость участников рынка. Если цена выше VWAP, то это означает увеличение силы покупателя, что означает увеличение силы покупателя. Если цена ниже VWAP, то это означает увеличение силы продавца, что означает увеличение силы продавца.
  • EMA200 представляет собой среднюю длинную линию цены, направленную в направлении тренда. Цена выше EMA200 представляет собой среднюю длинную линию, которая должна быть положительной, и следует сделать больше; цена ниже EMA200 представляет собой среднюю длинную линию, которая должна быть отрицательной, и следует сделать пробел.

Таким образом, эта стратегия сначала определяет, является ли цена одновременно выше VWAP и EMA200, а если да, то делает больше; если цена одновременно ниже VWAP и EMA200, то делает пустоту. Как видно, эта стратегия в основном опирается на VWAP и EMA для принятия решения о покупке и продаже.

Кроме того, стратегия также устанавливает остановку на остановку на остановку на остановку на остановку на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке на остановке

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

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

  • VWAP - это очень хороший индикатор тенденций, поскольку он точно отражает средние затраты участников рынка;
  • EMA200 может четко отражать средние и длинные тренды, а также очень точно и надежно определять направление больших тенденций.

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

Кроме того, установка стоп-стоп-пойнтов позволяет избежать лишних потерь.

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

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

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

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

Чтобы решить вышеуказанные проблемы, мы можем оптимизировать параметры VWAP и EMA, чтобы они лучше различали начало новой тенденции. В то же время можно установить адаптивные стоп-стопы, чтобы стоп-стопы корректировались с ценовыми колебаниями.

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

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

  • Оптимизация параметров VWAP для поиска более стабильных комбинаций параметров VWAP для определения тенденции.
  • Оптимизация циклов EMA для более точного определения параметров EMA.
  • Добавление других показателей тенденций определения, таких как Brin Belt, KDJ и т. Д., в сочетании с VWAP и EMA, повышает точность суждения.
  • Настройка адаптивного стоп-лосса. По определенным правилам, уровень стоп-лосса должен корректироваться с учетом колебаний цены, чтобы избежать стоп-лосса, превышающего фиксированный уровень.
  • В сочетании с управлением позициями. Корректировка размеров позиций в зависимости от показателей, таких как отзывы, количество потерь и т. Д., Контроль стратегии общего риска.

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

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

Исходный код стратегии
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//26m Binance BTCUSDTPERP
//@version=4
strategy("VWAP Trend Follower", initial_capital=100, overlay=true, commission_type=strategy.commission.percent, commission_value=0.04, default_qty_type = strategy.percent_of_equity, default_qty_value = 90, currency = currency.USD )

/// INITIALISE STRATEGY ///
price=close[1]
vprice=vwap(price)
trend=ema(price, 200)

/// RISK MANAGEMENT ///
long_tp_inp = input(3.5, title='Long Take Profit %',step=0.1)/100
long_sl_inp = input(1.4, title='Long Stop Loss %',step=0.1)/100
short_tp_inp = input(2.5, title='Short Take Profit %',step=0.1)/100
short_sl_inp = input(0.9, title='Short Stop Loss %',step=0.1)/100
long_take_level = strategy.position_avg_price * (1 + long_tp_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)
short_take_level = strategy.position_avg_price * (1 - short_tp_inp)
short_stop_level = strategy.position_avg_price * (1 + short_sl_inp)
//long_trailing = input(5, title='Trailing Stop Long',step=0.1) / 100
//short_trailing = input(5, title='Trailing Stop short',step=0.1) / 100

/// STRATEGY CONDITIONS ///
aLong= price > trend and price > vprice
entry_long = aLong and aLong[2] and aLong[1]
aShort= price < trend and price < vprice 
entry_short = aShort and aShort[2] and aShort[1]
//exit_long = 
//exit_short =
//entry_price_long=valuewhen(entry_long,close,0)
//entry_price_short=valuewhen(entry_short,close,0)

/// PLOTTING ///
plot(vprice,                color=#5875E1, linewidth=2)
plot(trend,                 color=#D965E1, linewidth=1)
plotshape(series=aLong,     color=#71E181,style=shape.labelup)
plotshape(series=aShort,    color=#E18BA5,style=shape.labeldown)
//plot(long_take_level,     color=#00E676, linewidth=2)
//plot(long_stop_level,     color=#FF5252, linewidth=1)
//plot(short_take_level,    color=#4CAF50, linewidth=2)
//plot(short_stop_level,    color=#FF5252, linewidth=1)

/// PERIOD ///
testStartYear   = input(2019, "Backtest Start Year")
testStartMonth  = input(1, "Backtest Start Month")
testStartDay    = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear    = input(2020, "Backtest Stop Year")
testStopMonth   = input(12, "Backtest Stop Month")
testStopDay     = input(31, "Backtest Stop Day")
testPeriodStop  = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => true

//// STRATEGY EXECUTION ////

if testPeriod()
    if strategy.position_size == 0 or strategy.position_size > 0
        strategy.entry(id="Long", long=true, when=entry_long, comment="Long")
        strategy.exit("Take Profit/ Stop Loss","Long", limit=long_take_level, stop=long_stop_level,comment="Exit Long")//,trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
//        strategy.close(id="Long", when=exit_long, comment = "Exit Long")

    if strategy.position_size == 0 or strategy.position_size < 0
        strategy.entry(id="Short", long=false, when=entry_short, comment = "Short")
        strategy.exit("Take Profit/ Stop Loss","Short", limit=short_take_level , stop=short_stop_level,comment = "Exit Short")//, trail_points=entry_price_short * short_trailing / syminfo.mintick, trail_offset=entry_price_short * short_trailing / syminfo.mintick)
//        strategy.close(id="Short", when=exit_short, comment = "Exit Short")