Управление стаканом котировок

Управление стаканом котировок
Atom
3/30/2010
ddd888


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

this.Trader.ProcessWellKnownDdeData += (name, dict) => // узнаем, что пришедшие данные отвечают за стакан if (name.Contains("stock")) // первичная сортировка по цене IEnumerable _curquotes = (IEnumerable)dict; _curquotes = _curquotes.OrderBy(t => t.Price); ... и т.д.

но это ни к чему не привело. Подскажите, пожалуйста, как правильно отсортировать данные?

Еще здесь был как-то уже вопрос про доступ к отдельным значениям котировок в стакане, но объяснения я так и не нашел. Как же все-такии это можно сделать (получить значение той или иной котировки в стакане для анализа)?


Tags:


Thanks:


<< < 4 5 6 7 8  > >>
Mikhail Sukhov

Avatar
Date: 4/22/2010
Reply


У Вас другое - ошибка в обработчике. Какой у Вас лог ошибки?

Thanks:

ddd888

Avatar
Date: 4/22/2010
Reply


Так обработчик не вызывается. События PositionChanged не происходит. а если использовать свойства экземпляра, то грит, что ссылка на пустой объект. secmanager.Security = null в любом месте кода.

Thanks:

ddd888

Avatar
Date: 4/27/2010
Reply


При вызове _trader.MyTrades.Where(d => d.Order.State == OrderStates.Matched).Select(d => d) все заявки оказываются == Matched хотя в окне квика реально есть активные.

а

this.Secmanager = new SecurityPositionManager (q,_trader ); Secmanager.PositionChanged += new Action(_secmanager_PositionChanged);

реально обновляется только после работы стратегии, т.е. вместе со StrategyPositionManager. Хотя насколько я понимаю предполагалось, что он должен показывать реальную позицию по инструменту независимо от времени включения программы или работы стратегии?

GetMyTrades при этом выводит все сделки по инструменту нормально.

Thanks:

Mikhail Sukhov

Avatar
Date: 4/27/2010
Reply


Это потому что Вы в него передаете null в качестве инструмента. Посмотрите в коде, почему так получается.

А как иначе, если у Вас написано "дайте все мои сделки, у которых состояние Matched и сконвертировать из MyTrade в MyTrade (что уж совсем бессмысленно)".

Правильно, но рассчитывает позицию он по таблице Мои Сделки. Там записи есть?

Thanks:

ddd888

Avatar
Date: 4/27/2010
Reply


Так это читается "сконвертировать"! :) Везде в справочниках написано "проецировать" и оказывается я не так истолковал суть метода. Спасибо за очередную подсказку.

С null разобрался. Почему-то при передаче экземпляра класса Security через индексатор (get,set) он не сразу "активизируется" и при инициализации SecurityManager'а, соответственно, Security в его параметрах = null. Лишь передав параметр Security через конструктор SecurityManager получил "ненулевой" инструмент. Но почему оно так работает - пока не понял.

Да, в таблице "Мои сделки" есть записи. И сегодня при включении SecurityManager вроде начал давать правильную информацию. :) Но наблюдать пока продолжаю. :)

Thanks:

ddd888

Avatar
Date: 4/27/2010
Reply


А при новом запуске программы SecurityManager.Position снова показывает 0.. В моих сделках запись при этом есть. SecurityManager нормально активизирован, инструмент "в нем" есть. SecurityManager.Trades = 1. Это правильно. А Position почему-то 0...

Thanks:

Mikhail Sukhov

Avatar
Date: 4/27/2010
Reply


Это не индексатор, а свойство. И через него передать нельзя - оно private.

Версия 1.8?

Thanks:

ddd888

Avatar
Date: 4/27/2010
Reply


Даже если у меня свойство было объявлено public?

Да, 1.8

Thanks:

Mikhail Sukhov

Avatar
Date: 4/28/2010
Reply


У меня работает. Попробуйте еще вызвать метод Init

Thanks:

ddd888

Avatar
Date: 4/28/2010
Reply


Да, с init функция заработала нормально. Спасибо.

Не получается добавить комментарий в заявку. Делаю так:

((QuikTrader)_trader).FormatTransaction += (str) => {str.SetComment(_currentoperationstring);}; base.Trader.RegisterOrder(order);

Но в квике все те же "ХХХ". Пробовал так:

order.Comment = _currentoperation; base.Trader.RegisterOrder(order);

Реультат тот же. Почему так получается?

Thanks:
<< < 4 5 6 7 8  > >>

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy