Страница 1 из 2

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

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

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

Добавлено: 10 сен 2020, 18:11
Maks
Здесь дополнительно к 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;
   }
}

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

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

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

Добавлено: 05 дек 2020, 16:17
BugsDigger
Решил попробовать, что из этого выйдет.

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

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];
 }
}


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

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

Добавлено: 08 дек 2020, 20:35
JASON
BugsDigger, большое спасибо!

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

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

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

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

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

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

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

Добавлено: 15 янв 2021, 17:59
BugsDigger
> становиться менее чувствителен к изменению цены

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

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

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

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

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