Новая версия платформы MetaTrader 5 build 2360: Расширение интеграции с SQLite - страница 52

 

OnInit это именно точка входа.

Она нужна, так как не всем нужно четко ждать готовности рыночного окружения, а нужно стартовать сразу. И еще неизвестно какое окружение нужно этой программе.

Тот, кто пишет программы без проверки, сам подкладывает себе бомбу. Если нужного окружения нет, надо отложить инициализацию на следующие события, а не зацикливаться на «я знаю только OnInit, логика моей работы прямолинейна, я не готов думать».

Примеры в документации показывают конкретный кусок + минимально необходимую обвязку для запуска, а не полноценные робастые программы с вкраплением пары демонстрируемых строчек. Претензии по полноте примеров в документации не принимаются.

 
Igor Makanu:

https://www.mql5.com/ru/docs/chart_operations

это так на вскидку )))

там про ChartSet, a у меня ChartGet возвращает 0. т.е. претензия не к невыполненному событию, а к неполученному параметру.

Вижу, тёзка, вы по этим граблям тоже потоптались ;)

 
Renat Fatkhullin:

...не всем нужно четко ждать готовности рыночного окружения, а нужно стартовать сразу...

не могли бы привести пример? не могу придумать задачи, имеющей отношение к торговле, которую стоит запустить на неготовом терминале.

Renat Fatkhullin:

Тот, кто пишет программы без проверки, сам подкладывает себе бомбу

проверяю деление на 0 по минимуму, там где по логике (кода/алгоритма, не терминала) это возможно. первый раз запнулся об это лет 10 назад, когда TICK_VALUE которая (по логике) не может быть нулевой, вернула 0...

 
Igor Zakharov:

не могли бы привести пример? не могу придумать задачи, имеющей отношение к торговле, которую стоит запустить на неготовом терминале.

проверяю деление на 0 по минимуму, там где по логике это возможно. первый раз запнулся об это лет 10 назад, когда TICK_VALUE которая (по логике) не может быть нулевой, вернула 0...

Замените «неготовый терминал» на «не все рыночное окружение готово» и все сразу станет ясно. Ну и не надо усекаться только на торговлю. Масса индикаторов и экспертов аналитических не требуют полной инициализации или наличия торгового окружения.

Если не проверяете делители, тем более в динамических вычислениях типа размера окна(где ноль нормален), то виноваты только вы.

 
Renat Fatkhullin:

И еще неизвестно какое окружение нужно этой программе.

а тут и гадать не надо, все именно так как описано в документации - у кого нет OnInit() - тем ничего и не нужно, по моему это только Сервисы/Скрипты

если история и тп , хранится на сервере, то инициализировать доступ к этим вещам требует времени, интернет-соединения .... это логично и объяснимо


но если MQL-программа запускается на чарте, и вот сам то чарт может быть не готов.... где сейчас находится MQL-программа ? - без чарта она не работает, а чарта то и нет? 


ладно, спасибо за беседу, хотелось пообщаться с настоящим программистом, если не кривить душой, то как и везде - это проблемы на Вашей стороне, наш софт работает именно так, как описано в документации

 
Igor Makanu:

а тут и гадать не надо, все именно так как описано в документации - у кого нет OnInit() - тем ничего и не нужно, по моему это только Сервисы

если история и тп , хранится на сервере, то инициализировать доступ к этим вещам требует времени, интернет-соединения .... это логично и объяснимо


но если MQL-программа запускается на чарте, и вот сам то чарт может быть не готов.... где сейчас находится MQL-программа ? - без чарта она не работает, а чарта то и нет? 


ладно, спасибо за беседу, хотелось пообщаться с настоящим программистом, если не кривить душой, то как и везде - это проблемы на Вашей стороне, наш софт работает именно так, как описано в документации

Вы бы хоть минимально узнали с кем общаетесь и что я сделал. Будете иметь сопоставимо моим 30 годам непрерывного программирования, тогда и будете спорить о программировании.

Автор заявления получил закономерный ноль при определении размера чарта, обломался на этом, стер свой код из коммента, а вы продолжили переносить его косяк на терминал.

 
Renat Fatkhullin:

