Страница 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
В идеале хотелось бы и двигать, но не уверен, что это реализуемо без открывания свойств индикатора. Поэтому если можно рсчитывать с указанной свечи, то было бы хорошо, если еще и можно двигать, то это было бы вообще идеально. Главное, чтобы точка начала расчета сама никуда не двигалась при изменении маштаба графика или смены ТФ.