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

 
Renat:
Инструменты у клиента в маркетвотче активны?
Уже не узнаем наверное. Спасибо. После переустановки терминала всё заработало.
 
Что-то неправильно читает бинарные файлы в строку

Если Вы сами пользуетесь таким врайтером, после которого ни комменты, ни принты не печатаются, то понятно почему и графики глючат и прочее.
string txt="Test";
  
   int handle=FileOpen("Test.dat",FILE_BIN|FILE_WRITE|FILE_ANSI);
   if (handle<1) {Comment("FileNotOpen!"); return;}
   
   FileWriteString(handle,txt,12);
   
   FileClose(handle);
   
   handle=FileOpen("Test.dat",FILE_BIN|FILE_READ|FILE_ANSI);
   
   string txt2=FileReadString(handle,12); 
   
   int len=StringLen(txt2);
   
   Print("len=",len);
   
   Print(txt2,"  len=",len);
   
   FileClose(handle);
   
   return;
Принтует:
2014.02.10 21:26:48.736 Test_FileWrite CHFJPY,M1: Test
2014.02.10 21:26:48.736 Test_FileWrite CHFJPY,M1: len=12

То есть в первой строке не принтует Test len=12;
И несмотря на то что в бинарнике пишет Test NUL NUL NUL NUL NUL NUL NUL NUL, строку читает длинной в 12 байтов, а должна быть 4. Раньше в старых билдах читал только 4 байта, и никаках пропаданий текста после такой строки не было.

P.S. У меня сделана DLL-ка которая читает посредством fread() из "stdio.h" - так с ней читается как положено 4 байта, и длина строки 4 байта, и никаких сбоев ни в комментах, ни в Print-ах не вызывает.

   handle=af_FileOpenW("Test2.dat","wb");
   
   af_FileWriteStringW(handle,txt,12);
   
   af_FileClose(handle);
   
   handle=af_FileOpenW("Test2.dat","rb");
   
   string txt3=af_FileReadStringW(handle,12);
   
   af_FileClose(handle);
   
   len=StringLen(txt3);
   
   Print("len=",len);
   
   Print(txt3,"  len=",len);
И принтует:
2014.02.11 04:10:49.685 Test_FileWrite CHFJPY,M1: Test len=4
2014.02.11 04:10:49.685 Test_FileWrite CHFJPY,M1: len=4

То есть все как положено.

Я не программист и может сделал непрофессионально, и можно было бы и лучше, но зато работает как нужно.
//---------------------------------------------------------------------------
_DLLAPI wchar_t* af_FileReadStringW(int handle, int size)
{
        char ch[256] = { 0 };
        fread(ch, size, 1, (FILE *)handle);

        size_t len = strlen(ch) + 1;
        wchar_t *wch = new wchar_t[len];
        size_t wlen = 0;
        mbstowcs_s(&wlen, wch, len, ch, _TRUNCATE);

        return (wch);
}
//---------------------------------------------------------------------------
_DLLAPI void af_FileWriteStringW(int handle, wchar_t *wch, int size)
{
        size_t wlen = wcslen(wch) + 1;
        size_t size2 = wlen * 2;
        char *ch = new char[size2];
        size_t len2 = 0;
        wcstombs_s(&len2, ch, size2, wch, _TRUNCATE);

        int len = strlen(ch); if (len > size) len = size;
        int dlen = size - len;
        fwrite(ch, len, 1, (FILE *)handle);
        if (dlen > 0)
        {
                char x = NULL; for (int i = 0; i < dlen; i++) fwrite(&x, 1, 1, (FILE *)handle);
        }
}
//---------------------------------------------------------------------------
Это я на всякий случай привел как у меня в ДЛЛ-ке сделано.

Очень прошу привести чтение и запись строк как положено, чтобы не глючило бы постоянно.

 
 
есть проблема!
После переинсталляции ОС и установки MT4 (билд 604) вставляю в пользовательские индикаторы те, которыми пользовался и...... часть из низ работает без проблем, а часть почему-то нерабочая.
Показывает индикатор в списке, но не более. Присоединять к графику невозможно.
Может быть кто-то сталкивался с такой проблемой??

Буду признателен если поможете разобраться
 
evillive:
А подробнее? Те что у меня есть, включая те что из поставки с открытым кодом, а также скачанные с кодобазы, в визуальном режиме тестера отрисовываются также как и в реальном времени.


Я ранее писал уже. Перекомпилированный под новую версию кастомный индикатор, и эксперт. Темплейт Tester. Открываю терминал, делаю в тестере 1 прогон. Нажимаю - "Открыть график", - график открывается и индикатор отрисовывается. Меняю какие-нибудь параметры в эксперте, делаю новый прогон, нажимаю "открыть график", - пусто индикатор не отрисовывается. И дальше сколько не прогоняй - отрисовки больше нету. А в режиме Визуализации вообще ни отрисовывается ни при каких обстоятельствах. Система Windows 8.1 X 64, терминал открывается в режиме /portable, билд 604.
P.S. На ВПС - остался еще 509 билд - так вот он прекрасно все отрисовывает в любых режимах и повторах.
 
