туда где надо проверить работоспособность кода или проверить наличие истинности условия (тоесть проверить бывают ли случаи когда все условия истинны и должено быть произведено действие)
я например вставляю Alert внутрь каждой сложной функции с разным текстом, чтобы проверить выполняется ли функция вообще и доходит ли советник до нее
Возможно вы используете какие-то условия и они всегда ложны
Спасибо.
Советник просто перестает работать, без никаких ошибок, и после перезагрузки терминала начинает опять работать.
Мне надо знать как проверить программно работает он или нет. Хотя он зеленного цвета и нет никаких ошибок в журнале.
И после той функции проверки я поставлю алерт или принт или комент.
G001: Скажите пожалуйста как программно проверить работает советник или нет?
Дело в том что никаких ошибок в журнале нет, но советник иногда перестает работать, и восстанавливается только после перезагрузки терминала.
Не совсем понятно, как Вы определяете, что "советник иногда перестает работать". Может, там у него просто цикл бесконечный запускается. Журнал при этом - пустой, а советник пашет без устали. Или ещё какая особенность срабатывает.
Судя по всему, пока прямого ответа нет, остаётся поразмышлять.
Итак, тип лицензии узнаётся с помощью Mql5InfoInteger(MQL5_LICENSE_TYPE). Т.е. из всех возможных значений перечисления ENUM_LICENSE_TYPE будет возвращено какое-то одно. Далее - методом исключения: ограничение по времени работы (LICENSE_TIME) не может быть возвращено одновременно с предыдущими тремя значениями указанного перечисления. В том числе, LICENSE_TIME не должно возвращаться одновременно с LICENSE_DEMO.
При таком рассуждении я бы дал отрицательный ответ на вопрос "подразумевается ли , что платную программу для Маркета можно ограничить по времени в демо-тестировании?" Ибо демо-версия платного продукта из Маркета имеет свой идентификатор - LICENSE_DEMO.
Судя по всему, пока прямого ответа нет, остаётся поразмышлять.
Итак, тип лицензии узнаётся с помощью Mql5InfoInteger(MQL5_LICENSE_TYPE). Т.е. из всех возможных значений перечисления ENUM_LICENSE_TYPE будет возвращено какое-то одно. Далее - методом исключения: ограничение по времени работы (LICENSE_TIME) не может быть возвращено одновременно с предыдущими тремя значениями указанного перечисления. В том числе, LICENSE_TIME не должно возвращаться одновременно с LICENSE_DEMO.
При таком рассуждении я бы дал отрицательный ответ на вопрос "подразумевается ли , что платную программу для Маркета можно ограничить по времени в демо-тестировании?" Ибо демо-версия платного продукта из Маркета имеет свой идентификатор - LICENSE_DEMO.
А я думаю, что в LICENSE_TIME может быть заложено одновременно и LICENSE_DEMO и LICENSE_TIME. Яркий пример отражён в таких идентификаторах, как MQL5_VISUAL_MODE и MQL5_TESTING. То есть, и тот и другой дают понять, что мы находимся в тестере. ))
Так что очень интересно, что же на самом деле заложили в этот идентификатор разработчики? И вообще, если нет возможности ограничить по времени некоторые платные программы в демо-режиме, то хотелось бы иметь такую возможность. Так как могут быть такие варианты, что можно очень выгодно использовать для себя программы даже не покупая их. )))
tol64: А я думаю, что в LICENSE_TIME может быть заложено одновременно и LICENSE_DEMO и LICENSE_TIME.
Согласен, что совсем упустил из виду терминологические особенности справочных материалов, из-за которых метод исключения может привести к неверным результатам в силу тех или иных причин. ...Ну, по крайней мере, озвучили непонятки по теме, а ответить могут только авторы этого перечисления.
tol64: И вообще, если нет возможности ограничить по времени некоторые платные программы в демо-режиме, то хотелось бы иметь такую возможность. Так как могут быть такие варианты, что можно очень выгодно использовать для себя программы даже не покупая их. )))
А Вы оформите это предложение прям в Сервисдеск. Заодно и узнаете, как обстоит дело на самом деле :)
Не совсем понятно, как Вы определяете, что "советник иногда перестает работать". Может, там у него просто цикл бесконечный запускается. Журнал при этом - пустой, а советник пашет без устали. Или ещё какая особенность срабатывает.
Циклов нет. Он открывает довольно часто, 10-20 раз в день, когда вижу на графике сигналы индикатора но советник не открыл позицию, значит не работает. Пере-запускаю терминал и снова работает.
G001: когда вижу на графике сигналы индикатора но советник не открыл позицию, значит не работает
Вот это уже ближе к теме. Получается, что у Вас советник перестаёт реагировать на сигналы индикатора? Но это ещё не значит, что советник "не работает". Возможно, он всё-таки работает, но не так, как задумано автором.
Попробуйте поставить таймер с периодом, например, 10 минут. И выводите на печать все значимые для Вашего эксперта показатели. Смотрите, меняются ли эти показатели со временем. Если и в этом случае журнал будет пустым - тогда точно, в Сервисдеск с копией кода.
Дополнение. Или вот ещё идея. У Вас же есть место в коде с условием типа if, после срабатывания которого должен отправляться торговый запрос. Попробуйте выводить на печать случаи срабатывания/несрабатывания этого условия, например:
if ()
{
...
Print("Сработало условие такое-то, время такое-то");
}
else
{
...
Print("Не сработало условие такое-то, время такое-то");
}
Спасибо. Маловероятно что проблема в советнике, иначе правило перезапуска терминала не сработала бы всегда. К тому же, это проблема есть и в МТ4 у некоторых брокеров. Мне просто надо проверить программно когда он перестает работать, что бы перезапустить раньше следующего сигнала. Добавил и принты и коменты.
Один из самых простых способов вставить
туда где надо проверить работоспособность кода или проверить наличие истинности условия (тоесть проверить бывают ли случаи когда все условия истинны и должено быть произведено действие)
я например вставляю Alert внутрь каждой сложной функции с разным текстом, чтобы проверить выполняется ли функция вообще и доходит ли советник до нее
Возможно вы используете какие-то условия и они всегда ложны
Дело в том что никаких ошибок в журнале нет, но советник иногда перестает работать, и восстанавливается только после перезагрузки терминала.
Не совсем понятно, как Вы определяете, что "советник иногда перестает работать". Может, там у него просто цикл бесконечный запускается. Журнал при этом - пустой, а советник пашет без устали. Или ещё какая особенность срабатывает.
Мне нужен ответ на вопрос в этом посте: https://www.mql5.com/ru/forum/3775/page215#comment_379520
Кто-нибудь знает ответ?
Судя по всему, пока прямого ответа нет, остаётся поразмышлять.
Итак, тип лицензии узнаётся с помощью Mql5InfoInteger(MQL5_LICENSE_TYPE). Т.е. из всех возможных значений перечисления ENUM_LICENSE_TYPE будет возвращено какое-то одно. Далее - методом исключения: ограничение по времени работы (LICENSE_TIME) не может быть возвращено одновременно с предыдущими тремя значениями указанного перечисления. В том числе, LICENSE_TIME не должно возвращаться одновременно с LICENSE_DEMO.
При таком рассуждении я бы дал отрицательный ответ на вопрос "подразумевается ли , что платную программу для Маркета можно ограничить по времени в демо-тестировании?" Ибо демо-версия платного продукта из Маркета имеет свой идентификатор - LICENSE_DEMO.
Судя по всему, пока прямого ответа нет, остаётся поразмышлять.
Итак, тип лицензии узнаётся с помощью Mql5InfoInteger(MQL5_LICENSE_TYPE). Т.е. из всех возможных значений перечисления ENUM_LICENSE_TYPE будет возвращено какое-то одно. Далее - методом исключения: ограничение по времени работы (LICENSE_TIME) не может быть возвращено одновременно с предыдущими тремя значениями указанного перечисления. В том числе, LICENSE_TIME не должно возвращаться одновременно с LICENSE_DEMO.
При таком рассуждении я бы дал отрицательный ответ на вопрос "подразумевается ли , что платную программу для Маркета можно ограничить по времени в демо-тестировании?" Ибо демо-версия платного продукта из Маркета имеет свой идентификатор - LICENSE_DEMO.
А я думаю, что в LICENSE_TIME может быть заложено одновременно и LICENSE_DEMO и LICENSE_TIME. Яркий пример отражён в таких идентификаторах, как MQL5_VISUAL_MODE и MQL5_TESTING. То есть, и тот и другой дают понять, что мы находимся в тестере. ))
Так что очень интересно, что же на самом деле заложили в этот идентификатор разработчики? И вообще, если нет возможности ограничить по времени некоторые платные программы в демо-режиме, то хотелось бы иметь такую возможность. Так как могут быть такие варианты, что можно очень выгодно использовать для себя программы даже не покупая их. )))
Согласен, что совсем упустил из виду терминологические особенности справочных материалов, из-за которых метод исключения может привести к неверным результатам в силу тех или иных причин. ...Ну, по крайней мере, озвучили непонятки по теме, а ответить могут только авторы этого перечисления.
Не совсем понятно, как Вы определяете, что "советник иногда перестает работать". Может, там у него просто цикл бесконечный запускается. Журнал при этом - пустой, а советник пашет без устали. Или ещё какая особенность срабатывает.
Вот это уже ближе к теме. Получается, что у Вас советник перестаёт реагировать на сигналы индикатора? Но это ещё не значит, что советник "не работает". Возможно, он всё-таки работает, но не так, как задумано автором.
Попробуйте поставить таймер с периодом, например, 10 минут. И выводите на печать все значимые для Вашего эксперта показатели. Смотрите, меняются ли эти показатели со временем. Если и в этом случае журнал будет пустым - тогда точно, в Сервисдеск с копией кода.
Дополнение. Или вот ещё идея. У Вас же есть место в коде с условием типа if, после срабатывания которого должен отправляться торговый запрос. Попробуйте выводить на печать случаи срабатывания/несрабатывания этого условия, например: