Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Добавляй наш канал в Twitter'e и следи за новостями!
nkl90
44
nkl90 2016.08.07 08:14 

Я всю жизнь пишу на 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
21475
Alexander Bereznyak 2016.08.07 08:16  
а как массив объявляете
Vitalii Ananev
8135
Vitalii Ananev 2016.08.07 08:17  
nkl90:

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

.........

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

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

 

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

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

P.S. 

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

Dmitry Fedoseev
42904
Dmitry Fedoseev 2016.08.07 15:27  
nkl90:

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

 

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

P.S. 

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

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

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

Yurij Izyumov
16774
Yurij Izyumov 2016.08.07 15:27  

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

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

Vitalii Ananev
8135
Vitalii Ananev 2016.08.07 16:52  
nkl90:

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

....

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

Vladimir Suslov
460
Vladimir Suslov 2016.08.07 17:08  
nkl90:

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

...

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

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

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

Vladimir Suslov
460
Vladimir Suslov 2016.08.07 20:18  
Renat Fatkhullin:

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

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

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

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

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

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