Написание эксперта - страница 2

 
Vitalii Ananev:

Функция Start() оставлена для совместимости с устаревшими версиями и на данный момент ее уже ни кто не использует.

Ну как сказать. Если пишется чисто для MQL4 то я предпочитаю start(). По простой причине

Если новый тик поступил в период выполнения специальной функции start(), то этот тик будет проигнорирован.
 
Evgeny Belyaev:

Разница есть. В 4-ке есть моменты, когда нужно изменить значение переменной в процессе выполнения программыextern с этой задачей справиться, input -не справиться.

Из справки:

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

Я знаю об этом. Но ведь если в программе предусмотрено изменение значений input переменным, то никто не запрещает предусмотреть переменную глобального уровня и её использовать во всём коде меняя где угодно и сколько угодно.

В общем это на любителя.

 
Alexey Viktorov:

Я знаю об этом. Но ведь если в программе предусмотрено изменение значений input переменным, то никто не запрещает предусмотреть переменную глобального уровня и её использовать во всём коде меняя где угодно и сколько угодно.

В общем это на любителя.

У extern-переменных снйчас несколько иное назначение. В справке освещено.
 
Konstantin Nikitin:

Ну как сказать. Если пишется чисто для MQL4 то я предпочитаю start(). По простой причине

Если новый тик поступил в период выполнения специальной функции start(), то этот тик будет проигнорирован

В OnTick() то же самое.
 
Artyom Trishkin:
В OnTick() то же самое.

Тогда вопрос, почему данность не указана в описании функции???

Хотя мне как-то это проверять не приходилось, да и использовать флаг не составляет труда. Но все равно добавить данное предложение в описание не помешает.

 
Alexey Viktorov:

Посмотрите повнимательней CodeBase и найдёте в достаточно свежих кодах и extern и start() не только в советниках, но и в индикаторах.

А что касается "начитался", так свежее чем учебник Ковалёва не писали и вряд-ли напишут.

Вы код то его смотрели? Я не говорил, что Start нельзя использовать. Можно, если очень хочется, но не одновременно с OnTick(). У него в коде используется ОДНОВРЕМЕННО и Start() и OnTick().

 
Konstantin Nikitin:

Ну как сказать. Если пишется чисто для MQL4 то я предпочитаю start(). По простой причине


Еще один, код топик стартера посмотрите внимательно. В коде используется и Start() и OnTick() сразу вместе, а не отдельно друг от друга. Я ни слова не сказал о том что лучше использовать. Складывается такое впечатление что тут ни кто даже не удосужился посмотреть его исходный код, кроме LRA.  А сразу начали полемику разводить и высказывать свое "экспертное" мнение о том что лучше Start или OnTick,  да еще и extern суда приплели.

 
Vitalii Ananev:

Еще один, код топик стартера посмотрите внимательно. В коде используется и Start() и OnTick() сразу вместе, а не отдельно друг от друга.

Тем-же салом по сусалам.

Читаем ВНИМАТЕЛЬНО

Приведенная вами моя цитата, уже ответ на другое.
 
Vitalii Ananev:

Вы код то его смотрели? Я не говорил, что Start нельзя использовать. Можно, если очень хочется, но не одновременно с OnTick(). У него в коде используется ОДНОВРЕМЕННО и Start() и OnTick().

Виталий, я всё смотрел, но ответил только на выделенный фрагмент фразы. И в том моём сообщении эта фраза была выделена жирным шрифтом.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Написание эксперта

Vitalii Ananev, 2018.01.28 09:57


Это я знаю. А вот как компилятор будет работать встретив в коде две функции предназначение которых вызываться при получении нового тика, при этом одна из них устаревшая? Как минимум надо использовать какую то одну из них, а не обе вместе. Функция Start() оставлена для совместимости с устаревшими версиями и на данный момент ее уже ни кто не использует. Я думаю, что топик стартер просто начитался где то старых статей по Mql4.


 

Alexey Viktorov:

Виталий, я всё смотрел, но ответил только на выделенный фрагмент фразы. И в том моём сообщении эта фраза была выделена жирным шрифтом.



Тогда извиняюсь, если цитируют все сообщения то я считаю, что ответ был именно на все сообщение. А вы оказывается прицепились к слову о том что Start() ни кто использует.

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