Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1187

 
Сергей Таболин:

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

Совет-подсказка - разберитесь, для начала, что такое OnInit, OnTick и OnDeinit. Думаю, после этого всё встанет на свои места )))

Вообще судя по вашему ответу, Вы сами не очень понимаете, как работает программа. Раз кажется, что это глупый вопрос. Да как и предыдущий комментатор думает, что она останавливается. Просто по опыту программирования в других языках думаю, что она выполняет в цикле своё тело, и когда событие приходит, она в него ныряет. Если программа выполняет в цикле своё тело, то это объясняет, почему так написана программа.
 

Всем доброго времени суток! Я тестирую советника в МТ4.
Подскажите пожалуйста, при помощи какой языковой конструкции , или функции на MQL4  сделать так , что бы функция Print() печаталась в Журнале Тестера МТ-4 только 1 раз и только с последним значением часа. Вот простой код.

int g;
void OnTick()
{
if (Hour()>g)
{
Print("------------------------------------=",Hour());
g=Hour();
}
}

Print() печатается в Журнале МТ- 4 на каждом часе

2020.06.24 15:54:12.250 2010.01.04 06:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=6
2020.06.24 15:54:12.249 2010.01.04 05:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=5
2020.06.24 15:54:12.249 2010.01.04 04:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=4
2020.06.24 15:54:12.248 2010.01.04 03:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=3
2020.06.24 15:54:12.247 2010.01.04 02:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=2
2020.06.24 15:54:12.247 2010.01.04 01:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=1
2020.06.24 15:54:12.214 2010.01.01 00:00:00  ОПТИМ КОДА test started
2020.06.24 15:54:12.196 TestGenerator: spread set to 2
2020.06.24 15:54:09.838 Expert ОПТИМ КОДА EURUSD,M1: loaded successfully
2020.06.24 15:54:09.827 Expert ОПТИМ КОДА EURUSD,M1: removed

А мне нужно что бы  Print() печатался в Журнале МТ-4 только один раз с последним значением часа. Логично было бы после появления в Журнале последней функции Print() удалять предпоследнюю, то есть предыдущую запись Print(). Я знаю как удалить ордер, графический объект. Но как удалить из Журнала запись Print() пока не знаю.

Спасибо за помощь

Документация по MQL5: Общие функции / Print
Документация по MQL5: Общие функции / Print
  • www.mql5.com
Данные типа double выводятся с точностью до 16 десятичных цифр после точки, при этом данные могут выводиться либо в традиционном либо в научном формате – в зависимости от того, как запись будет наиболее компактна. Данные типа float выводятся с 5 десятичными цифрами после точки. Для вывода вещественных чисел с другой точностью либо в явно...
 
Valeriy Yastremskiy:
Нет. Тик не обрывает эксперт. Если эксперт работает, пришедшие тики пропускаются. Когда закончит, в режиме ожидания следующий тик запустит его заново.
По вашей логике выходит, что программа никогда не пойдёт на функцию установки лота. Но так написана программа от официального издателя. Я написал порядок функций в предыдущих постах.
 
Я еще раз спрошу, растёкся мыслями с предыдущими комментаторами. В официальном примере предложено считать объём лотовый в теле программы, но разве не логично вычислять его на каждом тике? Для чего написано в теле программы?
 
Не могу установить советника. Что делать? кнопка установить не нажимается. А точнее при нажатии нечего не происходит
 
Сергей Таболин:

Калаш или Максим? ))))))))))))


Вопрос:

Есть скрипт. Запустить его из советника стандартными средствами нельзя. Значит нужно его добавить в советник как функцию. Но уж очень не хочется при правке скрипта делать такие же правки в советнике. Как решить? Инклюдниками?

Классами) и объектами
Или вставкой)
 
Ivan_Invanov:
По вашей логике выходит, что программа никогда не пойдёт на функцию установки лота. Но так написана программа от официального издателя. Я написал порядок функций в предыдущих постах.
Инициализация и деиницидизация работают один раз. В начале и в конце. 
 
Ivan_Invanov:
Вообще судя по вашему ответу, Вы сами не очень понимаете, как работает программа. Раз кажется, что это глупый вопрос. Да как и предыдущий комментатор думает, что она останавливается. Просто по опыту программирования в других языках думаю, что она выполняет в цикле своё тело, и когда событие приходит, она в него ныряет. Если программа выполняет в цикле своё тело, то это объясняет, почему так написана программа.

Судя по Вашему комменту - это и Вы не понимаете. (((

Тут не "другие языки", тут MQL !!!

Совет и Вам - разберитесь как именно работает эта связка.

Все другие функции - это производные.

Разбирайтесь.

 
Ivan_Invanov:
Да, не понимаю, вот я и спрашиваю. Я знаю, что ontick это событие, только мне непонятно, куда потом идёт советник. Он пойдёт потом по телу программы и выполнится рассчёт объема лота? или не пойдёт? почему тогда так написан советник от официального издателя.

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

 
Ivan_Invanov:
Да, не понимаю, вот я и спрашиваю. Я знаю, что ontick это событие, только мне непонятно, куда потом идёт советник. Он пойдёт потом по телу программы и выполнится рассчёт объема лота? или не пойдёт? почему тогда так написан советник от официального издателя.

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