Ошибки, баги, вопросы - страница 2574

 
Aleksei Beliakov:
Банально если в ontick распечатать результаты этих функций то это для времени 1970.01.01 для цены 0
Раньше было время бара или цена.
Тоесть сейчас так

Может в вашем компе тараканы? У меня в билде 1220 этот код

 Print("iHigh ", iHigh(NULL, PERIOD_W1, 0));
 Print("iTime ", iTime(NULL, PERIOD_W1, 0));

распечатывает

2019.09.23 09:41:27.560 00 EURUSD,M5: iTime 2019.09.22 00:00:00
2019.09.23 09:41:27.560 00 EURUSD,M5: iHigh 1.10245
 
Aleksei Beliakov:
Банально если в ontick распечатать результаты этих функций то это для времени 1970.01.01 для цены 0
Раньше было время бара или цена.
Тоесть сейчас так

Код ошибки какой?

Какие параметры тестирования?

Данные по неделькам и месяцовкам подгружены? Сколько их всего есть?

 
Slava:

Код ошибки какой?

Какие параметры тестирования?

Данные по неделькам и месяцовкам подгружены? Сколько их всего есть?

я перепроверил и сейчас все работает.

историю я загружал.

Спасибо.

 
Наверняка уже поднимали эту тему: Нужно сделать возможным сосуществования двух разных верий МТ5 на одном десктопе (отключитять автообновление и возможность отката). Или хотя бы бету и релиз. Или это возможно (без виртуализации).
 

Наблюдение за памятью.

У меня в коде около тысячи раз выполняется CopyRates.

Затем массив котировок каким-то образом обрабатывается, и в конце этого я вызываю:

         ArrayRemove(МассивКотировок,0,РазмерМассива);

         ArrayFree(МассивКотировок);

         ArrayResize(МассивКотировок,0);

         ArrayFree(МассивКотировок);

         ZeroMemory(МассивКотировок);

(просто эксперементировал по-разному)

Результат - память все равно геометрически растет и забивается, вместе с ней и нагрузка на процессоры - процессор на i7 забивается на 80% в совокупности по всем логическим ядрам, память больше Гига.

Пока что удалось ограничить потребление ресурсов с помощью сторонней программы - процессор не больше 15% и память не больше Гига.

Вопрос - это баг или особенность платформы?

 
Можно ли жёстко выбрать кодировку исходников? Я знаю, что когда символы лишь ascii, то она однобайтовая, иначе utf-16. Можно ли utf-8?
 

Кстати, странное поведение метаэдитора, желательно исправить:

fn_call();/////////////////////

двойной клик по слешам выделяет слеши с предыдущим символом (если там не цифра/буква).

Почему неудобно? Сделали временную правку в коде, выделили место таким образом, далее нужно быстро выделить и удалить одни слеши.

 

Всё же вернусь к вопросу передачи из dll строк, wchar_t * как указатель.
Из статьи Рената по работе со строками в dll понятно, что в mql тип string принимает из внешней dll указатель на строку wchar_t *.
То есть в dll  отправляем wchar_t *, в mql принимаем как string &.
Но почему то Сишная функция 

wcscpy_s(wchar_t *dest, rsize_t dest_size, const wchar_t *src);

работает не корректно, т.е. указатель на строку wchar_t * dest, в mql принимается , но с перебоями, то поступает то нет.
Иногда падает терминал, программа завершена.

С функцией

wcscpy(wchar_t *dest,  const wchar_t *src);

терминал не падает, но так же строки поступают с перебоями.
Прошу поправить в ближайшем билде.

ЗЫ. Забыл уточнить, что указатель  wchar_t *  передаётся из другого потока.
т.е. функция wcscpy_s или wcscpy, вызываются в отдельном потоке.

 
Roman:

Всё же вернусь к вопросу передачи из dll строк, wichar_t * как указатель.
Из статьи Рената по работе со строками в dll понятно, что в mql тип string принимает из внешней dll указатель на строку wichar_t *.
То есть в dll  отправляем wichar_t *, в mql принимаем как string &.
Но почему то Сишная функция 

работает не корректно, т.е. указатель на строку wichar_t * dest, в mql принимается , но с перебоями, то поступает то нет.
Иногда падает терминал, программа завершена.

С функцией

терминал не падает, но так же строки поступают с перебоями.
Прошу поправить в ближайшем билде.

ЗЫ. Забыл уточнить, что указатель  wichar_t *  передаётся из другого потока.
т.е. функция wcscpy_s или wcscpy, вызываются в отдельном потоке.

А память под string dest, кто выделять будет?
 
Vladimir Simakov:
А память под string dest, кто выделять будет?

Память выделена в mql коде как

#import "Dll.dll"
   void Func(string task, string & out);
#import 

string оut;
StringInit(out, 165, 32);

out и передаётся как указатель на выделенную память, так как string в mql, это wchar_t* в dll

Func("Task", out);
Причина обращения: