Скачать MetaTrader 5

Как в mql работать с массивами?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
nkl90
44
nkl90  

Я всю жизнь пишу на php, там с массивами все очень хорошо. Но тут...

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

 array = [

    0 => [ //порядковый номер order

       0 => int, //ticket id ордера

       1 => double, //размер лота 

       2 => double, //stoploss 

       3 => double, //take profit

    ]

Делаю так:

for(int i=0; i < OrdersTotal(); i++)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true){
         double lots = OrderLots();
            /*Print("OrderOpenPrice: "+OrderOpenPrice());
            Print("OrderClosePrice: "+OrderClosePrice());
            Print("Ask: "+Ask);
            Print("Bid: "+Bid);*/
            orders[i][0] = OrderTicket(); //строка 201
            orders[i][1] = OrderLots();
            orders[i][2] = OrderStopLoss();
            orders[i][3] = OrderTakeProfit();
         return true;
      }
   } 

Мне компилятор выдает это:

'[' - wrong dimension ***.mq4 201 22

Alexander Bereznyak
22515
Alexander Bereznyak  
а как массив объявляете
Vitalii Ananev
9021
Vitalii Ananev  
nkl90:

Я всю жизнь пишу на php, там с массивами все очень хорошо. Но тут...

.........

Справку про массивы почитайте внимательно. MQL это не PHP.
Alexey Viktorov
10275
Alexey Viktorov  
В таком виде лучше использовать структуру.
nkl90
44
nkl90  
Vitalii Ananev:
Справку про массивы почитайте внимательно. MQL это не PHP.

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

 

Alexey Viktorov:
В таком виде лучше использовать структуру.

Можно поподробнее?

P.S. 

Блин, 3 коммента оставили и хоть бы один по делу, вот она, помощь дружного и сплоченного сообщества. Хоть на stackoverflow вопрос пиши, англоговорящая публика куда более внятная в этом плане. 

Dmitry Fedoseev
44465
Dmitry Fedoseev  
nkl90:

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

 

Можно поподробнее?

P.S. 

Блин, 3 коммента оставили и хоть бы один по делу, вот она, помощь дружного и сплоченного сообщества. Хоть на stackoverflow вопрос пиши, англоговорящая публика куда более внятная в этом плане. 

Это не убожество, это реальность. Здесь еще массив отресайзить можно, а где-то и этого нельзя. 

Описать структуру. Объявить массив структур. Потом по ходу дела, отресайзить массив по размеру OrdersTotal(). Еще одна переменная нужна для счетчика занятых элементов массива. Проходите ордера в цикле, добавляете его в массив, увеличиваете значение переменной с индексом. В конце отресайзить массив по реальному количеству добавленных в него ордеров. Это так в общем, практически могут быть всякие вариации.

Yurij Izyumov
18593
Yurij Izyumov  

Нет никаких ошибок именно тут, вероятно ошибка в другом куске кода, в этом её нет

и вставляйте код правильно - используйте копку - SRC 

Vitalii Ananev
9021
Vitalii Ananev  
nkl90:

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

....

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

Vladimir Suslov
466
Vladimir Suslov  
nkl90:

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

...

К сожалению, мкл - это недоношенный плагиат С.
И требования у нему адекватные.
MetaQuotes
Админ
25205
Renat Fatkhullin  
Event:
К сожалению, мкл - это недоношенный плагиат С.
И требования у нему адекватные.

Следите за речью, пожалуйста.

Иначе после запроса доказательств и неминуемого слива будет бан. 

Vladimir Suslov
466
Vladimir Suslov  
Renat Fatkhullin:

Следите за речью, пожалуйста.

Иначе после запроса доказательств и неминуемого слива будет бан. 

Это Русская речь.
Что Вам не понравилось?

И не Вам  следить за моей речью.

зы Это угроза? 

1234
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий