1. Берем 5 баров
2. Ищем тот, у которого максимальный объем, запоминаем его среднюю цену (high + low) * 0.5. Далее "Цена бара".
3. По всем средним ценам 5 баров вычисляем общую среднюю цену. Далее "Средняя общая"
4. Прогноз строим по формуле:
Цена бара * 100 / Средняя общая - 100
Ещё для какой-то цели это всё умножаем на 1000, в итоге это значение является значением для "Луч индикатора". Я в коде оставил * 1000 под комментарием. Нет особого смысла в этом умножении, если надо добавить в формулу, то сделать это будет просто, место в коде обозначено. На визуализацию это не повлияет никак (только значения будут в 1000 раз увеличены).
Неизвестно для чего считаются все остальные показатели, если их проигнорировать то получаем вот такой код (см. ниже)
Значение вывожу в виде гистограммы, нет большой пользы выводить луч. Гистограмма нагляднее в данном случае. Луч неинформативен будет, т.к. ось Y у луча по той формуле не коррелирует с ценой на графике.
В индикаторе значение рассчитывается на каждом баре истории для количества баров, указанных в параметре индикатора "Period", т.е. 5 баров можно заменить на любое другое значение.
Пример отображения
Код: Выделить всё
function Initialize()
{
IndicatorName = "VBars";
PriceStudy = false;
AddInput("I", Inputs.Candle);
AddSeries("A", DrawAs.Custom, Color.Red, AxisType.ZeroBased, false);
AddSeries("U", DrawAs.Custom, Color.Red, AxisType.ZeroBased);
AddSeries("D", DrawAs.Custom, Color.Green, AxisType.ZeroBased);
AddParameter("Period", 5);
AddGlobalVariable("APrice", Types.DoubleList);
}
function Evaluate()
{
var MaxVol = 0.0;
var MaxVolPrice = 0.0;
APrice.Clear();
for (var x = 0; x < Period; x++)
{
APrice.Add((I.High[x] + I.Low[x]) * 0.5);
if (MaxVol < I.Volume[x])
{
MaxVol = I.Volume[x];
MaxVolPrice = (I.High[x] + I.Low[x]) * 0.5;
}
}
var Average = APrice.Average(x => x);
A = MaxVolPrice * 100 / Average - 100; //* 1000
if (A[0] >= 0)
{
U = A[0];
U.DrawHistogram(Color.Green);
}
else
{
D = A[0];
D.DrawHistogram(Color.Red);
}
}
Если ваши расчеты не совпадают с тем что посчитал индикатор, напишите об этом здесь.