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

 
Sergey_Mechanic:
Не замечал раньше. Если изменить параметры эксперта, уже размещённого на графике, функция OnInit() вызывается два раза подряд. Так задумано или баг? Если в ней есть диалоговые окна (уведомляющие о неверных входных параметрах, например), они тоже выскакивают дважды. Это для тех, кто с первого раза не понял, да? :)
Загляните список индикаторов на графике. Похоже, два экземпляра одного индикатора висит.))
 

agvozdezkiy:

Все то же. И в аллертаках такая же ерунда: в теме русский текст нормально выглядет, в теле письма крокозяблами. Кто сталкивался? Это баг МТ или в чем-то ином проблема?

В юникоде дело. Метатрейдер теперь полностью на юникоде, тексты писем тоже юникодные.
 
agvozdezkiy:
Загляните список индикаторов на графике. Похоже, два экземпляра одного индикатора висит.))


Речь об эксперте, а не об индикаторе, их два быть не может. ) А может быть и в индикаторах то же самое, я не проверял.

Да вот, извольте убедиться сами:

#property strict

input int Parameter = 0;

int OnInit()
{
    MessageBox("In OnInit()");
    return(INIT_SUCCEEDED);
}

void OnTick()
{

}

Когда бросаете эксперт на график, всё в порядке: диалоговое окно появляется один раз. А если потом изменить параметр, появится два раза. Для пущей доходчивости. )

 
Sergey_Mechanic:


В юникоде дело. Метатрейдер теперь полностью на юникоде, тесты писем тоже юникодные.
Подробнее можно? Почему в теле письма русские буковки не работают, а в теме все Ок, при том что все в одном юникоде? И как заставить в письме отображаться русские буквы, если есть какое-то средство? Кстати в MT5 все работает нормально, скорее всего глюк!
 

Справка по MQL4 :

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

Файл открывается в папке клиентского терминала в подпапке MQL4\Files (или каталог_агента_тестирования\MQL4\Files в случае тестирования). Если среди флагов указан FILE_COMMON, то файл открывается в общей папке всех клиентских терминалов MetaTrader 4."

Совершенно непонятно, что имели ввиду разработчики по термином "каталог_агента_тестирования\MQL4\Files ", т.к. при тестировании файл открывается в подпапке tester\files. не имеющей ничего общего с продекларированным "каталог_агента_тестирования\MQL4\Files "

Уважаемые разработчики!

Внесите, пожалуйста, ясность в этот вопрос.

Ситуация совсем не пустяковая. У меня, например, в файле лежит информация, необходимая для работы советника и при его тестировании приходится создавать 2-ой экземпляр файла и помещать его в папку tester\files, что приводит к дублированию информации.

Использование флага FILE_COMMON решает вопрос только для расположения терминала на стационарных дисках компьютера.

Если же терминал расположен на съемном диске, то при подключении его к "чужому" компьютеру вопрос с общей папкой повисает.

 
agvozdezkiy:
Подробнее можно? Почему в теле письма русские буковки не работают, а в теме все Ок, при том что все в одном юникоде? И как заставить в письме отображаться русские буквы, если есть какое-то средство?

Кодировку страницы, в которой отображается письмо, переключите на юникод (UTF-8). Сейчас у себя проверил - Аутлук тоже кракозябры показывает, а если зайти в почту через веб-интерфейс, то Хром сам корректно определяет кодировку. Если у вас не определяет, укажите её вручную (ну или автоопределение установите).
 
Sergey_Mechanic:


Речь об эксперте, а не об индикаторе, их два быть не может. ) А может быть и в индикаторах то же самое, я не проверял.

Да вот, извольте убедиться сами:

Когда бросаете эксперт на график, всё в порядке: диалоговое окно появляется один раз. А если потом изменить параметр, появится два раза. Для пущей доходчивости. )


Спасибо за сообщение, ошибка исправлена. Дождитесь нового билда.
 
А компилятор уже что ли перестал предупреждать об отсутствии проверки значений функций?
 
alexey_pak:

Спасибо за сообщение, ошибка исправлена. Дождитесь нового билда.

Спасибо. Теперь танкистам придётся туго... )
 


FileWriteString

Записывает в файл типа BIN, CSV или TXT значение параметра типа string с текущего положения файлового указателя. При записи в файл типа CSV или TXT, если в строке присутствует символ '\n' (LF) без предшествующего символа '\r' (CR), то перед символом '\n' дописывается отсутствующий символ '\r'.

int FileWriteString(
int file_handle, // handle файла
const string text_string, // записываемая строка
int length=-1 // количество символов
);