Выпущен MetaTrader 4 Client Terminal build 600 с обновленным языком MQL4 и Маркетом приложений - страница 11

 

При изменении входных параметров индикатора (открыли окошко, поменяли параметры, нажали ОК; запись в логе - Uninit Reason 5) не происходит переинициализации индикаторных буферов. Раньше они по умолчанию заполнялись EMPTY_VALUE.

Вопросы:

а) Так и было задумано?

б) Т.е. теперь необходимо самостоятельно переинициализировать буферы, скажем, в OnInit() или OnDeinit()? а вот и не помогает, все равно старые значения (рассчитанные при предыдущем запуске индикатора) не пропадают.

 

Спасибо. Попробую сейчас.

mql5:
Используйте следующую структуру при компиляции DLL:
#pragma pack(push,1)
struct MqlString
  {
   int      size;
   LPWSTR   buffer;
   int      reserved;
  };
#pragma pack(pop)

После этого массивы строк правильно стали обрабатываться в DLL.

В студии сделал так:

  typedef struct _MQLSTRA
   {
    int   nLength;
    LPSTR szString;
   } MQLSTRA, *PMQLSTRA;

  typedef struct _MQLSTRW
   {
    int    nLength;
    LPWSTR szString;
    int    nReserved;
   } MQLSTRW, *PMQLSTRW;

  #if defined(UNICODE) || defined(_UNICODE)
   typedef MQLSTRW   MQLSTR, *PMQLSTR;
  #else
   typedef MQLSTRA   MQLSTR, *PMQLSTR;
  #endif

Не совсем правильно. Тип этой структуры не должен зависить от кодировки проекта. Но лучше так, чем никак :-)

Надеюсь, в недалёком будущем совсем забудем про 509 и ANSI.

 

Сижу вот, переписываю бибилиотеки.

Судя по открывшемуся объему работы, пара-тройка бессонных ночей обеспечена)) Главные хронофаги - изменения, связанные с областью видимости переменных и передачей массивов только по ссылке.

И еще... ну оооочень много варнингов. Кажется, об этом уже кто-то писал. Может, их бы можно как-то отключить в настройках? Особенно раздражает "Declaration of %varname% hides global declaration in %filename% at line %nn%", по-моему, совершенно бесполезная вещь.

 
Renat:

В Линуксе все работает и обновляется верно с сохранением всех данных. Мы многое сделали ради нормальной работы торговой платформы под Wine (Linux и Mac).

Вот результат апгрейда в Ubuntu 13.10 Wine 1.7.10 до 600 билда:

  • файлы из /experts смигрировали в /MQL4 + расширились новой стандартной библиотекой классов и примеров MQL4 (миграция умная, если в /experts ничего кроме штатных примеров не было, то каталог /experts удаляется) - нет
  • все файлы в /MQL4 автоматически скомпилировались и нормально доступны в дереве навигатора - нет
  • рабочий каталог остался C:\Program Files\MetaTrader 4, так как в Wine нет UAC и нет ограничений прав (терминал всегда явно проверяет права записи и если все ок, то остается у себя в локальном каталоге) - да
  • списки сохраненных аккаунтов и серверов сохранились как есть - ничего не потерялось (там теряться нечему - форматы даже не менялись) - нет
  • редактор полноценно работает, включая компиляцию и закачку последних версий документации -да

К сожалению, alsu не привел никаких доказательств своим словам.

К сожалению, доказывать нечем, все стерто))) Это шутка. Папка MQL4 создалась, и файлы в ней есть - но только те, что идут в поставке терминала. Из улик остался только лог-файл, прикрепляю его сюда.

Там есть фраза "LiveUpdate: updater - clean obsolete data", так возможно апдейтер посчитал мои программы устаревшими)))

Терминал отработал обновление и перезапустился абсолютно голый, без профилей/аккаунтов/файлов - это факт. Причины могут быть абсолютно разные, сделать вывод сейчас крайне сложно. В ближайшие дни попробую воспроизвести ситуацию на другой машине, если выйдет, выложу результаты. Система была у меня та же, то и у вас, wine настроен как Windows2008 R2 (вполне возможно, причина как раз в этом?)

Файлы:
 
а когда ожидать у брокеров?
 
Помогите, как открыть несколько окон терминала МТ4, после обновления не получается кроме одного.
 
alsu:

При изменении входных параметров индикатора (открыли окошко, поменяли параметры, нажали ОК; запись в логе - Uninit Reason 5) не происходит переинициализации индикаторных буферов. Раньше они по умолчанию заполнялись EMPTY_VALUE.

Вопросы:

а) Так и было задумано?

б) Т.е. теперь необходимо самостоятельно переинициализировать буферы, скажем, в OnInit() или OnDeinit()? а вот и не помогает, все равно старые значения (рассчитанные при предыдущем запуске индикатора) не пропадают.


Да, нужно инициализироватьв ините.
 

С историей всё в порядке. Преобразовал.

ME после закрытия окна долго, минут 5-10, висит в процессах. Последнюю конфигурацию не запоминает.

В тестовом каталоге от Метаквотов работает правильно с самого начала.

 
На вин7 максималной терминалы версий 500 и 509 обновились до 600. Исправно работали часов так 10, исправно перезапускались.
Потом при новом запуске дружно стали работать в предыдущих версиях как и были.
Все терминалы были установлены изначально на диск отличный от с: методом переноса с другого компа

577 терминал изначально обновляться не захотел. ставился на диск из инстолятора и копии переносились с него.


на винХР 3сп терминал с 509 обновился до 600, пока работает, но удалил всю историю по инструментам открытым в окнах терминала. История по не открытым инструментам осталась
пишет так:

MT bild 509 started...
HistoryBase: invalid database header for 'EURO...'
эксперты успешно загружены
conect failed...
MT bild 509 stopped
MT bild 600 started...
эксперты успешно загружены
обновите экспловер :))

так что в старых версиях винды историю трет.
 

Еще одна проблема всплыла: под вайном что-то плоховато работает hh.exe (точнее, hhctrl.ocx), причем как при вызове из терминала через F1, так и из командной строки. Говорит Assertion failed и вылетает, а если запущен в процессе терминала или едитора - то вместе с ним:(

dibdrv/graphics.c:714: cache_glyph_bitmap: Проверочное утверждение «ret <= size» не выполнено

Я так понимаю, эта функция рендерит глифики в тексте справки, она и глючит.