Mikhail Sukhov
|
Дата: 18.02.2011
skuvv  Вопрос по ситуации с [FORTS] В операции отказано: Превышен лимит операций от указанного клиента.: Асинхронный режим, отменяется ордер и отправляется новый. Приходит сообщение о флуде(в новом ордере) и потом не приходит сообщение об отмене ордера - заявка остается активной, но TraderHelper.IsCanceled считает заявку отклоненной... Посоветуйте, что можно сделать? Какая версия?
|
|
|
|
skuvv
|
Дата: 18.02.2011
Mikhail Sukhov  skuvv  Вопрос по ситуации с [FORTS] В операции отказано: Превышен лимит операций от указанного клиента.: Асинхронный режим, отменяется ордер и отправляется новый. Приходит сообщение о флуде(в новом ордере) и потом не приходит сообщение об отмене ордера - заявка остается активной, но TraderHelper.IsCanceled считает заявку отклоненной... Посоветуйте, что можно сделать? Какая версия? 2.6
|
|
|
|
Mikhail Sukhov
|
Дата: 18.02.2011
skuvv  2.6
В 3.0 я чинил снятие заявок в асинхронном режиме. Может это та самая ошибка.
|
|
|
|
skuvv
|
Дата: 18.02.2011
Mikhail Sukhov  skuvv  2.6
В 3.0 я чинил снятие заявок в асинхронном режиме. Может это та самая ошибка. ОК, спасибо, проверю
|
|
|
|
esper
|
Дата: 21.02.2011
Всем добрый день. Возникла следующая ситауция, мне необходимо получить данные из талицы "Портфель по деривативам" с добавленными колонками.
Код примерно следующий:
//добавляем столбцы trader.DerivativePortfoliosTable.Columns.Insert(2, DdeDerivativePortfolioColumns.CurrentLimitPositionsPrice); trader.DerivativePortfoliosTable.Columns.Insert(5, DdeDerivativePortfolioColumns.ACI); trader.DerivativePortfoliosTable.Columns.Add(DdeDerivativePortfolioColumns.MarketCommission);
//обработчик получения новых записей trader.NewPortfolios += obj => { };
В обработчик приходит список объектов BusinessEntities.Portfolio, но в свойстве ExtensionInfo нет данных по дополнительным полям, каким образом можно их получить?
|
|
|
|
Alexander
|
Дата: 21.02.2011
esper  Всем добрый день. Возникла следующая ситауция, мне необходимо получить данные из талицы "Портфель по деривативам" с добавленными колонками.
Код примерно следующий:
//добавляем столбцы trader.DerivativePortfoliosTable.Columns.Insert(2, DdeDerivativePortfolioColumns.CurrentLimitPositionsPrice); trader.DerivativePortfoliosTable.Columns.Insert(5, DdeDerivativePortfolioColumns.ACI); trader.DerivativePortfoliosTable.Columns.Add(DdeDerivativePortfolioColumns.MarketCommission);
//обработчик получения новых записей trader.NewPortfolios += obj => { };
В обработчик приходит список объектов BusinessEntities.Portfolio, но в свойстве ExtensionInfo нет данных по дополнительным полям, каким образом можно их получить? Аналогичная проблема была вчера. Версия 3.0.5. Ожидание не помогло (ждал, может вначале портфели приходят из другого места, потом обновляется...).
|
|
|
|
Mikhail Sukhov
|
Дата: 21.02.2011
Alexander  Аналогичная проблема была вчера. Версия 3.0.5. Ожидание не помогло (ждал, может вначале портфели приходят из другого места, потом обновляется...).
Да, во первых надо ждать и в NewPortolios и в PortfoliosChanged, так как ExtensionInfo может и позднее заполниться. А вот вторых подтверждаю багу с Insert. С Add у меня работает. Буду фиксить.
|
|
|
|
esper
|
Дата: 21.02.2011
Спасибо. Попутно возник еще такой вопрос, в таблице "Портфель по деривативам" есть поле "Тип лимита" и ряд других, но в объекте BusinessEntities.Portfolio таких полей нет, их ожидать тоже в ExtensionInfo?
|
|
|
|
Mikhail Sukhov
|
Дата: 21.02.2011
esper  Спасибо. Попутно возник еще такой вопрос, в таблице "Портфель по деривативам" есть поле "Тип лимита" и ряд других, но в объекте BusinessEntities.Portfolio таких полей нет, их ожидать тоже в ExtensionInfo? Тип лимита нет. Смотрится только тип лимита Деньги. Другие - это какие?
|
|
|
|
esper
|
Дата: 21.02.2011
Mikhail Sukhov  Другие - это какие? Если я правильно понял, то поля отображаются следующим образом. Портфель по деривативам: Торговый счет - Name Предыд. лимит откр. поз. - BeginAmount Тек. чист. поз. - CurrentAmount Вариац. маржа - ? Тип лимита - опускаем Позиции по деривативам: Торговый счет - Portfolio Код инструмента - Security Вход. чист. поз. - BeginValue Тек. чист. поз. - CurrentValue Акт. покупка - ? Акт. продажа - ?
|
|
|
|
Mikhail Sukhov
|
Дата: 21.02.2011
esper  Вариац. маржа - ?
Да, это недоделка. Было желание вычислять текущее значение денег на ФОРТС, но не потом сдался. Надо это куда-то деть. Предлагаю в Portfolio.Leverage. esper  Акт. покупка - ? Акт. продажа - ?
Их сумма записывается в Position.BlockedValue
|
|
|
|
a.dobryn
|
Дата: 21.02.2011
а что произойдет, если пробовать снять заявку, у которой статус Done? кроме сообщения о невозможности сделать это. Как можно отловить подобное событие?
|
|
|
|
Mikhail Sukhov
|
Дата: 21.02.2011
D_Alex  а что произойдет, если пробовать снять заявку, у которой статус Done? кроме сообщения о невозможности сделать это. Как можно отловить подобное событие? ITrader.OrdersFailed
|
|
|
|
skuvv
|
Дата: 21.02.2011
После вызова _trader.ReRegisterOrder при изменении заявки, TraderHelper.IsCanceled = true. Собственно вопрос как можно различить отмененный ордер от замененного? В обоих OrderStates.Done и order.Balance > 0 Можно конечно last message смотреть как вариант. PS На игровом сервере поле "снята(время)" пустое
|
|
|
|
Mikhail Sukhov
|
Дата: 21.02.2011
skuvv  Собственно вопрос как можно различить отмененный ордер от замененного? Во-первых, это плохой подход, когда требуется такое различать. Потому что не существует такого понятия в бирже как "замененный ордер". Во вторых, успешно замененный ордер можно так же отменить. Какая логика должна быть в этом случае?
|
|
|
|
skuvv
|
Дата: 22.02.2011
Опять про Replace. Попробывал пару вариантов и безуспешно. Верхний вариант с отслеживанием нового ордера (по TransactionId), нижние отслеживание старого ордера Code //Ecng.Trading.BusinessEntities.Order _NewOrder = _trader.ReRegisterOrder(Order, newPrice, (int)newQty); 21.02.2011 22:16:59 [Sending New Order] GZH1 Price: 19745 Qty: 1 21.02.2011 22:17:00 [parse_order] 79897973 21.02.2011 22:17:00 [_trader_OrdersChanged] order status Active 21.02.2011 22:17:00 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки 21.02.2011 22:17:00 [_trader_OrdersChanged] order Accepted Done 21.02.2011 22:17:00 [parse_order] 79897973 21.02.2011 22:17:00 [_trader_OrdersChanged] order status Active 21.02.2011 22:17:00 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки 21.02.2011 22:17:00 [parse_order] 79897973 21.02.2011 22:17:00 [_trader_OrdersChanged] order status Active 21.02.2011 22:17:31 [Replace] 19715 x 1 21.02.2011 22:17:31 [parse_order] 79897974 21.02.2011 22:17:31 [_trader_OrdersChanged] order status NULL 21.02.2011 22:17:31 [_trader_OrdersChanged] Thread: null 21.02.2011 22:17:32 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки 21.02.2011 22:17:32 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки 21.02.2011 22:17:32 [parse_order] 79897974 21.02.2011 22:17:32 [_trader_OrdersChanged] order status NULL ->в квике новая заявка без transaction id
//_trader.ReRegisterOrder(Order, newPrice, (int)newQty); 21.02.2011 23:29:53 [Sending New Order] GZH1 Price: 19799 Qty: 1 21.02.2011 23:29:53 [parse_order] 84292206 21.02.2011 23:29:54 [_trader_OrdersChanged] order status Active 21.02.2011 23:29:54 [_trader_OrdersChanged] order Accepted Done 21.02.2011 23:29:55 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки 21.02.2011 23:29:55 [parse_order] 84292206 21.02.2011 23:29:55 [_trader_OrdersChanged] order status Active 21.02.2011 23:29:55 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки 21.02.2011 23:29:55 [parse_order] 84292206 21.02.2011 23:29:55 [_trader_OrdersChanged] order status Active 21.02.2011 23:29:59 [Replace] 19759 x 1 21.02.2011 23:30:00 [_trader_OrdersChanged] Thread: null 21.02.2011 23:30:00 [parse_order] 84292206 21.02.2011 23:30:00 [_trader_OrdersChanged] order status Done 21.02.2011 23:30:00 [_trader_OrdersChanged] order Replaced Done 21.02.2011 23:30:01 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки 21.02.2011 23:30:01 [parse_order] 84292206 21.02.2011 23:30:01 [_trader_OrdersChanged] order status Done 21.02.2011 23:30:01 [_trader_OrdersChanged] order Replaced Done 21.02.2011 23:30:01 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки 21.02.2011 23:32:15 [Replace] 19752 x 1 ->нет events//в квике новая заявка без transaction id
_trader.ReRegisterOrder(OrderList.ElementAt(index).Key, _order); 21.02.2011 23:48:30 [Sending New Order] GZH1 Price: 19809 Qty: 1 21.02.2011 23:48:31 [parse_order] 85085851 21.02.2011 23:48:31 [_trader_OrdersChanged] order status Active 21.02.2011 23:48:31 [_trader_OrdersChanged] order Accepted Done 21.02.2011 23:48:31 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки 21.02.2011 23:48:32 [parse_order] 85085851 21.02.2011 23:48:32 [_trader_OrdersChanged] order status Active 21.02.2011 23:48:32 [_trader_OrdersChanged] Thread: EventDispatcher thread #заявки 21.02.2011 23:48:32 [parse_order] 85085851 21.02.2011 23:48:32 [_trader_OrdersChanged] order status Active 21.02.2011 23:48:36 [Replace] 19803 x 1 ->нет events//в квике нет новой заявки
|
|
|
|
a.dobryn
|
Дата: 24.02.2011
Mikhail Sukhov  D_Alex  а что произойдет, если пробовать снять заявку, у которой статус Done? кроме сообщения о невозможности сделать это. Как можно отловить подобное событие? ITrader.OrdersFailed глупый вопрос, а после этого события и выдачи messagebox, функция, в которой находилась строка CancelOrder продолжает работать дальше? написано так: Code MainWindow.Instance.CancelOrder(MainWindow.Instance._ordersWindow.Orders[orderNum]); if (MainWindow.Instance._ordersWindow.Orders[orderNum].IsCanceled() == false) { ..... //в итоге в том случае, если заявка уже исполнена и возникла ошибка, сюда не приходит }
|
|
|
|
a.dobryn
|
Дата: 24.02.2011
и еще вопрос - можно как-то узнать, что заявка была именно снята, а не исполнена, и наоборот?
upd: ой, я подобный вопрос уже спрашивала. Надо использовать метод TraderHelper..::.IsCanceled
|
|
|
|
skuvv
|
Дата: 24.02.2011
D_Alex  и еще вопрос - можно как-то узнать, что заявка была именно снята, а не исполнена, и наоборот?
upd: ой, я подобный вопрос уже спрашивала. Надо использовать метод TraderHelper..::.IsCanceled Метод подходит если не планируется делать Replace заявки, после Replace IsCanceled=true
|
|
|
|
a.dobryn
|
Дата: 24.02.2011
skuvv  D_Alex  и еще вопрос - можно как-то узнать, что заявка была именно снята, а не исполнена, и наоборот?
upd: ой, я подобный вопрос уже спрашивала. Надо использовать метод TraderHelper..::.IsCanceled Метод подходит если не планируется делать Replace заявки, после Replace IsCanceled=true не планирую =) спасибо за информацию =)
|
|
|
|
a.dobryn
|
Дата: 24.02.2011
D_Alex  Mikhail Sukhov  D_Alex  а что произойдет, если пробовать снять заявку, у которой статус Done? кроме сообщения о невозможности сделать это. Как можно отловить подобное событие? ITrader.OrdersFailed глупый вопрос, а после этого события и выдачи messagebox, функция, в которой находилась строка CancelOrder продолжает работать дальше? написано так: Code MainWindow.Instance.CancelOrder(MainWindow.Instance._ordersWindow.Orders[orderNum]); if (MainWindow.Instance._ordersWindow.Orders[orderNum].IsCanceled() == false) { ..... //в итоге в том случае, если заявка уже исполнена и возникла ошибка, сюда не приходит } проблема решена, надо использовать try{} catch(), так как "невозможно снять заявку" это exception
|
|
|
|
esper
|
Дата: 25.02.2011
Mikhail Sukhov  esper  Вариац. маржа - ?
Да, это недоделка. Было желание вычислять текущее значение денег на ФОРТС, но не потом сдался. Надо это куда-то деть. Предлагаю в Portfolio.Leverage. esper  Акт. покупка - ? Акт. продажа - ?
Их сумма записывается в Position.BlockedValue С этим можно сказать разобрались. А вот еще такой вопрос, есть портфель по деривативам, подписываюсь на новую запись в таблице и на изменение данных, событие изменения данных возникает до события новой записи, это нормальная ситуация?
|
|
|
|
Mikhail Sukhov
|
Дата: 25.02.2011
esper  А вот еще такой вопрос, есть портфель по деривативам, подписываюсь на новую запись в таблице и на изменение данных, событие изменения данных возникает до события новой записи, это нормальная ситуация?
Не могу воспроизвести.
|
|
|
|
esper
|
Дата: 26.02.2011
Mikhail Sukhov  esper  А вот еще такой вопрос, есть портфель по деривативам, подписываюсь на новую запись в таблице и на изменение данных, событие изменения данных возникает до события новой записи, это нормальная ситуация?
Не могу воспроизвести. У меня тоже не всегда удается повторить эту ситуацию, если удасться найти что приводит к ней, то отпишусь здесь.
|
|
|
|
freelancer
|
Дата: 02.03.2011
Здравствуйте. Все цены инструмента (лучшая покупка, продажа и т.д.) у меня равны нулю почему-то (событие SecuritiesChanged). И даже в примере "Sample". Почему так ? Версия - последняя
|
|
|