Скачать MetaTrader 5

Нужна ли функция по запрету печати сообщений в журнал эксперта?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Опубликуй статью. Миллионы трейдеров ждут хороших идей!
-Aleks-
7004
-Aleks- 2015.11.20 09:47 
  • 26%
    (20)
  • 74%
    (57)
Всего проголосовало: 76
-Aleks-
7004
-Aleks- 2015.11.20 09:47  
При отладке советника приходится ставить много Print'ов , которые при обычной эксплуатации теряют свой смысл.
Моё предложение - сделать функции по аналогии с Print и Printf , исполнение которых будут блокироваться с помощью другой функции в коде - допустим Оffрrint.
Это решение позволит не ставить ifы у принтов, что уменьшет потребление ресурсов.
Конечно, принты можно убрать, подумав, что код идеален, но как правило появляются новые идеи и требуется продолжить работу над кодом или поправить выявленные баги.
Как альтернатива в функцию Print и Printf можно добавить командную часть, сообщающую префикс (кодировать тип сообщения) и уже по этому префиксу отключать вывод на печать.
Andrei Fandeev
18179
Andrei Fandeev 2015.11.20 12:17  

А что мешает сделать свою функцию f_Print в которой и будет проверка на IF ?

Ihor Herasko
9047
Ihor Herasko 2015.11.20 12:37  
В таких случаях заводится отдельный настроечный параметр эксперта/индикатора, которым пользователь может регулировать вывод отладочных сообщений в журнал.
-Aleks-
7004
-Aleks- 2015.11.20 13:27  
Andrei Fandeev:

А что мешает сделать свою функцию f_Print в которой и будет проверка на IF ?

Интересное предложение, т.е. передавать в функцию то, что нужно печатать, а в самой функции сделать проверку на разрешение печати?

Но как это реализовать, если не известно сколько параметров(переменных) будет передано в эту функцию?


Ihor Herasko:
В таких случаях заводится отдельный настроечный параметр эксперта/индикатора, которым пользователь может регулировать вывод отладочных сообщений в журнал.
Это понятно, но просто не удобно ставить ifы перед Print .
Andrei Fandeev
18179
Andrei Fandeev 2015.11.20 13:42  
-Aleks-:

Но как это реализовать, если не известно сколько параметров(переменных) будет передано в эту функцию?

Передайте туда только текст

А в функции только проверка НадоПечатать/НеНадоПечатать

В таком случае не придётся затирать IFы по всему телу кода, а только выключить параметр разрешения печати

Alexandr Bryzgalov
27564
Alexandr Bryzgalov 2015.11.20 13:57  
-Aleks-:


Это понятно, но просто не удобно ставить ifы перед Print .

теперь ифы не обязательны, теперь обязательны "_" перед Print )


extern bool UsePrint=true
void OnTick()
{
   _Print("Привет, Мир!")
   return(0);
}
void _Print(string stroka)
{
   if(UsePrint)Print(stroka);
   return;
}
Andrei Fandeev
18179
Andrei Fandeev 2015.11.20 14:07  
Alexandr Bryzgalov:

Саня, Саня ))))  Ошибочка вкралась )))

КопиПастить переменные надёжнее

Alexandr Bryzgalov
27564
Alexandr Bryzgalov 2015.11.20 14:12  
Andrei Fandeev:

Саня, Саня ))))  Ошибочка вкралась )))

КопиПастить переменные надёжнее

да это очепятка )

поправил

Alexey Volchanskiy
16675
Alexey Volchanskiy 2015.11.20 14:16  
Alexandr Bryzgalov:
теперь ифы не обязательны, теперь обязательны "_" перед Print )


Ну и что? Осталась проблема с формированием строки.

Проголосовал Нет, так как нужна не функция, а дефайн условной компиляции, встроенный в Print на стороне разработчиков MQL. 

Andrei Fandeev
18179
Andrei Fandeev 2015.11.20 14:18  
Alexandr Bryzgalov:
а return(0);  в void  ?  )))
12345
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий