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

 

Порекомендуйте по наглядности MT4 open source скрипты для удобного отображения истории торгов.

MT5-Тестер, к сожалению, показывает неправильно историю торговли на графиках.

 
Приветствую, скажите пожалуйста, почему не могу изменить название сигнала, как продавец, в начтройках?
 
Sergey Dzyublik #:
Ввиду текущих работ по МЕ, прошу наконец-таки реализовать поддержку intellisense для namespace.
На текущий момент, с точки зрения UX(User Experience) использование namespace просто неюзабельно, необходимо на память запоминать названия десятка функций, ведь ни какая подсказка не всплывает.

В конечном итоге от namespace пришлось отказаться в пользу статических методов класса, где  intellisense работает на ура.
Единственный плюс namespace - это  "extension namespace definition", но и тут проще реализовывать отсутствующую возможность через include костыли, чем пользоваться namespace в MQL.



+1
 
Sergey Dzyublik #:
Bugs Mt5 (build 3291) Проблемы в инициализации статических переменных функции, когда та используется для инициализации другой статической переменной.
Пишешь return true, а код без твоего ведома инициализирует переменную как false.


Наличие проблемы зависит от типа статической переменной, используемой в функции. В основном проблема касается простых типов, включая string. Для последнего проблема может приводить к Memory Leak.
Такое впечатление, что в начале инициализации первой статической переменной выставляется некий флаг, который и не дает инициализироваться другим статическим переменным из функции.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2022.05.18 11:31

Интересно, что если сделать так, то возвращает true. Опасный баг.

static bool result = !::MQLInfoInteger(MQL_TESTER);

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

Поэтому  в mql инициалиция глобальной переменной (в т.ч. стат. члена класса) значением ф-ии, которое вычисляется с использованием локальной стат.переменной ф-ии, приводит к  UB.

Разработчики говорили, что менять это не собираются. Но, может быть, концепция поменялась, и можно ждать перемен?

 
ALEXEY NIKOLAEV #:
Добрый день, уважаемые разработчики и трейдеры! Кто-нибудь сталкивался с такой проблемой при тестировании мультивалютного советника
То есть, если запустить тестирование на всех парах, то тестор падает, а если отдельно "упавшую" пару, что все окей. В чем дело? 
История всех пар закачена с 2007 года, а тестирование начинается с 2008. 

При тестировании/оптимизации мультивалютных советников требуется очень много памяти, как оперативной, так и на диске. И чем больше период тестирования, тем больше требуется. Посмотрите, хватает ли её при запуске тестирования. Как заполняется жёсткий диск и оперативка. 

 
Andrey Kaunov #:

При тестировании/оптимизации мультивалютных советников требуется очень много памяти, как оперативной, так и на диске. И чем больше период тестирования, тем больше требуется. Посмотрите, хватает ли её при запуске тестирования. Как заполняется жёсткий диск и оперативка. 

Добрый день! Ну точно! Как оказалось, терминал загружает в папку temp данные, которые обрабатывает. Если внутри себя крутит-вертит 40 пар, по 5-6 таймфреймов с 2000 года до нашей эры, то папка переполняет диск. 
У меня заполнилась на 138 гигов и тестор отказался работать. Спасибо, что подсказали)  

 
mktr8591 #:

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

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

A100, 2018.12.03 12:25

void f()
{
static a;
}
static b;

на самом деле означает

void f()
{
}
static b;
static a;

первым делом отдельностоящие static, ну а в {} потом


 
0 errors, 0 warnings, 66366 msec elapsed
4 files total, 0 errors, 0 warnings

Просьба по CTRL+F7 выводить общее время компиляции - см. нижнюю строку.

 


Каким способом можно распечатать исходный текст MQL5 с нумерациями строк, а также распечатать отмеченный отрывок текста, тоже с номерами строк ?​

Это очень полезно и значительно ускоряет процесс разработки, когда исходный текст большой (более 2000 строк), а под рукой есть  отдельные участки исходного кода, как видно на МЕ.

Скриншот не в счет :)

 

Есть потребность преобразовать string в CharArray.

Не получается.(

#property strict
//+------------------------------------------------------------------+
void OnStart()
{
string var="Content-Type: multipart/form-data; boundary=524640ADF21333C4\r\n\r\n"+
"--524640ADF21333C4\r\nContent-Disposition: form-data; name=\"chat_id\"\r\n\r\n"+
"-1001395771446\r\n--524640ADF21333C4\r\n"+
"Content-Disposition: form-data; name=\"parse_mode\"\r\n\r\nHTML\r\n"+
"--524640ADF21333C4\r\nContent-Disposition: form-data; name=\"caption\"\r\n"+
"Content-Type: text/plain; charset=utf-8\r\n\r\n\r\n"+
"✅✅👉 1️⃣*️⃣1️⃣0️⃣3️⃣7️⃣4️⃣ BUY signal at Ask=1️⃣0️⃣0️⃣6️⃣9️⃣0️⃣3️⃣, Bid=1.06\r\n"+
"Date=2022.05.25 23:24\r\nSymbol=EURUSD\r\n--524640ADF21333C4\r\n"+
"Content-Disposition: form-data; name=\"photo\"; filename=\"lampash.png\"\r\n\r\n";
int len_var=StringLen(var);
uchar Array1[];
ResetLastError();
int arraySize=StringToCharArray(var,Array1,0,len_var,CP_UTF8);
Print ("String len: ",len_var," =>ArraySize=",arraySize);
if (arraySize<len_var) 
 {
 Print ("Error string to array! Error Code=",GetLastError());
 Print ("String:\"",var,"\"");
 }
}

Массив получается нулевoй длины:

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) String len: 550 =>ArraySize=0

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) Error string to array! Error Code=0

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) String:"Content-Type: multipart/form-data; boundary=524640ADF21333C4

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15)

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) --524640ADF21333C4

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) Content-Disposition: form-data; name="chat_id"

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15)

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) -1001395771446

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) --524640ADF21333C4

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) Content-Disposition: form-data; name="parse_mode"

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15)

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) HTML

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) --524640ADF21333C4

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) Content-Disposition: form-data; name="caption"

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) Content-Type: text/plain; charset=utf-8

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15)

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15)

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) ✅✅👉 1️⃣*️⃣1️⃣0️⃣3️⃣7️⃣4️⃣ BUY signal at Ask=1️⃣0️⃣0️⃣6️⃣9️⃣0️⃣3️⃣, Bid=1.06

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) Date=2022.05.25 23:24

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) Symbol=EURUSD

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) --524640ADF21333C4

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) Content-Disposition: form-data; name="photo"; filename="lampash.png"

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15)

2022.05.26 03:45:55.108 BUG (AUDCHF.ifx,M15) "



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