Вы бы хоть минимально узнали с кем общаетесь и что я сделал.

странный у Вас взгляд на собеседников

я, почему то подумал, что если руководство компании стало регулярно общаться с пользователями, то значит "берут на карандаш" проблемы пользователей

Renat Fatkhullin:

Автор заявления получил закономерный ноль при определении размера чарта, обломался на этом, стер свой код из коммента, а вы продолжили переносить его косяк на терминал.

ну значит я не прав, но хоть что то выяснили - OnInit() не событие, а точка входа


ЗЫ: с программированием все сложно, у нас то и 1С-ников называют программистами, а как попросишь его десктоп приложение, чтоб опросить объекты по сети по статистике работы, дык профиль не тот, вот пишем сами, "на коленке", я из параллельной вселенной )))

 

Вы мало знаете про руководство, как и то, что в наших форумах я публично обсуждаю технические решения с 2001 года.

Так как в комментах участвуют/пишут откровенно мало знающие технические вопросы люди, мне приходится годами объяснять, чтобы остановить/исправить ошибочные позиции.

При этом признавая и исправляя наши ошибки. Результатом чего выходили тысячи бета-версий и сотни релизов всех пяти платформ.

Первую платформу FX Chart я выпустил в мае 1999 года. Ровно 21 год назад.
 
Igor Makanu:

странный у Вас взгляд на собеседников

я, почему то подумал, что если руководство компании стало регулярно общаться с пользователями, то значит "берут на карандаш" проблемы пользователей

ну значит я не прав, но хоть что то выяснили - OnInit() не событие, а точка входа

Лично я получил очень ценный совет от руководства - "пишите сами". Каковым теперь и пользуюсь по мере возможностей. Это весьма способствует спокойствию духа.

Помимо этого, спокойствию духа поспособствовало чёткое осознание того простого факта, что я никоим образом не являюсь клиентом MQ и не могу никак влиять на их решения.

 
Renat Fatkhullin:

Если не проверяете делители, тем более в динамических вычислениях типа размера окна(где ноль нормален), то виноваты только вы.

в данном конкретном примере, виноват я, спора нет. правда, исправить не могу - если проверку не прошёл, что делать?

кстати, я попробовал ужать: меньше 69 пикселей нельзя сделать ширину графика из-за управляющих кнопок


беседа заходит в тупик, потому что вы говорите с позиции программиста, а я - с позиции слабого программиста (5%) и пользователя (95%).

вы говорите, эксперт может запускаться раньше терминала. а я спрашиваю - а если я хочу избежать этой ситуации, что мне делать? нет решения, кроме как уже после инициализации, при других событиях проверять правильно ли эксперт инициализировался.

вот в данном конкретном примере с нулевой шириной графика, как мне поступить? при условии, что я сделал эту проверку, а она не прошла:

- вернуть INIT_FAILED? нет, это ничем не отличается от деления на 0, т.е. эксперт не запущен.

- остановить дальнейшее выполнение бесконечным циклом пока ChartGetInteger(0,CHART_WIDTH_IN_PIXELS) не будет больше 0? опять нельзя есть риск не выйти из него и подвесить терминал

- взвести флаг ошибки инициализации (но вернуть INIT_SUCCEED!) и при первом событии запустить повторный OnInit()? зачем тогда вообще OnInit как событие?

и только, будучи слабым программистом, не найдя способа обойти проблему, пишу на форум, параллельно подставляя костыль.

PS: сейчас заметил вот такую штуку:

Зачем ObjectsTotal(0)? А потом вспомнил, что в 1800х билдах был баг, когда без этого объекты не удалялись. баг быстро пофиксили, но в кодах это копируется дальше и дальше... и я с ужасом понял, что таких моментов в коде до ужаса много. мы привыкаем к костылям, а ножками ходить - хромаем :( например многие в пятерке код начинают #property strict

PSS я писал и под нинзю, и под квика, и пытался (безуспешно) по какой-то там FXCM... или как-то так... я понимаю преимущества метатрэйдера в сравнении с этими платформами... но мелочи... всё в мелочах...

Причина обращения: