Пользовательские индикаторы > Очень нужен индикатор VWAP

Дополнительные индикаторы от пользователей Альфа-Директ 4. Готовые решения от пользователей.
ZiZ
Сообщения: 26
Зарегистрирован: 19 ноя 2019, 15:32
Благодарил (а): 4 раза
Поблагодарили: 1 раз

Очень нужен индикатор VWAP

Непрочитанное сообщение ZiZ » 10 сен 2020, 14:00

Добрый день!
Трейдеры по всему миру уже оценили возможности индикатора VWAP, который стал определённым стандартом для продвинутых торговых терминалов.
Но в Альфе его до сих пор нет.
Кто-нибудь из опытных программистов, подарите нам этот индикатор, пожалуйста. :)
Спасибо.

Maks
Сообщения: 20
Зарегистрирован: 15 июн 2020, 15:29
Благодарил (а): 6 раз
Поблагодарили: 10 раз

Re: Очень нужен индикатор VWAP

Непрочитанное сообщение Maks » 10 сен 2020, 18:11

Здесь дополнительно к VWAP рисуется канал с заданным отклонением. Спасибо ОХ за заготовку)

Код: Выделить всё

function Initialize() {
   IndicatorName = "VWAPfast";
   PriceStudy = true;
   AddInput("Input", Inputs.Candle);   
   AddParameter("D", 2.1);
   
   AddSeries("VWAP", DrawAs.Line, Color.Red); 
   AddSeries("UPPER", DrawAs.Line, Color.Gray);
   AddSeries("LOWER", DrawAs.Line, Color.Gray);
   
   AddGlobalVariable("Period", Types.Int, 0); 
   AddGlobalVariable("cv", Types.Double, 0);   
   AddGlobalVariable("v", Types.Double, 0);   
   AddGlobalVariable("delta2", Types.Double, 0);   
}

function Evaluate() {
   // AlfaDirect. 2019. OX // 2020 mod by max
   // VWAP – VOLUME WEIGHTED AVERAGE PRICE
   double p = (Input.High[0] + Input.Low[0] + Input.Close[0])/3.0; 
   
   if (CurrentIndex < 500 || BarDate() != BarDate(1)) {
      Period = 1;
      cv = p * Input.Volume[0];
      v = Input.Volume[0];
      VWAP = p;
      delta2 = 0;
      UPPER = p;
      LOWER = p;
   } else {
      Period++;
      cv += p * Input.Volume[0];
      v += Input.Volume[0];
      VWAP = cv / v;
      // std - расчета разниц цены и VWAP в каждый момент времени
      delta2 += (p - VWAP) * (p - VWAP);
      double std = Math.Sqrt(delta2/Period);
      UPPER = VWAP + D * std;
      LOWER = VWAP - D * std;
   }
}
Вложения
VWAPfast.zip
(772 байт) 296 скачиваний

JASON
Сообщения: 27
Зарегистрирован: 31 янв 2017, 21:50
Благодарил (а): 3 раза

Re: Очень нужен индикатор VWAP

Непрочитанное сообщение JASON » 04 дек 2020, 02:37

А можно этот индикатор модифицировать: чтобы расчет велся не в текущем дне, а за любой период (аналогично средним) ?

BugsDigger
Сообщения: 395
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 47 раз

Re: Очень нужен индикатор VWAP

Непрочитанное сообщение BugsDigger » 05 дек 2020, 16:17

Решил попробовать, что из этого выйдет.

Код: Выделить всё

function Initialize()
{
 IndicatorName = "VWAP3";
 PriceStudy = true;
 AddInput("Input", Inputs.Candle);   
   
 AddParameter("Period", 10, "Период");
 AddSeries("VWAP3", DrawAs.Line, Color.Orange);
   
 AddGlobalVariable("cv", Types.Double, 0.0);   
 AddGlobalVariable("v", Types.Double, 0.0);   
}

function Evaluate()
{
 double p0=(Input.High[0]+Input.Low[0]+Input.Close[0])/3.0;
 double q0=Input.Volume[0];
 cv+=p0*q0;
 v+=q0;

 if(CurrentIndex<Period)
 {
  if(v!=0) VWAP3[0]=cv/v; else
  if(CurrentIndex>0) VWAP3[0]=VWAP3[-1];
  else VWAP3[0]=0.0;
 }
 else
 {
  double p1=(Input.High[-Period]+Input.Low[-Period]+Input.Close[-Period])/3.0;
  double q1=Input.Volume[-Period];
 
  cv-=p1*q1;
  v-=q1;
  if(v!=0) VWAP3[0]=cv/v;
  else VWAP3[0]=VWAP3[-1];
 }
}


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

JASON
Сообщения: 27
Зарегистрирован: 31 янв 2017, 21:50
Благодарил (а): 3 раза

Re: Очень нужен индикатор VWAP

Непрочитанное сообщение JASON » 08 дек 2020, 20:35

BugsDigger, большое спасибо!

ifinch
Сообщения: 6
Зарегистрирован: 14 янв 2021, 14:47
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: Очень нужен индикатор VWAP

Непрочитанное сообщение ifinch » 14 янв 2021, 15:39

А можно как-то допилить, чтобы можно было указывать место (номер бара / дата-время), откуда будет расчитываться VWAP?

BugsDigger
Сообщения: 395
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 47 раз

Re: Очень нужен индикатор VWAP

Непрочитанное сообщение BugsDigger » 14 янв 2021, 17:18

В принципе да, но зачем?
Большое число индикаторов работают по каким-то своим периодам, но нигде я не встречал, чтобы делалась отметка начала.

ifinch
Сообщения: 6
Зарегистрирован: 14 янв 2021, 14:47
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: Очень нужен индикатор VWAP

Непрочитанное сообщение ifinch » 15 янв 2021, 09:52

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

BugsDigger
Сообщения: 395
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 47 раз

Re: Очень нужен индикатор VWAP

Непрочитанное сообщение BugsDigger » 15 янв 2021, 17:59

> становиться менее чувствителен к изменению цены

В варианте со счетом от начала дня - да, но в этом есть и свои прелести: показывает центр тяжести цены (в плоскости объем-цены) за день, довольно стабильный/консервативный (не подверженный большим случайным скачкам) показатель.

В варианте с заданным периодом уже не так консервативен, больше похож на SMA.

А вы хотите задать фиксированную точку начала в параметрах индикатора и никак ее не двигать впоследствии?

ifinch
Сообщения: 6
Зарегистрирован: 14 янв 2021, 14:47
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: Очень нужен индикатор VWAP

Непрочитанное сообщение ifinch » 15 янв 2021, 21:18

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


Вернуться в «Пользовательские индикаторы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость