Приходят мои сделки у которых в ордере Id равно нулю.
Atom Ответить
11.09.2012


Добрый день.
Иногда в событии NewMyTrades приходят сделки, у которых значение в ордере Id равно нулю.

В исходниках плазы нашел вот это место, касающееся МоихСделок:
Код

if (orderTransactionId != 0)
{
	AddMyTrade(security, 0, orderTransactionId, trade);
}


Это баг или фича?

Теги:


Спасибо:




15 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 11.09.2012
Ответить


Maxim Перейти
Добрый день.
Иногда в событии NewMyTrades приходят сделки, у которых значение в ордере Id равно нулю.


Воспроизвести возможно?
Спасибо:

Maxim

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


Навряд ли. Большую часть времени все нормально.
Из 1400 сделок 30 имеют ордер ноль.
Как воспроизвестись не знаю.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 11.09.2012
Ответить


Maxim Перейти
Навряд ли. Большую часть времени все нормально.
Из 1400 сделок 30 имеют ордер ноль.
Как воспроизвестись не знаю.


А как идет проверка?
Спасибо:

Maxim

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


Все сделки в SQL записываю.
В них нахожу сделки с нулевым ордером.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 11.09.2012
Ответить


Maxim Перейти
Все сделки в SQL записываю.
В них нахожу сделки с нулевым ордером.


Понятно... Надо конечно упрощать проверку. Потому что ошибка может быть вовсе не в стокшарпе.
Спасибо:

Maxim

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


Mikhail Sukhov Перейти
Maxim Перейти
Все сделки в SQL записываю.
В них нахожу сделки с нулевым ордером.


Понятно... Надо конечно упрощать проверку. Потому что ошибка может быть вовсе не в стокшарпе.


Немного не понял, какую проверку упрощать?
Данные льются в SQL при поступлении.
Я ничего не проверяю.

Насчет «ошибки не в стокшарпе», возможно.
Но при этом параллельно эти же сделки заливаются через Квик в другой SQL.
И в другом SQL данные нормальные.
Это, конечно, не подтверждает баг в стокшарпе.

Ну и плюс «AddMyTrade(security, 0, orderTransactionId, trade);»
Возможно в этом месте что-то происходит не так?
Постфактум не присваивается номер?

Автор топика
Спасибо:

Maxim

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


1) Вопрос раз.

Работает ли корректно метод «AddMyTrade(security, 0, orderTransactionId, trade);»?
Может быть до моего случая ни у кого не возникала ситуация, когда сделка приходит раньше ордера?
Может быть этот метод в StockSharp.Algo.BaseTrader работает неверно?


2) Вопрос два.

Зачем при добавлении своей сделки в методе «PlazaTrader.OnTradeInserted(PlazaRecord record)» использовать метод
«AddMyTrade(security, 0, orderTransactionId, trade);» с параметром заявки равным нулю?

Ведь таблица «deal» потока «FORTS_FUTTRADE_REPL» содержит поля «id_ord_sell» или «id_ord_buy» которые и есть номер заявки, для данной сделки.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 12.09.2012
Ответить


AddMyTrade работает именно так, как нужно.
Спасибо:

Maxim

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


Mikhail Sukhov Перейти
AddMyTrade работает именно так, как нужно.


А на второй вопрос есть ответ? :)
Автор топика
Спасибо:

Alexander

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


Maxim Перейти
2) Вопрос два.

Зачем при добавлении своей сделки в методе «PlazaTrader.OnTradeInserted(PlazaRecord record)» использовать метод
«AddMyTrade(security, 0, orderTransactionId, trade);» с параметром заявки равным нулю?

Ведь таблица «deal» потока «FORTS_FUTTRADE_REPL» содержит поля «id_ord_sell» или «id_ord_buy» которые и есть номер заявки, для данной сделки.



Как ты по сделке определишь по какому именно ордеру она прошла - по ord_sell или по ord_buy?
Они оба != 0
Спасибо:

Alexander

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


Это нормальная ситуация - у тебя сделка пришла раньше ордера. При этом объект ордер определён - ссылочная связанность есть. По событию OrderChanged или NewOrder можно будет получить этот же ордер с уже проставленным Id.

C какой целью по событию получения своих сделок знать Order.Id?
Есть Order.TransactionId, который характеризует ордер.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 13.09.2012
Ответить


Maxim Перейти
Mikhail Sukhov Перейти
AddMyTrade работает именно так, как нужно.


А на второй вопрос есть ответ? :)


https://stocksharp.ru/posts/m/21301/ И на первый, и на второй, и на третий.
Спасибо:

Maxim

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


Alexander Mukhanchikov Перейти

Как ты по сделке определишь по какому именно ордеру она прошла - по ord_sell или по ord_buy?
Они оба != 0


В этот момент известен orderTransactionId.
Зная его можно найти заявку, которую мы отправляли и посмотреть ее направление.
Зная направление, можно понять, какой наш orderid (ord_sell или по ord_buy).
Автор топика
Спасибо:

Alexander

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


Maxim Перейти
Alexander Mukhanchikov Перейти

Как ты по сделке определишь по какому именно ордеру она прошла - по ord_sell или по ord_buy?
Они оба != 0


В этот момент известен orderTransactionId.
Зная его можно найти заявку, которую мы отправляли и посмотреть ее направление.
Зная направление, можно понять, какой наш orderid (ord_sell или по ord_buy).



Цитата:
C какой целью по событию получения своих сделок знать Order.Id?
Есть Order.TransactionId, который характеризует ордер.


OrderId придёт по изменению ордера, а не по событию новых моих сделок.
Спасибо:

Maxim

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


Миша, Саша, спасибо за ответы.

Это оказался не баг, а фича.
Не смотря на то, что информация о OrderId имеется на момент прихода новой сделки, событие NewMyTrades не гарантирует, что OrderId будет проставлен в заявке.
Ситуацию понял.
Автор топика
Спасибо: Alexander


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

loading
clippy