Скрипт показывает отработку уровней максимальных объёмов распределений профиля объёмов (см. индикатор VP). Кроме того, скрипт демонстрирует способ использования кода индикатора VP для получения распределений и их параметров из кода.
Далее делается смещение на Step баров назад (влево) и всё повторяется. Если соседние диапазоны выдают один и тот же уровень, следующий (более старый, левый) будет рисоваться более толстым, и он будет перекрывать более новый.
Работа будет продолжаться до тех пор, пока есть котировки M1, не кончится текущий график, либо скрипт не будет удалён с графика принудительно.
Остальные параметры аналогичны параметрам VP.
Здесь не показаны проверки на корректность данных, проверка горизонта, смотрите в коде, это может понадобиться в вашем проекте.
См. также: Индикатор VP (Volume Profile).
Принцип действия
Скрипт берёт указанный диапазон баров (RangeBars) текущего таймфрейма и рассчитывает гистограмму по аналогии с индикатором VP. Сама гистограмма не отображается, используется лишь её максимум. Этот максимум проверяется на пересечение с ценой в будущем (справа). Если пересечение есть, рисуется уровень цвета LevelColor, если нет - NewLevelColor.Далее делается смещение на Step баров назад (влево) и всё повторяется. Если соседние диапазоны выдают один и тот же уровень, следующий (более старый, левый) будет рисоваться более толстым, и он будет перекрывать более новый.
Работа будет продолжаться до тех пор, пока есть котировки M1, не кончится текущий график, либо скрипт не будет удалён с графика принудительно.
Параметры
Параметр | Описание |
---|---|
ClearOnly | При запуске скрипт очистит старые уровни и сразу остановится. |
RangeBars | Число баров диапазонов расчёта (в текущем таймфрейме). |
Step | Шаг смещения диапазонов, бары. |
PointScale | Масштаб пункта при рисовании гистограммы. Большее значение означает более быструю работу, но более грубое отображение. Аналогично HgPointScale для VP. |
RangeColor | Цвет линии, обозначающей диапазон. |
LevelColor | Цвет линии, обозначающей отработанный уровень. |
NewLevelColor | Цвет линии, обозначающей неотработанный уровень. |
Остальные параметры аналогичны параметрам VP.
Основной код
Для вычисления гистограмм VP достаточно одного экземпляра класса CVPCalc из файла VP-include/volume/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;
...
// поиск пересечений и отображение
}
Здесь не показаны проверки на корректность данных, проверка горизонта, смотрите в коде, это может понадобиться в вашем проекте.
Загрузка
Исходный код скрипта находится в хранилище: https://gitlab.com/fxcoder-mql/findvl.См. также: Индикатор VP (Volume Profile).
Уважаемый 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?
Удалить