Проект
Исходный код и описание параметров находятся в хранилище: https://gitlab.com/fxcoder-mql/findvl-mt5.Принцип действия
Скрипт берёт указанный диапазон баров (RangeBars) текущего таймфрейма и рассчитывает гистограмму по аналогии с индикатором VP. Сама гистограмма не отображается, используется лишь её максимум. Этот максимум проверяется на пересечение с ценой в будущем (справа). Если пересечение есть, рисуется уровень цвета LevelColor, если нет - NewLevelColor.Далее делается смещение на Step баров назад (влево) и всё повторяется. Если соседние диапазоны выдают один и тот же уровень, следующий (более старый, левый) будет рисоваться более толстым, и он будет перекрывать более новый.
Работа будет продолжаться до тех пор, пока есть котировки M1, не кончится текущий график, либо скрипт не будет удалён с графика принудительно.
Основной код
Для вычисления гистограмм VP достаточно одного экземпляра класса CVPCalc из файла VP-include/vp/vp_calc.mqh. Но этот файл может ссылаться на другие инклюды, поэтому для использования лучше класть всю папку VP-include рядом с вашим кодом или в общую Include.// создать объект для вычисления гистограмм
double hg_point = _Point * PointScale;
CVPCalc vpcalc_(VP_SOURCE_M1, VOLUME_TICK, hg_point, VP_TICK_PRICE_BID, INT_MAX);
...
// цикл по диапазонам справа налево (из будущего в прошлое)
for (int i = 0, nbars = _series.bars_count(); i < nbars; i += HistoryStep)
{
...
// получить гистограмму
double hg_low;
double volumes[];
int count = vpcalc_.get_hg(time_from, time_to, hg_low, volumes);
// максимум гистограммы
int max_pos = _arr.max_index(volumes);
...
// собственно уровень максимального объёма
double level = hg_low + max_pos * hg_point;
...
// поиск пересечений и отображение
}
Здесь не показаны проверки на корректность данных, проверка горизонта, смотрите в коде, это может понадобиться в вашем проекте.
Уважаемый fxcoder! А как сделать так, что бы показания скрипта обновлялись?
ОтветитьУдалитьНикак, только перезапуск.
УдалитьHi Fxcoder, what is the number on lines after the fvl1 "xxx" ? Does it is the strong of the level ?
ОтветитьУдалитьWhat is the function that calculate this number in code ?
Cheers for your good work !
Hi.
УдалитьThis is just the serial number of the line.
The code:
for (int i = 0, nbars = _series.bars_count(); i < nbars; i += Step)
...
draw_trend(prefix + (string)i + ...
Excellent Indicator.
ОтветитьУдалитьHow can the level reading area be reduced to consume less pc resources?
Should I include the indicator inside the vp folder for better performance?
Thank you.
Why can't it be used?How do you install it?
Удалитьприветствую Уважаемый FXcoder, вы можете сделать индикатор который показывает в каждой свече гистограмму с накоплением, как на сайте БОВол?
УдалитьHello FXcoder, when I install the script, and compile it I just get a frustrating 62 errors, most of these being:
ОтветитьУдалитьCan't open any of the include .mqh files, although I've put them all in the include folder.
And other errors being:
'TickPriceType' - undeclared identifier Find Volume Levels.mq5
'trend' - undeclared identifier Find Volume Levels.mq5
'vpcalc_' - some operator expected Find Volume Levels.mq5
I don't know much about coding or the Meta Quote languages but I have been able to install other indicators such as you VP indicator for MQL4 and it worked without any errors like this.
I don't know what the problem is here, if the include files can't be located and would solve the other errors or what??
I hope you cant help,
Thank you.
Eu estava com esse problema e consegui resolver
УдалитьПодскажите почему не запускается?
ОтветитьУдалитьПривет. Отличный индикатор. Это мне очень помогает. Как включить в скрипт текстовый строковый объект тикового объема в POC в профиле индикатора? Эта диаграмма может быть в конце POC. Спасибо.
ОтветитьУдалитьПривет. Не думаю, что это чем-то поможет. Скрипт показывает всё в довольно грязном, приближённом виде в расчёте на то, чтобы просто и быстро увидеть скопления объёмов. Также можно прикинуть, какие из инструментов вообще реагируют на горизонтальные уровни.
Удалить