OnTradeTransaction вызывается по несколько раз на операцию с разными значениями параметров. - страница 2

 

При отправке заявки приходит транзакция о добавлении в список открытых ордеров (а они и при рыночном добавляются) , далее следуют транзакции об ответе с сервера, потом об удалении ордера, потом об сделки, потом об изменении позиции. Ответы REQUEST в принципе идут регулярно и могут быть не одни. Это не точный вариант для всех видов сделок. Потом если приходят UPDATE транзакции вы получите дубликаты транзакций. Все очень упирается в то, когда точно вы хотите отправить ответ. 

При транзакции TRADE_TRANSACTION_POSITION происходит при изменении позиции. Но не в принципе по позиции. 

Может просто смотреть за позицией на всех транзакциях и при ее изменении посылать сообщение (PositionSelect)?

Или если для вас важны именно сделки, то TRADE_TRANSACTION_DEAL_ADD.

Не забывайте, что это не спасет от дубликатов. Храните список отправленных сделок или ордеров. 

А вот вам пример вызовов для разных торговых операций с заполнением структур: 

//Рыночные заявки
TRADE_TRANSACTION_ORDER_ADD                     trans
        TRADE_TRANSACTION_REQUEST               request,result                          //Если идут UPDATE
        TRADE_TRANSACTION_ORDER_UPDATE  trans                                           //Если идут UPDATE
TRADE_TRANSACTION_DEAL_ADD                      trans
TRADE_TRANSACTION_ORDER_DELETE          trans                                           //Идет после выполнения OrderSend()
TRADE_TRANSACTION_HISTORY_ADD           trans                                           //Идет после выполнения OrderSend()
TRADE_TRANSACTION_REQUEST                       request,result                          //Идет после выполнения OrderSend()
        TRADE_TRANSACTION_POSITION              trans(нет сделки, ордера)  //Исполняется, если изменяется позиция (не удаляется)
//Отложенная заявка
TRADE_TRANSACTION_ORDER_ADD                     trans
TRADE_TRANSACTION_ORDER_UPDATE          trans
TRADE_TRANSACTION_REQUEST                       request,result
//Удалили 
TRADE_TRANSACTION_ORDER_UPDATE          trans
TRADE_TRANSACTION_ORDER_DELETE          trans
TRADE_TRANSACTION_HISTORY_ADD           trans
TRADE_TRANSACTION_REQUEST                       trans*,request,result
//Модифицировали
TRADE_TRANSACTION_ORDER_UPDATE          trans
TRADE_TRANSACTION_REQUEST                       request,result
Причем они могут идти в вперемешку, если ордеров несколько.