serg_23456:
есть проблема!
После переинсталляции ОС и установки MT4 (билд 604) вставляю в пользовательские индикаторы те, которыми пользовался и...... часть из низ работает без проблем, а часть почему-то нерабочая.
Показывает индикатор в списке, но не более. Присоединять к графику невозможно.
Может быть кто-то сталкивался с такой проблемой??

Буду признателен если поможете разобраться

В журнале что пишет?
 
ANG3110:

Я ранее писал уже. Перекомпилированный под новую версию кастомный индикатор, и эксперт. Темплейт Tester. Открываю терминал, делаю в тестере 1 прогон. Нажимаю - "Открыть график", - график открывается и индикатор отрисовывается. Меняю какие-нибудь параметры в эксперте, делаю новый прогон, нажимаю "открыть график", - пусто индикатор не отрисовывается. И дальше сколько не прогоняй - отрисовки больше нету. А в режиме Визуализации вообще ни отрисовывается ни при каких обстоятельствах. Система Windows 8.1 X 64, терминал открывается в режиме /portable, билд 604.
P.S. На ВПС - остался еще 509 билд - так вот он прекрасно все отрисовывает в любых режимах и повторах.
А без тимплейта, просто пустой советник в визуальном режиме прогнать, а во время прогона поставить на паузу и кинуть на график тот индикатор пробовали?
 
VDev:

Спасибо кеп, я не спрашивал, как открыть файл)))) Я спрашивал, как отредактировать ШАБЛОН эксперта, скрипта и т.д. Вот раньше были такие шаблоны, я их дорабатывал под себя, привожу содержимое \experts\templates\Expert.mqt из старой версии МТ4

Где такие шаблоны лежат сейчас?

Не знаю, где твои! Но когда создаёшь новый файл, всегда открывается шаблон, смотря что выбираешь. Вчера только закончил новую версию, сегодня поставил на Демо. У меня свой "шаблон", просто скопироваю мой эксперт и вношу изменения. Так что, шаблоны там же, где были, слева первая кнопка с плюсом "Создать"!
 
evillive:
А без тимплейта, просто пустой советник в визуальном режиме прогнать, а во время прогона поставить на паузу и кинуть на график тот индикатор пробовали?

Если прогоняешь в Визуализационном режиме и накидываешь индикатор, то естественно он отрисовывается. Но речь то идет о другом. Да не работает он у меня как надо. Не парьтесь. Пустое это.
 
serg_23456:
есть проблема!
После переинсталляции ОС и установки MT4 (билд 604) вставляю в пользовательские индикаторы те, которыми пользовался и...... часть из низ работает без проблем, а часть почему-то нерабочая.
Показывает индикатор в списке, но не более. Присоединять к графику невозможно.
Может быть кто-то сталкивался с такой проблемой??

Буду признателен если поможете разобраться

Добрый день. Приложите код вашего индикатора, который перестал работать в 604 билде. Какая у вас ос, битность ? Спасибо.
 
alexloz:

Добрый день. Приложите код вашего индикатора, который перестал работать в 604 билде. Какая у вас ос, битность ? Спасибо.

Коды индикаторов, про которые в предыдущем посту, необходимо править под новую версию.

Этого делать никто не будет.

Это различные версии индикатора ZUP. Сейчас в последних версиях примерно 18 000 строк кода.

У serg_23456, похоже, скомпилированные коды в 509 версии не работают в 604 версии.
==============

В дополнение.

В связи с изменением размера данных времени в индикаторах, даже если исправить выдаваемые компилятором 604 версии ошибки, могут неправильно отрабатываться различные графическме объекты. То есть придется проводить достаточно глубокую правку кода. Индикаторов различных версий используется огромное количество. Если будет отключена возможность работы индикаторов, скомпилированных в 509 версии, как вчера заявил Ренат ( https://www.mql5.com/ru/forum/149399/page13#906715 ), то огромное количество индикаторов просто перестанет работать. Самостоятельно мало кто сможет исправить даже те версии, код которых находится в свободном доступе. По крайней мере были попытки сторонними разработчиками перевести на mql5. Не получилось. Разобраться со сложной геометрией (геометрия - раздел математики) не каждый программист сможет. Для новых версий (сейчас 145 версия) открытого кода нет, в частности, из-за того, что было объявлено, что программы, скомпилированные в 509 версии будут работоспособными.

Тут были сообщения о том, что ранее было напрограммировано много мусора, то есть много программ, в которых что-то неправильно спрограммировано. И с этим необходимо бороться. С такими утверждениями можно поспорить. Все допустили разработчики метатрейдера. Сколько было нареканий, ну например, про неправильную отработку логических операций в МТ4. Сначала в сложных выражениях отрабатывались операции логического сложения, а потом умножения. И такого можно наковырять множество. Раз уж разработчики допустили множество неверных ходов при разработке программ с помощью mql4, то нечего ругать тех программистов, которые использовали эти допуски в своих разработках. Сторонние разработчики не виноваты. Тем более, что зачастую много "тонких" моментов в документации на языки mql* просто не найдешь. Необходимо "шарить" по форумам, чтобы добиться знаний тонкостей языка. А также тонкостей работы терминала. А это не есть гуд. Все должно быть описано в документации.

Причина обращения: