Пока что явная ошибка, то что вы пытаетесь в один массив залить данные разного типа. в mql 1 массив имеет только 1 тип. Далее, массив нужно явно объявить с явным типом и явной размерностью, либо явно размерность задать после объявления, и это касается всех его измерений. (если измерений несколько, то у всех должен быть явно задан размер, кроме последнего, так как последний можно изменить уже после). Ну и соблюдайте синтаксис
Задать размерность последнего или единственного измерения можно функцией
intArrayResize(
void& array[], // массив, переданный по ссылкеint new_size, // новый размер массиваint reserve_size=0// резервное значение размера (избыточное)
);
Сперва все задать, а потом уже только можно начинать работать с массивом
Глядя на ваш пример, один из возможных вариантов объявления массива должен выглядеть так.
double orders[100][4];
Запас на 100 ордеров. И нужно учитывать что тип double и могут быть проблемы после неявных преобразований при записи туда других типов
Читал, поэтому не стал обливать дерьмом это убожество и воздержался от комментариев и спросил более знающих людей, как мне это сделать. Мне нужная функция, которая будет проверять все открытые ордера и делать какую-то глобальную переменную, в которой будет вся инфа об этих ордерах. Не знаю там, может тип данных свой здесь можно определить.
Можно поподробнее?
P.S.
Блин, 3 коммента оставили и хоть бы один по делу, вот она, помощь дружного и сплоченного сообщества. Хоть на stackoverflow вопрос пиши, англоговорящая публика куда более внятная в этом плане.
О том, что массив не может содержать данные разных типов уже было сказано. А вот структура позволяет это сделать.
Выглядит примерно так
struct test
{
double lot;
int ticket;
};
// объявить массив структур
test arrOrders[];
// записать в структуру
arrOrders[i].lot = 0.5;
arrOrders[i].ticket = 123654;
Я всю жизнь пишу на php, там с массивами все очень хорошо. Но тут...
Короче, задача такая, написать функцию перебора всех ордеров, которая бы формироала глобальны массив с параметрами рыночных ордеров такого вида
array = [
0 => [ //порядковый номер order
0 => int, //ticket id ордера
1 => double, //размер лота
2 => double, //stoploss
3 => double, //take profit
]
]
Делаю так:
Мне компилятор выдает это:
'[' - wrong dimension***.mq420122
У вас в массиве разные типы данных, так нельзя. Тогда уж использовать массив структур. В структуре можно разные типы данных хранить. И обращение к массиву неправильное. Выше Василий Соколов написал внятный пример.
Видать совсем короткая у тебя жизнь была, раз до сих пор даже чуть-чуть думать кодить не научился. Ладно, вот держи и изучай:
Большое спасибо. Не знал что в mql можно работать с объектами. Теперь все пойдет куда более продуктивно!
P.S.
Всем спасибо за ответы. Я смотрю тут даже некий холиварчик образовался по поводу фундаментального mql. Но я несколько по иному организовал работу с ордерами.
array = [
0 => [ //порядковый номер order
0 => int, //ticket id ордера
1 => double, //размер лота
2 => double, //stoploss
3 => double, //take profit
]
]
Пока что явная ошибка, то что вы пытаетесь в один массив залить данные разного типа. в mql 1 массив имеет только 1 тип. Далее, массив нужно явно объявить с явным типом и явной размерностью, либо явно размерность задать после объявления, и это касается всех его измерений. (если измерений несколько, то у всех должен быть явно задан размер, кроме последнего, так как последний можно изменить уже после). Ну и соблюдайте синтаксис
Задать размерность последнего или единственного измерения можно функцией
Сперва все задать, а потом уже только можно начинать работать с массивом
Глядя на ваш пример, один из возможных вариантов объявления массива должен выглядеть так.
Запас на 100 ордеров. И нужно учитывать что тип double и могут быть проблемы после неявных преобразований при записи туда других типов
Я всю жизнь пишу на php, там с массивами все очень хорошо. Но тут...
Короче, задача такая, написать функцию перебора всех ордеров, которая бы формироала глобальны массив с параметрами рыночных ордеров такого вида
array = [
0 => [ //порядковый номер order
0 => int, //ticket id ордера
1 => double, //размер лота
2 => double, //stoploss
3 => double, //take profit
]
]
Делаю так:
Мне компилятор выдает это:
'[' - wrong dimension ***.mq4 201 22
Первый совет, который приходит в голову - это вот:
https://www.mql5.com/ru/code
Здесь куча примеров.
Тут пишут программы даже школьники, и зарабатывают потом во фрилансе.
РНР, как и любой другой язык не сильно отличаются друг от друга, задачи просто разные.
Это Русская речь.
Что Вам не понравилось?
И не Вам следить за моей речью.
зы Это угроза?
Это бан. Для начала на недельку.
Автора топика это тоже касается, если продолжит в том же духе.
Читал, поэтому не стал обливать дерьмом это убожество и воздержался от комментариев и спросил более знающих людей, как мне это сделать. Мне нужная функция, которая будет проверять все открытые ордера и делать какую-то глобальную переменную, в которой будет вся инфа об этих ордерах. Не знаю там, может тип данных свой здесь можно определить.
Можно поподробнее?
P.S.
Блин, 3 коммента оставили и хоть бы один по делу, вот она, помощь дружного и сплоченного сообщества. Хоть на stackoverflow вопрос пиши, англоговорящая публика куда более внятная в этом плане.
Достаточно подробно описано тут.
О том, что массив не может содержать данные разных типов уже было сказано. А вот структура позволяет это сделать.
Выглядит примерно так
Я всю жизнь пишу на php, там с массивами все очень хорошо. Но тут...
...
Видать совсем короткая у тебя жизнь была, раз до сих пор даже чуть-чуть думать кодить не научился. Ладно, вот держи и изучай:
Я всю жизнь пишу на php, там с массивами все очень хорошо. Но тут...
Короче, задача такая, написать функцию перебора всех ордеров, которая бы формироала глобальны массив с параметрами рыночных ордеров такого вида
array = [
0 => [ //порядковый номер order
0 => int, //ticket id ордера
1 => double, //размер лота
2 => double, //stoploss
3 => double, //take profit
]
]
Делаю так:
Мне компилятор выдает это:
'[' - wrong dimension ***.mq4 201 22
Видать совсем короткая у тебя жизнь была, раз до сих пор даже чуть-чуть думать кодить не научился. Ладно, вот держи и изучай:
Большое спасибо. Не знал что в mql можно работать с объектами. Теперь все пойдет куда более продуктивно!
P.S.
Всем спасибо за ответы. Я смотрю тут даже некий холиварчик образовался по поводу фундаментального mql. Но я несколько по иному организовал работу с ордерами.
Приведение типов никто не отменял. Массив типа double может содержать все другие базовые типы кроме строки.