← Atrás

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

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

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


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

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

¿Le resultó útil este tema?

Compartir tema

Comentarios (15)

Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario

Mikhail Sukhov
Mikhail Sukhov

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

Воспроизвести возможно?

Maxim
Maxim Autor

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

Mikhail Sukhov
Mikhail Sukhov

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

А как идет проверка?

Maxim
Maxim Autor

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

Mikhail Sukhov
Mikhail Sukhov

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

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

Maxim
Maxim Autor

Mikhail Sukhov:

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

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

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

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

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

Maxim
Maxim Autor
  1. Вопрос раз.

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

  1. Вопрос два.

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

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

Mikhail Sukhov
Mikhail Sukhov

AddMyTrade работает именно так, как нужно.

Maxim
Maxim Autor

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

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

Alexander
Alexander

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

Mikhail Sukhov
Mikhail Sukhov

Maxim:

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

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

http://stocksharp.com/posts/m/21301/ И на первый, и на второй, и на третий.

Maxim
Maxim Autor

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

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

Alexander
Alexander

Maxim:

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

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

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

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

Alexander
Alexander

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

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

Maxim
Maxim Autor

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

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

Alexander