Стратегия VWAP, основанная на расстоянии Z


Дата создания: 2023-11-10 12:02:19 Последнее изменение: 2023-11-10 12:02:19
Копировать: 0 Количество просмотров: 803
1
Подписаться
1617
Подписчики

Стратегия VWAP, основанная на расстоянии Z

Обзор

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

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

  1. Расчет VWAP
  2. Расстояние Z от цены к VWAP
  3. Установите линию перекупа ((2.5) и линию перепродажи ((-0.5))
  4. Когда быстрая линия больше, чем медленная линия, Z-расстояние ниже, чем линейка сверхпродажи, и Z-расстояние больше, когда проходит по 0-ой оси
  5. Прямая позиция, когда Z находится за пределами линии перекупа
  6. Присоединение логики стоп-лоста

Ключевые функции:

  • calc_zvwap: расстояние Z от цены к VWAP
  • Значение VWAP: vWp (hlc3)
  • Быстрая линия: ema ((close, fastEma)
  • Продолжительность:

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

  1. С помощью расстояния Z можно более интуитивно оценить перекуп и перепродажу.
  2. В сочетании с фильтрацией EMA, чтобы избежать ловушки
  3. Позиции, которые позволяют использовать тренд для получения прибыли
  4. Логика сдерживания убытков, управление рисками

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

  1. Необходимо убедиться, что параметры настроены разумно, например, позиция линий перекупа и перепродажи, циклы EMA и т. д.
  2. Z отстает от индикатора и может пропустить ключевую точку.
  3. Допускать повышение ставок повышает риск потерь
  4. Стоп-позиции требуют разумной настройки

Решение проблемы:

  1. Оптимизация параметров с помощью обратной измерения
  2. В сочетании с дополнительными показателями фильтрует сигналы
  3. Разумная настройка условий для набора
  4. Динамическая коррекция стоп-позиции

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

  1. Оптимизация параметров цикла EMA
  2. Тест на различные критерии перепродажи
  3. Добавить другие показатели фильтрации сигналов и шума
  4. Тестирование различных способов устранения убытков
  5. Оптимизация логики входа, нажима и остановки

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

Стратегия использует Z-расстояние, чтобы определить отношение цены к VWAP, в сочетании с EMA-фильтрованием шумовых сигналов, чтобы захватить трендовые возможности. Стратегия позволяет отслеживать тренд, в то же время устанавливая риски сдерживания убытков.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee

//@version=4
//This is based on Z distance from VWAP by Lazybear
strategy(title="ZVWAP[LB] strategy", overlay=false,pyramiding=2, default_qty_type=strategy.fixed, default_qty_value=3,    initial_capital=10000, currency=currency.USD)
length=input(13,"length")

calc_zvwap(pds, source1) =>
	mean = sum(volume*source1,pds)/sum(volume,pds)
	vwapsd = sqrt(sma(pow(source1-mean, 2), pds) )
	(close-mean)/vwapsd


upperTop=2.5  //input(2.5)
upperBottom=2.0  //input(2.0)
lowerTop=-0.5  //input(-0.5)
lowerBottom=-2.0 //input(-2.0)

buyLine=input(-0.5, title="OverSold Line",minval=-2, maxval=3)
sellLine=input(2.0, title="OverBought Line",minval=-2, maxval=3)

fastEma=input(13, title="Fast EMA",minval=1, maxval=50)
slowEma=input(55, title="Slow EMA",minval=10, maxval=200)

stopLoss =input(5, title="Stop Loss",minval=1) 

hline(0, title="Middle Line", linestyle=hline.style_dotted, color=color.green)

ul1=plot(upperTop, "OB High")
ul2=plot(upperBottom, "OB Low")
fill(ul1,ul2, color=color.red)
ll1=plot(lowerTop, "OS High")
ll2=plot(lowerBottom, "OS Low")
fill(ll1,ll2, color=color.green)
zvwapVal=calc_zvwap(length,close)
plot(zvwapVal,title="ZVWAP",color=color.purple, linewidth=2)


longEmaVal=ema(close,slowEma)
shortEmaVal=ema(close,fastEma)  

vwapVal=vwap(hlc3)


zvwapDipped=false

for i = 1 to 10
    zvwapDipped := zvwapDipped or zvwapVal[i]<=buyLine

longCondition=  shortEmaVal > longEmaVal  and zvwapDipped and  crossover(zvwapVal,0)

barcolor(longCondition ? color.yellow: na)

strategy.entry(id="ZVWAPLE", long=true,  when= longCondition  and strategy.position_size<1) 


//Add
strategy.entry(id="ZVWAPLE", comment="Add", long=true,  when= strategy.position_size>1 and close<strategy.position_avg_price and crossover(zvwapVal,0)) 


//calculate stop Loss
stopLossVal =  strategy.position_avg_price -  (strategy.position_avg_price*stopLoss*0.01)

strategy.close(id="ZVWAPLE",comment="SL Exit",    when=close<stopLossVal)   //close all on stop loss

strategy.close(id="ZVWAPLE",comment="TPExitAll",    qty=strategy.position_size ,   when= crossunder(zvwapVal,sellLine))   //close all      zvwapVal>sellLine