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


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

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

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

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

Теги:


Спасибо:


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

Фотография
Дата: 22.04.2010
Ответить


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

Спасибо:

ddd888

Фотография
Дата: 22.04.2010
Ответить


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

Спасибо:

ddd888

Фотография
Дата: 27.04.2010
Ответить


При вызове _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 при этом выводит все сделки по инструменту нормально.

Спасибо:

Mikhail Sukhov

Фотография
Дата: 27.04.2010
Ответить


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

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

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

Спасибо:

ddd888

Фотография
Дата: 27.04.2010
Ответить


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

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

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

Спасибо:

ddd888

Фотография
Дата: 27.04.2010
Ответить


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

Спасибо:

Mikhail Sukhov

Фотография
Дата: 27.04.2010
Ответить


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

Версия 1.8?

Спасибо:

ddd888

Фотография
Дата: 27.04.2010
Ответить


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

Да, 1.8

Спасибо:

Mikhail Sukhov

Фотография
Дата: 28.04.2010
Ответить


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

Спасибо:

ddd888

Фотография
Дата: 28.04.2010
Ответить


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

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

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

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

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

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

Спасибо:
<< < 4 5 6 7 8  > >>

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy