Вопросы от "чайника" - страница 213

 
lazarev-d-m:

Один из самых простых способов вставить 

туда где надо проверить работоспособность кода или проверить наличие истинности условия (тоесть проверить бывают ли случаи когда все условия истинны и должено быть произведено действие)

я например вставляю Alert внутрь каждой сложной функции с разным текстом, чтобы проверить выполняется ли функция вообще и доходит ли советник до нее

Возможно вы используете какие-то условия и они всегда ложны  

Спасибо.
Советник просто перестает работать, без никаких ошибок, и после перезагрузки терминала начинает опять работать.
Мне надо знать как проверить программно работает он или нет. Хотя он зеленного цвета и нет никаких ошибок в журнале.
И после той функции проверки я поставлю алерт или принт или комент.
 
G001: Скажите пожалуйста как программно проверить работает советник или нет?

Дело в том что никаких ошибок в журнале нет, но советник иногда перестает работать, и восстанавливается только после перезагрузки терминала.

Не совсем понятно, как Вы определяете, что "советник иногда перестает работать". Может, там у него просто цикл бесконечный запускается. Журнал при этом - пустой, а советник пашет без устали. Или ещё какая особенность срабатывает. 

 

Мне нужен ответ на вопрос в этом посте: https://www.mql5.com/ru/forum/3775/page215#comment_379520

Кто-нибудь знает ответ? 

 
tol64: Мне нужен ответ на вопрос в этом посте: 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.

 
Yedelkin:

Судя по всему, пока прямого ответа нет, остаётся поразмышлять.

Итак, тип лицензии узнаётся с помощью 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: И вообще, если нет возможности ограничить по времени некоторые платные программы в демо-режиме, то хотелось бы иметь такую возможность. Так как могут быть такие варианты, что можно очень выгодно использовать для себя программы даже не покупая их. )))
А Вы оформите это предложение прям в Сервисдеск. Заодно и узнаете, как обстоит дело на самом деле :)
 
Yedelkin:

Не совсем понятно, как Вы определяете, что "советник иногда перестает работать". Может, там у него просто цикл бесконечный запускается. Журнал при этом - пустой, а советник пашет без устали. Или ещё какая особенность срабатывает. 

Циклов нет. Он открывает довольно часто, 10-20 раз в день, когда вижу на графике сигналы индикатора но советник не открыл позицию, значит не работает. Пере-запускаю терминал и снова работает. 
 
G001 когда вижу на графике сигналы индикатора но советник не открыл позицию, значит не работает

Вот это уже ближе к теме. Получается, что у Вас советник перестаёт реагировать на сигналы индикатора? Но это ещё не значит, что советник "не работает". Возможно, он всё-таки работает, но не так, как задумано автором.

Попробуйте поставить таймер с периодом, например, 10 минут. И выводите на печать  все значимые для Вашего эксперта показатели. Смотрите, меняются ли эти показатели со временем. Если и в этом случае журнал будет пустым - тогда точно, в Сервисдеск с копией кода. 

 

Дополнение. Или вот ещё идея. У Вас же есть место в коде с условием типа if, после срабатывания которого должен отправляться торговый запрос. Попробуйте выводить на печать случаи срабатывания/несрабатывания этого условия, например:

if ()
  {
   ... 
   Print("Сработало условие такое-то, время такое-то");
  }
else
  {
   ...
   Print("Не сработало условие такое-то, время такое-то");
  }
 
Спасибо. Маловероятно что проблема в советнике, иначе правило перезапуска терминала не сработала бы всегда. К тому же, это проблема есть и в МТ4 у некоторых брокеров. Мне просто надо проверить программно когда он перестает работать, что бы перезапустить раньше следующего сигнала. Добавил и принты и коменты.