Вычислить суточный объем и максимумы, начиная от текущего момента... - страница 2

 
Rosh:
По существу - непонятно зачем это нужно, почему не нравится почти лобовой способ реализации .

Не понравился цикл в 1440 итераций...


Integer, спасибо. Я тоже покрутил и так и эдак. В общем остановился на том, что изначально предложил komposter, погрешностью пока пренебрегаю =(. Сам не ожидал, что будут такие проблемы с вроде бы простой задачей.
Всем спасибо за помощь.
 
Я же написал "почти лобовой способ реализации".
 
MAEstro:

Не понравился цикл в 1440 итераций...

Да, Integer не ищет легких путей... :)

datetime dayAgo = CurTime() - 24 * 60 * 60;
 
int iDayAgo = iBarShift(NULL, 0, dayAgo, true);
 
if (iDayAgo == -1)
    iDayAgo = iBarShift(NULL, 0, dayAgo, false) - 1;
 
double maxPrice = High[Highest(NULL, 0, MODE_HIGH, iDayAgo , 1)];
double minPrice = Low[Lowest(NULL, 0, MODE_LOW, iDayAgo, 1)];
 
Еще проблема выснилась - iBarShift() может вернуть номер ближайшего бара, а он на минутках может оказаться за пределами суток. Остается один вариант: получить время сутки назад и перебирать бары в цикле пока время болше рассчитанного. От цикла никуда не деться - объемы надо считать.
 
Integer 08.09.2006 18:41
Еще проблема выснилась - iBarShift() может вернуть номер ближайшего бара, а он на минутках может оказаться за пределами суток.
Не ближайшего, а следующего по индексу, если точный отсутствует - https://www.mql5.com/ru/forum/51050. Это обработано if'ом.

От цикла никуда не деться - объемы надо считать.
True! Остается только оптимизировать с использованием старших таймфреймов.
 
Integer:
Для Max и Min есть штатные средства: High[Highest(...)] и Low[Lowest(...)], для объема нет.
MODE_VOLUME - Объем, используемый в Lowest() и Highest() функциях.
 
Gorillych писал (а):
Integer писал (а):
Для Max и Min есть штатные средства: High[Highest(...)] и Low[Lowest(...)], для объема нет.
MODE_VOLUME - Объем, используемый в Lowest() и Highest() функциях.

Это будет максимальное значение объема на одном баре, а надо сумму считать.
 
Irtron писал (а):

True! Остается только оптимизировать с использованием старших таймфреймов.
Кто-нибудь пробовал считать объемы на мадших таймфреймах и сравнивать результат со старшим? - рекомендую, очень познавательно (не совпадает).
 
Integer:
Кто-нибудь пробовал считать объемы на мадших таймфреймах и сравнивать результат со старшим? - рекомендую, очень познавательно (не совпадает).
Если объемы на старших таймфреймах больше соответствующей суммы на младших, что может иметь место при определенных условиях, такая оптимизация даст более точный результат.

А вот если меньше, тогда это баг МТ, требующий исправления.
 
Irtron:
Если объемы на старших таймфреймах больше соответствующей суммы на младших, что может иметь место при определенных условиях, такая оптимизация даст более точный результат.

А вот если меньше, тогда это баг МТ, требующий исправления.
Где-то читал, что в МТ заложен некий алгоритм формирования минутного бара...
Если Вы внимательно наблюдали котировки, то могли заметить, что реалтаймовские котировки через некоторое время корректируются. Характеристики минутных баров изменяются. Особенно это касается объемов. Может это и не особенности МТ, может это особенности ДЦ, брокера...