Наконец выделил пару часов на написание примера. Большую часть времени заняли комментарии в программе.
На классы разводить не стал так как пример маленький, а вынос кода по разным модулям при таком объеме кода только усложнит понимание алгоритма.
Суть задачи следующая выдается список доступных в market watch инструментов далее собирается массив из имен этих инструментов плюс по каждому инструменту заводятся по 9 мувингов. Для наглядности результаты выкладываются в виде массива кнопок в окне вызвавшего их инструмента.
Как правильно написать этот код на MQL5 без использования Sleep?
В приложенном коде нет проверки доступности исторических данных для всех символов, предоставляемых сервером, и не делается попыток исправить.
Вы смешиваете два таких понятия, как вычисление индикатора на исторических данных и подкачка необходимых данных. Необходимо разделить работу на две части:
обеспечение достаточной глубины данных на заданном таймфрейме/символе;
расчет значений индикатора на этих данных.
Кроме того, непонятно, почему для приложенного скрипта должно быть критичным время выполнения? А если предполагается все эти вычисления делать в эксперте (то есть, опять таки нет необходимости получить сразу всё и сразу на первом же тике ), то опять-таки время не критично.
Вы просто пишете код, не задумываясь - есть ли данные для расчета, можно ли вообще получить эти данные, какое количество данных достаточно и так далее. А в этом варианте скрипт и не должен работать корректно.
Наконец выделил пару часов на написание примера. Большую часть времени заняли комментарии в программе.
На классы разводить не стал так как пример маленький, а вынос кода по разным модулям при таком объеме кода только усложнит понимание алгоритма.
Суть задачи следующая выдается список доступных в market watch инструментов далее собирается массив из имен этих инструментов плюс по каждому инструменту заводятся по 9 мувингов. Для наглядности результаты выкладываются в виде массива кнопок в окне вызвавшего их инструмента.
Как правильно написать этот код на MQL5 без использования Sleep?
В приложенном коде нет проверки доступности исторических данных для всех символов, предоставляемых сервером, и не делается попыток исправить.
Вы смешиваете два таких понятия, как вычисление индикатора на исторических данных и подкачка необходимых данных. Необходимо разделить работу на две части:
обеспечение достаточной глубины данных на заданном таймфрейме/символе;
расчет значений индикатора на этих данных
Да уж пожалуйста дайте пример получения достаточной глубины всех необходимых таймфреймов в начале работы эксперта, чтобы не было сообщения об отсутствии данных. Я сейчас для этого вывожу в OnInit графики всех используемых в советнике таймфреймов, хотя эсперт навешен только на одном из них.
Нельзя-ли сначала закачать все данные, а уж потом позволить эксперту работать дальше (всё в программе естественно).
Как и ожидалось MQL5 в упор не видит TERMINAL_EXPERTS_ENABLED, исправьте пожалуйста поскорей...
Этой константы больше нет, так в MQL5 кнопка "Запретить/разрешить эксперта" относится именно к совершению торговых операций (а не к запрету работы эксперта), сам эксперт в любом случае получает все тики и продолжает работу.
Да уж пожалуйста дайте пример получения достаточной глубины всех необходимых таймфреймов в начале работы эксперта, чтобы не было сообщения об отсутствии данных. Я сейчас для этого вывожу в OnInit графики всех используемых в советнике таймфреймов, хотя эсперт навешен только на одном из них.
Нельзя-ли сначала закачать все данные, а уж потом позволить эксперту работать дальше (всё в программе естественно).
Наконец выделил пару часов на написание примера. Большую часть времени заняли комментарии в программе.
На классы разводить не стал так как пример маленький, а вынос кода по разным модулям при таком объеме кода только усложнит понимание алгоритма.
Суть задачи следующая выдается список доступных в market watch инструментов далее собирается массив из имен этих инструментов плюс по каждому инструменту заводятся по 9 мувингов. Для наглядности результаты выкладываются в виде массива кнопок в окне вызвавшего их инструмента.
Как правильно написать этот код на MQL5 без использования Sleep?
Работает и без слип, время выполнения - 0 миллисекунд.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
А что сейчас используется вместо "IsExpertEnabled()" и "IsLibrariesAllowed()", что-то не нашел в справке нечего подобного?
Одними TERMINAL_TRADE_ALLOWED, TERMINAL_DLLS_ALLOWED, TERMINAL_EMAIL_ENABLED и TERMINAL_FTP_ENABLED на мой взгляд не обойтись...
PS
Предлагаю добавить еще TERMINAL_EXPERT_ENABLED и TERMINAL_LIB_ALLOWED
PPS
Хотя в поиске у справочника (4 релиз) есть упоминание о "TERMINAL_EXPERTS_ENABLED", только вот незадача без описания и детальной информации.
Справочник выкидывает в раздел с описанием "ENUM_TERMINAL_INFO_INTEGER" и на этом все завершается (к сожалению).....
Наконец выделил пару часов на написание примера. Большую часть времени заняли комментарии в программе.
На классы разводить не стал так как пример маленький, а вынос кода по разным модулям при таком объеме кода только усложнит понимание алгоритма.
Суть задачи следующая выдается список доступных в market watch инструментов далее собирается массив из имен этих инструментов плюс по каждому инструменту заводятся по 9 мувингов. Для наглядности результаты выкладываются в виде массива кнопок в окне вызвавшего их инструмента.
Как правильно написать этот код на MQL5 без использования Sleep?
В приложенном коде нет проверки доступности исторических данных для всех символов, предоставляемых сервером, и не делается попыток исправить.
Вы смешиваете два таких понятия, как вычисление индикатора на исторических данных и подкачка необходимых данных. Необходимо разделить работу на две части:
Кроме того, непонятно, почему для приложенного скрипта должно быть критичным время выполнения? А если предполагается все эти вычисления делать в эксперте (то есть, опять таки нет необходимости получить сразу всё и сразу на первом же тике ), то опять-таки время не критично.
Вы просто пишете код, не задумываясь - есть ли данные для расчета, можно ли вообще получить эти данные, какое количество данных достаточно и так далее. А в этом варианте скрипт и не должен работать корректно.
Чуть позже я выложу более правильный вариант.
Как и ожидалось MQL5 в упор не видит TERMINAL_EXPERTS_ENABLED, исправьте пожалуйста поскорей...
Наконец выделил пару часов на написание примера. Большую часть времени заняли комментарии в программе.
На классы разводить не стал так как пример маленький, а вынос кода по разным модулям при таком объеме кода только усложнит понимание алгоритма.
Суть задачи следующая выдается список доступных в market watch инструментов далее собирается массив из имен этих инструментов плюс по каждому инструменту заводятся по 9 мувингов. Для наглядности результаты выкладываются в виде массива кнопок в окне вызвавшего их инструмента.
Как правильно написать этот код на MQL5 без использования Sleep?
В приложенном коде нет проверки доступности исторических данных для всех символов, предоставляемых сервером, и не делается попыток исправить.
Вы смешиваете два таких понятия, как вычисление индикатора на исторических данных и подкачка необходимых данных. Необходимо разделить работу на две части:
Да уж пожалуйста дайте пример получения достаточной глубины всех необходимых таймфреймов в начале работы эксперта, чтобы не было сообщения об отсутствии данных. Я сейчас для этого вывожу в OnInit графики всех используемых в советнике таймфреймов, хотя эсперт навешен только на одном из них.
Нельзя-ли сначала закачать все данные, а уж потом позволить эксперту работать дальше (всё в программе естественно).
Еще два старых вопрос о главном:
1. Поддерживает ли MT5 и MQL5 в своем текущем состоянии общение с DLL и как это правильно сделать?
Просто пробовал переписать свои библиотеки и подключить их при помощи mqh-файла, не вышло :(
При компиляции секции выскакивает следующая ошибка (DLL лежит в каталоге Libraries).
unexpected end of program
no executable file produced
Точно такой результат получается если обращаться к системным DLL из состава Windows XP или ex5-файлам...
Вот такой код вроде в 4 работает, а в 5 не хочет....
2. Доступно ли в текущий момент работа при помощи DDE (что-то не найду даже намеков на это)?
В советнике использовались следующие функции: IsDemo, IsTesting, IsOptimization и IsStopped.
Как их теперь реализовать?
Как и ожидалось MQL5 в упор не видит TERMINAL_EXPERTS_ENABLED, исправьте пожалуйста поскорей...
Этой константы больше нет, так в MQL5 кнопка "Запретить/разрешить эксперта"
относится именно к совершению торговых операций (а не к запрету работы эксперта), сам эксперт в любом случае получает все тики и продолжает работу.
Да уж пожалуйста дайте пример получения достаточной глубины всех необходимых таймфреймов в начале работы эксперта, чтобы не было сообщения об отсутствии данных. Я сейчас для этого вывожу в OnInit графики всех используемых в советнике таймфреймов, хотя эсперт навешен только на одном из них.
Нельзя-ли сначала закачать все данные, а уж потом позволить эксперту работать дальше (всё в программе естественно).
Можно, пример будет выложен завтра.
Наконец выделил пару часов на написание примера. Большую часть времени заняли комментарии в программе.
На классы разводить не стал так как пример маленький, а вынос кода по разным модулям при таком объеме кода только усложнит понимание алгоритма.
Суть задачи следующая выдается список доступных в market watch инструментов далее собирается массив из имен этих инструментов плюс по каждому инструменту заводятся по 9 мувингов. Для наглядности результаты выкладываются в виде массива кнопок в окне вызвавшего их инструмента.
Как правильно написать этот код на MQL5 без использования Sleep?
Работает и без слип, время выполнения - 0 миллисекунд.
2. Доступно ли в текущий момент работа при помощи DDE (что-то не найду даже намеков на это)?
Про DDE говорили - его не будет. :-(
А жаль...
-