Mikhail Sukhov
|
Дата: 03.02.2011
|
|
|
|
skuvv
|
Дата: 03.02.2011
Спасибо за информацию. по п2 - было бы не плохо реализовать на будущее возможность включения/выключения внутри s# проверки на изменение позиции. а так получается квик маржу обновляет и отсылает все по dde...
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 03.02.2011
skuvv  Спасибо за информацию. по п2 - было бы не плохо реализовать на будущее возможность включения/выключения внутри s# проверки на изменение позиции. а так получается квик маржу обновляет и отсылает все по dde... Через QuikTrader невозможно понять, изменилось ли хоть что-то в таблице или нет. Поэтому QuikTrader на поступающие из ДДЕ данные.
|
|
|
|
skuvv
|
Дата: 03.02.2011
сделать проверку типа такой: Code public static Dictionary<Security, Position> PositionList = new Dictionary<Security, Position>(); ... if (obj.Count() > 0) { if (!PositionList.ContainsKey(obj.Last().Security)) PositionList.Add(obj.Last().Security,obj.Last()); else if (PositionList[obj.Last().Security]!=obj.Last()) { PositionList[obj.Last().Security] == obj.Last(); } }
|
Автор топика
|
|
|
skuvv
|
Дата: 07.02.2011
ITrader.ReRegisterOrder не создает TranscationId в новом ордере Как бы это исправить
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 07.02.2011
skuvv  ITrader.ReRegisterOrder не создает TranscationId в новом ордере Как бы это исправить Версия? Плюс какой именно метод (у ITrader 2 метода с названием ReRegisterOrder)?
|
|
|
|
skuvv
|
Дата: 07.02.2011
Mikhail Sukhov  skuvv  ITrader.ReRegisterOrder не создает TranscationId в новом ордере Как бы это исправить Версия? Плюс какой именно метод (у ITrader 2 метода с названием ReRegisterOrder)? Версия 2.6 ReRegisterOrder(Order, Double, Int32) После замены ордера не срабатывает NewOrder, хотя возможно это и не принципиально все
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 07.02.2011
skuvv  Mikhail Sukhov  skuvv  ITrader.ReRegisterOrder не создает TranscationId в новом ордере Как бы это исправить Версия? Плюс какой именно метод (у ITrader 2 метода с названием ReRegisterOrder)? Версия 2.6 ReRegisterOrder(Order, Double, Int32) После замены ордера не срабатывает NewOrder, хотя возможно это и не принципиально все Принципиально... А как Вы проверяете что TransactionId не инициализируется? Биржа РТС?
|
|
|
|
skuvv
|
Дата: 07.02.2011
Осталось пару неясных моментов, значит в Квике в колонке ID транзакции пусто после замены. Но Reregister возвращает order с ID транзакции. Если перезапустить программу то в ивенте "новые ордера" поступают ордера с ID транзакции = 0 Я так понимаю что s# следит за ордерами с заменой и сопоставляет замененные ордера с старыми ID транзакции.
|
Автор топика
|
|
|
skuvv
|
Дата: 07.02.2011
И еще я заметил что классы содержащие в себе Security нельзя использовать для сравнения, например Code Dictionary<string,Position>PositionList ..... foreach (Position pos in obj) { if (PositionList[pos.Security.Code] != pos) { PositionList[pos.Security.Code] = pos; } }
Всегда срабатывает из-за изменений внутри Security -( Можно ли на будущее внутрь s# добавить явную реализацию операторов ? PS хотя возможно это из за того, что Position обновляется автоматически....
|
Автор топика
|
|
|
skuvv
|
Дата: 09.02.2011
Заметил один момент - _trader_OrdersChanged срабатывает избыточно, тк его дергает событие из другого потока: Code 20:00:51.146 Thread: EventDispatcher thread #мои сделки LKH1 filled 5 avg_price 19288 LKH1 CumFilled 5 lastQty 5 lastPrice 19288 balance25 20:00:52.113 Thread: EventDispatcher thread #заявки LKH1 filled 5 avg_price 19288 LKH1 CumFilled 10 lastQty 5 lastPrice 19288 balance20
Реальное событие было 1 раз, но оно сработало 2 раза - "мои сделки" не должны активировать событие OrdersChanged, это не правильно. Кому надо, должен отлавливать NewMyTrade... Вариант 2: сделать внутреннюю проверку на реальное изменение ордера и не дергать просто так событие PS что еще хуже эти события не всегда по 2 срабатывают...
|
Автор топика
|
|
|
skuvv
|
Дата: 10.02.2011
Если отослать вручную стоп-заявку в квик, то при выгрузке через дде вылетает эксепшн: Quote: [On ProcessDataError] System.InvalidOperationException: Данные для таблицы 'стоп-заявки' экспортировались в меньшем формате. Не было найдено значение для колонки 'ID транзакции'. Количество колонок равно '34', индекс колонки '34'.
И обработь любые данные невозможно.
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 10.02.2011
skuvv  Заметил один момент - _trader_OrdersChanged срабатывает избыточно, тк его дергает событие из другого потока: Code 20:00:51.146 Thread: EventDispatcher thread #мои сделки LKH1 filled 5 avg_price 19288 LKH1 CumFilled 5 lastQty 5 lastPrice 19288 balance25 20:00:52.113 Thread: EventDispatcher thread #заявки LKH1 filled 5 avg_price 19288 LKH1 CumFilled 10 lastQty 5 lastPrice 19288 balance20
Реальное событие было 1 раз, но оно сработало 2 раза - "мои сделки" не должны активировать событие OrdersChanged, это не правильно. Кому надо, должен отлавливать NewMyTrade... Вариант 2: сделать внутреннюю проверку на реальное изменение ордера и не дергать просто так событие PS что еще хуже эти события не всегда по 2 срабатывают... Это другая ситуация - когда сделки пришли раньше заявки. Сделки приостанавливаются и дожидается информация о заявке. Как только придет заявка - сгенерируется событие и о новых сделках.
|
|
|
|
Mikhail Sukhov
|
Дата: 11.02.2011
skuvv  Если отослать вручную стоп-заявку в квик, то при выгрузке через дде вылетает эксепшн: Quote: [On ProcessDataError] System.InvalidOperationException: Данные для таблицы 'стоп-заявки' экспортировались в меньшем формате. Не было найдено значение для колонки 'ID транзакции'. Количество колонок равно '34', индекс колонки '34'.
И обработь любые данные невозможно. Таблица оформлена неправильно. Прочитайте документацию. Или используйте wnd файл.
|
|
|
|
Mikhail Sukhov
|
Дата: 11.02.2011
skuvv  Осталось пару неясных моментов, значит в Квике в колонке ID транзакции пусто после замены. Но Reregister возвращает order с ID транзакции. Если перезапустить программу то в ивенте "новые ордера" поступают ордера с ID транзакции = 0 Я так понимаю что s# следит за ордерами с заменой и сопоставляет замененные ордера с старыми ID транзакции.
Багу подтверждаю с перестановкой заявок. Нашел и вылечил. Доступный фикс в следующем 3.0.2.
|
|
|
|
skuvv
|
Дата: 11.02.2011
Mikhail Sukhov  skuvv  Если отослать вручную стоп-заявку в квик, то при выгрузке через дде вылетает эксепшн: Quote: [On ProcessDataError] System.InvalidOperationException: Данные для таблицы 'стоп-заявки' экспортировались в меньшем формате. Не было найдено значение для колонки 'ID транзакции'. Количество колонок равно '34', индекс колонки '34'.
И обработь любые данные невозможно. Таблица оформлена неправильно. Прочитайте документацию. Или используйте wnd файл. Да так и было, одного столбцы нехватало...
|
Автор топика
|
|
|
Lafert
|
Дата: 12.03.2011
|
|
|
|
Mikhail Sukhov  skuvv  Заметил один момент - _trader_OrdersChanged срабатывает избыточно, тк его дергает событие из другого потока: Code 20:00:51.146 Thread: EventDispatcher thread #мои сделки LKH1 filled 5 avg_price 19288 LKH1 CumFilled 5 lastQty 5 lastPrice 19288 balance25 20:00:52.113 Thread: EventDispatcher thread #заявки LKH1 filled 5 avg_price 19288 LKH1 CumFilled 10 lastQty 5 lastPrice 19288 balance20
Реальное событие было 1 раз, но оно сработало 2 раза - "мои сделки" не должны активировать событие OrdersChanged, это не правильно. Кому надо, должен отлавливать NewMyTrade... Вариант 2: сделать внутреннюю проверку на реальное изменение ордера и не дергать просто так событие PS что еще хуже эти события не всегда по 2 срабатывают... Это другая ситуация - когда сделки пришли раньше заявки. Сделки приостанавливаются и дожидается информация о заявке. Как только придет заявка - сгенерируется событие и о новых сделках. А можно с этого места поподробнее: информация о сделке ждет пока не придет информация по заявке? стоит ли терять темп? Может быть лучше сгенерировать событие заявки, но предусмотреть для него особый статус?
|
|
|
|
Mikhail Sukhov
|
Дата: 12.03.2011
Lafert  А можно с этого места поподробнее: информация о сделке ждет пока не придет информация по заявке? стоит ли терять темп? Может быть лучше сгенерировать событие заявки, но предусмотреть для него особый статус? Был бы смысл? Темп не теряется, потому что заявка приходит позднее сделки только в случае запуска экспорта.
|
|
|