Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
3. интересен момент анализа, что возвращает CopyClose(), у себя проверял, если нет .hst файла по запрашиваемому ТФ, то CopyClose() больше 2048 никогда не возвращает - т.е. это максимальное значение которое можно скачать?
Нет. 2048 - это порция данных, которая закачивается с сервера при отсутствии на клиенте.
Нет. 2048 - это порция данных, которая закачивается с сервера при отсутствии на клиенте.
хм, вроде и MQL давно занимаюсь, но все таки неожиданно это для меня
ОК, вот пример из справки: https://www.mql5.com/ru/docs/series/timeseries_access
указано, что:
Следующая важная проверка — проверка типа программы, из которой вызывается функция. Напомним, что отправка запроса на обновление таймсерии с тем же периодом, что и у индикатора, вызывающего обновление, крайне нежелательна. Нежелательность запроса данных по тому же символу-периоду, что и у индикатора обусловлена тем, что обновление исторических данных производится в том же потоке, в котором работает индикатор. Поэтому велика вероятность клинча. Для проверки используем функцию MQL5InfoInteger() с модификатором MQL5_PROGRAM_TYPE.
т.е. сам пример https://www.mql5.com/ru/code/449
не годится для подгрузки исторических данных в индикаторе МТ4, а как скачать индикатором всю историю, если нет подготовленного файла .hst, т.е. индикатор сам инициализировал закачку истории по символу
как я могу узнать, что вот "выкачал" всю историю равную iBars(Symbol(),PERIOD_CURRENT);
iBars() же тоже будет выдавать некорректное значение? - истории как бы еще нет, нет и коретнго iBars()
в МТ5 вроде без проблем качается история, нужно просто подождать и проверять состояние исторических данных, а в МТ4?
PS: в кодобазе вчера искал корректно работающие мультивалютные индикаторы под МТ4, но коды не являются предметом подражания, во многих примерах кодобазы, вообще подкачка истории в индикаторе просто отсутствует
В четвёрке "зажимали клавишу home". Другого способа нет. Если вы давно изучаете тему, то должны помнить фразу "кирпич на клавиатуре"
https://www.mql5.com/ru/code/9968
https://www.mql5.com/ru/code/9153
https://www.mql5.com/ru/code/9888
Можете мой бесплатный загрузчик посмотреть.
Можете мой бесплатный загрузчик посмотреть.
ну и как Вы мне предлагает посмотреть Ваш код? как закачать историю я знаю, а как проверить закачку индикатором, нет
В четвёрке "зажимали клавишу home". Другого способа нет. Если вы давно изучаете тему, то должны помнить фразу "кирпич на клавиатуре"
https://www.mql5.com/ru/code/9968
https://www.mql5.com/ru/code/9153
https://www.mql5.com/ru/code/9888
да, я знаю все эти коды, ранее пользовался, я несколько лет вообще не занимался MQL, с этого года восстанавливаю знания, очень удивило, что разработчики сделали максимальную совместимость между МТ5 и МТ4, сильно подняли производительность MQL4 - хотя ранее была информация, что МТ4 как проект больше не будет развиваться, будут только исправляться баги
и вот была надежда, что я не нашел информации об автоматической подгрузке истории в индикаторе МТ4
в принципе, если гарантированно хочется скачать всю историю в МТ4 и без дополнительных проверок, то проще код хренфикс использовать - записать в .hst файл бар datetime t=0;
ну и как Вы мне предлагает посмотреть Ваш код?
Думал Вам просто нужно историю автоматом прогрузить...
К моему большому сожалению, вынужден еще раз вернуться к теме с получением данных старших ТФ в МТ4. На этот раз в связи с тем, что предложенные здесь методики оказались не рабочими.
Вот используемый код:
В нем реализована подкачка данных так, как мне советовали:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
[СЕРВИСДЕСК] Ошибка получения времени старшего ТФ в таймере!
Slava, 2018.09.27 06:20
Многократно обсуждалось. 12 страниц на запрос "ошибка 4066"
И Вам правильно посоветовали в OnInit отправить запрос, а в OnCalculate анализировать.
Миллисекундный таймер зачем? Вы своими действиями мешаете клиентскому терминалу нормально подняться. Это не виндовые сообщения мешают вашему таймеру, а ваш таймер мешает всем. Ещё раз: ИНДИКАТОРЫ В КЛИЕНТСКОМ ТЕРМИНАЛЕ MT4 РАБОТАЮТ В ИНТЕРФЕЙСНОМ ПОТОКЕ.
Реализация именно такая: в OnInit() происходит первый запрос данных. Далее, ждем установление связи с торговым сервером, затем в OnCalculate()! получаем данные старших ТФ. Получаем результат на первом запуске сегодня:
Как видно из лога, получены ошибочные значения времени часа и времени дня.
Да, могут заметить разработчики (@Slava), я не применил все советы, что мне давались. Т.е. я все равно в OnInit() запускаю быстрый таймер, хотя мне советовали изначально запускать медленный. Однако, в данном случае, это сделано специально. Если быстрый таймер запускается в интерфейсном потоке и может затормозить получение данных остальных индикаторов - то это большая беда. Нигде в документации нет предупреждений об этом, в маркет спокойно можно выложить программу с частым таймером, которая может являться своеобразным "вирусом" и привести к "поломке" остальных программ.
В связи с вышеизложенным, считаю, что необходимо либо внести ограничения на работу миллисекундного таймера, либо в документации к EventSetMillisecondTimer() указать, что нельзя запускать функцию в OnInit(), чтобы терминал смог нормально подняться на старте.
А теперь самое интересное. Код без всяких таймеров:
А нужный результат все равно не получить. Разработчики (@Slava) прокомментируйте пожалуйста. Невозможно получить корректные данные при загрузке терминала с нескольких старших ТФ. Обязательное условие, чтобы терминал был выключен более часа после выключения (т.к. получаем данные бара часа). И, конечно, запуск на ТФ меньше часа.
Таймер оказался не при делах.