Тенденция VWAP после стратегии

Автор:Чао Чжан, Дата: 2024-02-29 15:26:56
Тэги:

img

Обзор

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

Логика стратегии

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

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

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

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

Кроме того, стратегия также устанавливает точки получения прибыли и остановки убытков. После длинного хода TP устанавливается на 3,5% от цены входа и SL устанавливается на 1,4% от цены входа. После короткого хода TP составляет 2,5% от цены входа и SL - 0,9% от цены входа. Это избегает огромных потерь.

Преимущества

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

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

Таким образом, объединение VWAP и EMA для оценки тенденций является очень надежным.

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

Риски

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

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

Кроме того, неправильные настройки TP/SL по-прежнему создают риск чрезмерных потерь на одну сделку.

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

Улучшение

Основные аспекты, направленные на укрепление этой стратегии:

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

Заключение

В заключение, это очень надежный тренд после стратегии. Он использует простую логику VWAP и EMA для определения направления тренда. Когда оба индикатора дают последовательные сигналы, уровень успеха очень высок. Установлением правильного TP / SL риск можно контролировать. Еще есть много способов (оптимизация параметров, добавление индикаторов, адаптивный TP / SL, размещение позиций и т. Д.) для дальнейшего улучшения этой стратегии и повышения ее производительности.


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

Больше