Базовыые события
Atom
04.09.2010
Lafert


1.Скажите пожалуйста, собтия NewTrades, NewSecurities и т.д.
вызываются уже после занесения новых записей в соответствующие
таблицы, или это не гарантировано?
Для примера рассмотрим сделки, но можно проецировать на все остальное.
Есть ли например, разница обрабатывать новые сделки из
trades(запомнив последний номер) или взять их из параметра события?
Могут ли приходить сделки как новые, если они уже есть в trades
(например при перезапуске DDE) , и наоборот, могут ли они
отсутствовать в trades при обработке события? вызывается ли вообще
событие, если по ДДЕ только дублируются уже имеющиеся данные.
2. Trans2Quik.api позволяет при работе с собственными заявками,
сделками, счетами и т. обходиться вообще без DDE, а через обратный
вызов вроде даже получать быстую реакцию. В связи с этим возникает
вопрос, берет S# эти данные из API или из DDE, если из DDE, то с чем
это связано?) События связанные со своими заявками и сделками
возникают при обратном вызове из API, или по приходу данных по ДДЕ,
или срабатывает то, что произошло раньше, и вызываютя только ли один
раз?

Теги:


Спасибо:


Иванов Андрей

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


1. Я бы не советовал закладываться на занесение до события, даже если
это так, и всегда использовать то, что пришло. Потому что
а) логика события может измениться;
б) никаких блокировок на получение из коллекций.

А в общем случае зависит от задачи. Я использую то, что в Trades,
потому что считаю сделки назад и мне по фигу, что не будет последней
сделки из последнего DDE-транша, который произошёл микросекунду назад.
Советую трезво оценивать требуемую актуальность данных, потому что вы
работаете по интернету и получить лаг в секунду-другую очень просто.
Эффективнее всего вешаться на событие, если вам требуется максимально
быстро обрабатывать новые сделки -- оверхеад получения из коллекции на
порядки (это именно порядки, т.е. десятки и сотни раз) выше оверхеада
вызова делегата.

Данные в событии дублироваться не должны.

2. DDE нужен для комплексного отражения состояния QUIK в программе.
Trans2Quik API не даёт доступа почти ко всему. Работать "как с
TRANS2QUIK" мне кажется можно -- создаёте свои объекты инструмента и
аккаунта, и регистрируете заявку в терминале. Импорт для этого не
требуется. Но без импорта информации по DDE вы не узнаете о сделках
(не ваших) по инструменту, например. В версии 1.1 API расширили на
тему взаимодействия с заявками, но, например, узнать, сколько у вас
денег на счету или торгуется ли инструмент, не получится.

О том, что используется для своих заявок, не знаю. Полагаю, что
используется то, что придёт раньше. Где-то встречал обсуждение проблем
из-за этого -- информация об исполнении заявки приходит до того, как
поступит информация по сделкам этой заявки. Имейте это в виду. Потому
что эта проблема имеет место быть безотносительно того, какой способ
взаимодействия с QUIK используется. Приходить всё должно один раз. Ещё
раз напомню, что проблема может произойти, когда заявка закроется до
прихода сделок по ней.

Спасибо:

Mikhail Sukhov

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


Насчет дубляжя - я стараюсь везде, где нахожу, делать так, чтобы
данные были уникальны. Приходит дубляж - он игнорируется.

Насчет колбеков. Дополню Андрея. Транс2Квик не позволяет еще кучу
вещей. Тот же стакан (я думаю меня бы разорвали бы, если бы его убрал
в следующем релизе, так что его переоценить сложно). Те же позиции,
сделки, и даже заявки (робот перезапустился - и все, потеряна инфа по
заявкам).

Я бы сделал поддержку колбеков. Более того, а уже есть. Но практика
показала - по скорости не быстрее. Что не удивительно. Во-первых,
основные тормоза - это все же все то, что за пределами компьютера
робота (и инет, и брокер и даже биржа). Во-вторых, ДДЕ довольно шустр.
Он стар, не безопасен, не оптимален, но для трейд систем - более чем
нужно.

Спасибо:

Lafert

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


Спасибо.
Конечно речь не шла об уходе от ДДЕ. Я имел в виду только те данные,
которые покрываются API.

Спасибо:


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

loading
clippy