Вы спрашивали: " Не могли бы вы поделиться со мной работоспособным скриптом MQL4? " А показываете окно из МТ5.
Мне действительно очень жаль. Я предполагал написать MQL5, но я написал MQL4.
Подскажите, пожалуйста, рабочий пример для MQL5? Это поможет. Собственно вопрос по MQL5. Я пытаюсь преобразовать несколько массивов из MQL4 в MQL5. Но они многомерны. Следовательно, у меня был этот запрос.
Мне действительно очень жаль. Я предполагал написать MQL5, но я написал MQL4.
Подскажите, пожалуйста, рабочий пример для MQL5? Это поможет. Собственно вопрос по MQL5. Я пытаюсь преобразовать несколько массивов из MQL4 в MQL5. Но они многомерны. Следовательно, у меня был этот запрос.
Я надеюсь, что вы можете мне помочь.
Со стандартными массивами не получится пока. Только как-нибудь с помощью ООП, если такое понравится.
jaffer wilson: Конечно. Я хотел бы увидеть пример с ООП. Но это должно быть что-то, что я могу назвать решением.
В стандартной библиотеке есть класс CArrayObj, каждому элементу массива, созданного этим классом, можно присваивать другой объект класса CArrayObj, CArrayDouble, CArrayInt и т.п.
Таким образом, можно получить массив с любым количеством измерений для данных любого типа. Это массив можно передавать в функцию с параметром типа CArrayObj.
То есть задача как бы давно решена. Но на сколько это удобно?
'arraycheck.mq5' arraycheck.mq5 11'[' - invalid index value arraycheck.mq5 6519'[' - invalid index value arraycheck.mq5 7019'[' - invalid index value arraycheck.mq5 7022'[' - invalid index value arraycheck.mq5 7519'[' - invalid index value arraycheck.mq5 7522'[' - invalid index value arraycheck.mq5 7525'f' - no one of the overloads can be applied to the function call arraycheck.mq5 524
could be one of 4 function(s) arraycheck.mq5 524void f(T&[]) arraycheck.mq5 607void f(T&[][1]) arraycheck.mq5 657void f(T&[][1][1]) arraycheck.mq5 707void f(T&[][1][1][1]) arraycheck.mq5 757'f' - no one of the overloads can be applied to the function call arraycheck.mq5 554
could be one of 4 function(s) arraycheck.mq5 554void f(T&[]) arraycheck.mq5 607void f(T&[][1]) arraycheck.mq5 657void f(T&[][1][1]) arraycheck.mq5 707void f(T&[][1][1][1]) arraycheck.mq5 7578 errors, 0 warnings 91
Можете ли вы сказать мне, какую сборку вы используете? Я использую это
Я внёс необходимые изменения в MQL5 компилятор, в следующем билде MT5 (начиная с 2743) код будет компилироваться без ошибок
struct t {
string s1;
string s2;
};
const t s[] = {
{ "", "1" },
{ "", "2" }
};
voidOnStart() {
string b = "";
for (int i = ArraySize(s) - 1; i >= 0; --i) {
Print(i);
if (s[i].s2 != b) {
Print(i);
continue;
}
break;
}
}
В билде 2741 нормальное поведение (в релизе и дебаге):
2021.01.1219:44:42.530 t (EURUSD,M1) 12021.01.1219:44:42.530 t (EURUSD,M1) 12021.01.1219:44:42.530 t (EURUSD,M1) 02021.01.1219:44:42.530 t (EURUSD,M1) 0
В билдах 2743, 2744 (только в дебаге):
2021.01.12 19:46:25.355 t (EURUSD,H1) 1
2021.01.12 19:46:25.357 t (EURUSD,H1) 24
2021.01.12 19:46:25.357 t (EURUSD,H1) 23
2021.01.12 19:46:25.357 Message Critical error while running script 't (EURUSD,H1)'.
2021.01.12 19:46:25.357 Message Array out of range.
Это ошибка, когда я пробовал ваш пример:
Можете ли вы сказать мне, какую сборку вы используете? Я использую это
Вы спрашивали: " Не могли бы вы поделиться со мной работоспособным скриптом MQL4?" А показываете окно из МТ5.
Вы спрашивали: " Не могли бы вы поделиться со мной работоспособным скриптом MQL4? " А показываете окно из МТ5.
Мне действительно очень жаль. Я предполагал написать MQL5, но я написал MQL4.
Подскажите, пожалуйста, рабочий пример для MQL5? Это поможет. Собственно вопрос по MQL5. Я пытаюсь преобразовать несколько массивов из MQL4 в MQL5. Но они многомерны. Следовательно, у меня был этот запрос.
Я надеюсь, что вы можете мне помочь.
Мне действительно очень жаль. Я предполагал написать MQL5, но я написал MQL4.
Подскажите, пожалуйста, рабочий пример для MQL5? Это поможет. Собственно вопрос по MQL5. Я пытаюсь преобразовать несколько массивов из MQL4 в MQL5. Но они многомерны. Следовательно, у меня был этот запрос.
Я надеюсь, что вы можете мне помочь.
Со стандартными массивами не получится пока. Только как-нибудь с помощью ООП, если такое понравится.
Со стандартными массивами не получится пока. Только как-нибудь с помощью ООП, если такое понравится.
Конечно. Я хотел бы увидеть пример с ООП. Но это должно быть что-то, что я могу назвать решением.
В стандартной библиотеке есть класс CArrayObj, каждому элементу массива, созданного этим классом, можно присваивать другой объект класса CArrayObj, CArrayDouble, CArrayInt и т.п.
Таким образом, можно получить массив с любым количеством измерений для данных любого типа. Это массив можно передавать в функцию с параметром типа CArrayObj.
То есть задача как бы давно решена. Но на сколько это удобно?
Это ошибка, когда я пробовал ваш пример:
Можете ли вы сказать мне, какую сборку вы используете? Я использую это
Я внёс необходимые изменения в MQL5 компилятор, в следующем билде MT5 (начиная с 2743) код будет компилироваться без ошибок
О, уже интереснее, спасибо!
Build 2744.
Лог:
Вопрос.
Почему внутри функции f() штатная функция ::ArraySize() возвращает 0 ?
ЗЫ. Рисунок не вставляется, загрузил прицепом. В Отладчике видно, что массив "х" относится к fixed array. Это что за новая сущность?
Возможно, связано
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 2715: Общие улучшения
Edgar Akhmadeev, 2021.01.12 17:47
Крутой баг в дебаггере. И это не тавтология.
Код:
В билде 2741 нормальное поведение (в релизе и дебаге):
В билдах 2743, 2744 (только в дебаге):
О, уже интереснее, спасибо!
Build 2744.
Лог:
Вопрос.
Почему внутри функции f() штатная функция ::ArraySize() возвращает 0 ?
ЗЫ. Рисунок не вставляется, загрузил прицепом. В Отладчике видно, что массив "х" относится к fixed array. Это что за новая сущность?
Спасибо за сообщение!
Исправлено