Функция перебора

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
coldunprofi
110
coldunprofi  
Всем привет! Подскажите как сделать функцию перебора заданного количества ордеров. Например: в торговле 10 ордеров бай и мне нужно по внешней переменной NumberOrders = 3, определить 3 последние ордера или 3 первые ордера, как это сделать не могу добиться правильного перебора.
Dmitry Fedoseev
56927
Dmitry Fedoseev  
coldunprofi:
Всем привет! Подскажите как сделать функцию перебора заданного количества ордеров. Например: в торговле 10 ордеров бай и мне нужно по внешней переменной NumberOrders = 3, определить 3 последние ордера или 3 первые ордера, как это сделать не могу добиться правильного перебора.

Надо собрать все ордера в двухмерный массив, первое измерение - время, второе - тикет. Отсортировать по первому измерение.

Georgiy Merts
9189
Georgiy Merts  
Dmitry Fedoseev:

Надо собрать все ордера в двухмерный массив, первое измерение - время, второе - тикет. Отсортировать по первому измерение.

Зачем двумерный ? Одномерный, сортировка по времени открытия...

Уж не говоря, что если брать двумерный массив - у тебя, как я понимаю, в нем будет дофига незаполненных ячеек. А это - для начинающих - смерти подобно, самая распространенная ошибка - начинают работать с "пустым" полем.

Лично у меня вобще объект позиции представляет из себя набор элементов-компонент (либо ордеров МТ4, либо хедж-позиций МТ5) - наследников CObject.  Они сложены в массив, наследник CObjArray. В каждом элементе-компоненте позиции перегружена функция Compare() - соответственно, возможна сортировка по любому ключу.  
Dmitry Fedoseev
56927
Dmitry Fedoseev  

Господа, завязывайте тупить так сильно.

int t[][2];

.....

t[i][0]=время

t[i][1]=тикет

Georgiy Merts
9189
Georgiy Merts  
Dmitry Fedoseev:
Господа, завязывайте тупить так сильно.

А конкретно возразить ? Я вот, скажем, не пойму, как заполнить имеющимися ордерами ДВУМЕРНЫЙ массив так, чтобы в нем не было пустых ячеек.

Dmitry Fedoseev
56927
Dmitry Fedoseev  
Georgiy Merts:

А конкретно возразить ? Я вот, скажем, не пойму, как заполнить имеющимися ордерами ДВУМЕРНЫЙ массив так, чтобы в нем не было пустых ячеек.

Выше дописал.

Georgiy Merts
9189
Georgiy Merts  
Dmitry Fedoseev:

Выше дописал.

Понял. Да, так можно.

Мне кажется целесообразнее одномерный массив структур.  Поскольку в твоем случае - будут сложности с добавлением полей. Хотя бы поля символа. Ну или, скажем, если это МТ5-неттинг, то в каждой позиции должен содержаться набор сделок, каждая - со своими данными. Как ты их "запихнешь" в простой массив ?  А если у тебя одномерный набор структур - то это просто добавление внутрь структуры еще одного массива (тоже одномерного), в каждой ячейке которого - структура с данными по сделке. Да и даже если МТ5-хедж, каждая позиция состоит из двух сделок.

Vitaly Muzichenko
13949
Vitaly Muzichenko  
Georgiy Merts:

Понял. Да, так можно.

Мне кажется целесообразнее одномерный массив структур.  Поскольку в твоем случае - будут сложности с добавлением полей. Скажем, если это МТ5-неттинг, то в каждой позиции должен содержаться набор сделок, каждая - со своими данными. Как ты их "запихнешь" в простой массив ?  

t[i][0]=время

t[i][1]=тикет

t[i][2]=ещё

t[i][3]=и ещё

P.S. Конечно, массив структуры имеет неоспоримое преимущество.
Dmitry Fedoseev
56927
Dmitry Fedoseev  
Georgiy Merts:

Понял. Да, так можно.

Мне кажется целесообразнее одномерный массив структур.  Поскольку в твоем случае - будут сложности с добавлением полей. Скажем, если это МТ5-неттинг, то в каждой позиции должен содержаться набор сделок, каждая - со своими данными. Как ты их "запихнешь" в простой массив ?  

Дело в том, что в МТ4 такой двухмерный массив можно было отсортировать стандартной функцией ArraySort(). То есть трудоемкость решения задачи минимальная. Другие поля - есть тикет, ордер можно выделить и получить нужное поле, и заранее не заморчиваешься, какие поля будут нужны. 

Разработчики обещали, что в МТ5 тоже так будет, но не знаю, не проверял. 

Georgiy Merts
9189
Georgiy Merts  
Vitaly Muzichenko:

t[i][0]=время

t[i][1]=тикет

t[i][2]=ещё

t[i][3]=и ещё

А символ как туда запихнешь ?

Не, оно понятно, что так можно, спорить не буду... Лично я бы предпочел одномерный массив структур. Но, и так, как предлагаешь ты - тоже можно. А символ - доставать через запросы типа SelectOrder()

Georgiy Merts
9189
Georgiy Merts  
Dmitry Fedoseev:

Дело в том, что в МТ4 такой двухмерный массив можно было отсортировать стандартной функцией ArraySort(). То есть трудоемкость решения задачи минимальная. Другие поля - есть тикет, ордер можно выделить и получить нужное поле, и заранее не заморчиваешься, какие поля будут нужны. 

Разработчики обещали, что в МТ5 тоже так будет, но не знаю, не проверял. 

Так ведь и я именно ради сортировки и беру массив CObjArray - и имею сортировку по ЛЮБОМУ полю, которая присутствует в структуре. Тоже трудоемкость минимальна - необходимо лишь написать функцию сравнения нужных полей.  

Не, Дмитрий, можно и так, как ты предлагаешь, и даже, наверно, для новичка так будет лучше.

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