Обновление платформы MetaTrader 4 билд 625: Журналы в MetaTrader Market и новый MetaViewer - страница 52

 
agvozdezkiy:

Вот оно что! То есть перед тем как сохранять шаблон нужно почистить список объектов? Или можно как то объяснить МТ, что не все "рисовалки" нужно сохранять?(((((
Уважаемые разработчики, прикрутите пожалуйста свойство к графическим объектам, которое отвечало бы за сохраняемость их в шаблонах и профилях.
 


Ну это точно глюк. Если двойным щелчком во вкладке "События" настроек терминала выделить самое верхнее действие (как на рисунке) и прокрутить вверх-вниз скроллер, то выделенная строчка размножится. То же будет, если это проделать с крайней нижней строчкой. А еще непонятно, почему в этой вкладке нельзя услышать настраиваемые звуки.

 
agvozdezkiy:

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

И почему вы решили, что они настраиваемые?
 
agvozdezkiy:

Вот оно что! То есть перед тем как сохранять шаблон нужно почистить список объектов? Или можно как то объяснить МТ, что не все "рисовалки" нужно сохранять?(((((

Да просто у вас код написан неправильно. Вы же при каждом вызове OnCalculate пытаетесь нарисовать объект, который можно нарисовать только один раз! Рисуйте его в OnInit, а в OnCalculate меняйте его координаты, если он должен постоянно указывать на хай последнего бара.
 
simpleton:

Но, если очень хочется, чтобы проверять не надо было, можно свои функции-обёртки создать на основе "системных", например:

И вызывать свои функции-обёртки, основная цель которых - "надурить" компилятор, чтобы он "думал", что там, якобы, что-то действительно проверяется.

Можно ещё проще. Вместо

OrderModify(...);

писать

bool bResult = OrderModify(...);

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

Но не проверять результат торговых функций - это действительно странный стиль кодирования.

 

Нет такой функции. Вычисляйте после каждой сделки примерное время следующей, раз его можно вычислить заранее, и сохраняйте его в глобальной переменной NextTradeTime (имеется в виду глобальная переменная советника, не Метатрейдера). А в начале функции старт - вот так:

int start()
{
   if(TimeCurrent() < NextTradeTime)
      return(0);

   ...
}
 

MT4 (build 625) + ME (build 914)

При пошаговом создании скрипта с помощью мастера из MetaEditor-a не создаются предопределенные функции OnInit и OnDeinit.

При пошаговом создании индикатора не создается ф-ция OnDeinit.

Для эксперта все ф-ции создаются нормально.

Надо или пофиксить создание OnInit/OnDeinit по умолчанию или добавить их в опции мастера при пошаговом создании...

 
simpleton:

Чтобы узнать, успешно отработала функция или нет. Если это - неважно, то, наверное, и неважно, была вообще вызвана функция или нет. То есть, можно выкинуть весь код и не вызывать его, - ведь, не важно же, есть результат от его работы или нет?

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

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

Во "взрослых" языках для избавления от подобных вещей обычно достаточно выполнить приведение к типу void, но компилятор MQL4 упорно сопротивляется таким попыткам.

Но, если очень хочется, чтобы проверять не надо было, можно свои функции-обёртки создать на основе "системных", например:

И вызывать свои функции-обёртки, основная цель которых - "надурить" компилятор, чтобы он "думал", что там, якобы, что-то действительно проверяется.

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

 
prorab:
И почему вы решили, что они настраиваемые?

Потому, что можно взять и настроить звуковую схему поменяв штатные звуки событий на свои.)))))
 

А почему я не вижу предупреждений о непроверенности результата функции?

#property strict есть.

MT4-628, ME5-915.