Новая версия MetaTrader 4 Client Terminal build 406 - страница 4

 
#import "msvcrt40.dll"
int feof(int stream);
int fclose(int stream);
int fopen(string filename, string mode);
string fgets(string txt, int n, int stream );

#import

перестал работать импорт из dll

function 'feof' call from dll 'msvcrt40.dll' critical error

вчера все работало .

функции в dll есть.

машина с WinXP SP3

народ где скачать 402.

 
похоже дело не в терминале. что то в винде произошло и старые эти функции перестали работать :-(
 
Renat:

Мы полностью переходим на веб-инсталляторы и больше не будем предоставлять полные версии. Также с конца осени будет полностью прекращена поддержка терминалов ниже 403 билда.

Рекомендую всем пользователям подумать над обновлениями - мы реально провели большую накопительную работу над ошибками.

Ренат, что значит прекращение поддержки? Это отказ в исправлении ошибок или билды ниже 403 не смогут подключиться к серверу?
 
Zhunko:
Ренат, что значит прекращение поддержки? Это отказ в исправлении ошибок или билды ниже 403 не смогут подключиться к серверу?

Не смогут подключиться.

Мы планомерно убираем старые билды из работы, поэтому рекомендую апгрейдиться заранее.

 

Давно этим занимаюсь, но только сегодня заметил, что этот скрипт:

#include <WinUser32.mqh>
//+-------------------------------------------------------------------+
//| script program start function                                     |
//+-------------------------------------------------------------------+
void start()
 {
  while (!IsStopped())
   {
    PostMessageA(WindowHandle(Symbol(), Period()), WM_COMMAND, 33324, 0);   // Эммулируем тики в текущем окне.
    Sleep(500);
   }
 }

обновляет все графики, почти все. Есть графики, которые он не трогает.

Вопросы:

1. Почему все графики? Это же сообщение только одному графику?!

2. Если уж так сделано, то почему выборочно?

3. Может исправить это недоразумение? Сделать только для одного графика?

 

1. Что-то с тестером. Советник тестируется-тестируется, а потом бах! -- в какой-то момент запуска нового тестирования (не меняя при этом ни дат, ни ещё чего -- копание идёт исключительно в кишочках советника; возврат к первоначальному, гарантированно рабочему варианту не помогает; эталон тоже не работает) просто прогресс-бар внизу проскакивает за секунду и всё. Перезапуск не помогает.

2. Стали "подмораживаться" эксперты на счетах. Т.е. просто прекращают торговлю и продолжают улыбаться, хотя выводимая информация тоже тикает как надо. Подозреваю родство ошибки с тестером.

 
Swetten:

1. Что-то с тестером. Советник тестируется-тестируется, а потом бах! -- в какой-то момент запуска нового тестирования (не меняя при этом ни дат, ни ещё чего -- копание идёт исключительно в кишочках советника; возврат к первоначальному, гарантированно рабочему варианту не помогает; эталон тоже не работает) просто прогресс-бар внизу проскакивает за секунду и всё. Перезапуск не помогает.

2. Стали "подмораживаться" эксперты на счетах. Т.е. просто прекращают торговлю и продолжают улыбаться, хотя выводимая информация тоже тикает как надо. Подозреваю родство ошибки с тестером.


Стандартный вопрос: "Что пишется в журнале?"
 
Ничего.
 

Сравнил по скорости загрузки своего эксперта на 406 относительно 225. Существенно быстрее грузится на 406. Раза в два.

И всё же, проблема повторной компиляции большого кода осталась. Не компилируется с первого раза мой советник. Серенький в списке. И только со второго или третьего раза он становится синим.

Этот эффект описывал в одной из своих тем.

 
Swetten:
Ничего.


Из собственного опыта:

1) Ситуация с улыбающимся советником-бездельником возникает в том случае, если в вызванной функции какой-либо библиотеки ".EX4" произошло деление на 0. Но в этом случае в журнал выводится соответствующее сообщение;

2) При записи в массив произошёл выход за его пределы.

3) На какой-то из версий терминала столкнулся с отказом в работе индикатора. Устал проверять, всё правильно, а индикатор не работает. Вылечилось после того как в функцию init() добавил вызов IndicatorBuffers(). До того случая IndicatorBuffers() использовал только в том случае, если под расчет требовались дополнительные буферы.

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