Greene-nsk
|
Date: 3/9/2011
|
|
|
|
S# 3.0.12b BestByPriceQuotingStrategy(_Order, 5.Pips(_Order.Security)); Из webUI itinvest известно: в результате котирования (лог ниже) выставлена и отменена одна заявка "Продать фьючерсы RTS-3.11 1 лот по цене 201,605 приказ LIMIT". Больше заявок нет. Code 09.03.2011 13:47:08 [OpenWealth.StockSharp.StrategyProcessOrder.StartQuoting] Условие заявки Sell исполнилось. Начинаем котирование. (36244) 09.03.2011 13:47:08 [OpenWealth.HeadRealTrade.OnLog] ЛОГ стратегии BBPQS str: Стратегия запущена. (62) 09.03.2011 13:47:10 [OpenWealth.HeadRealTrade.OnLog] ЛОГ стратегии BBPQS str: Регистрация новой заявки на Sell с ценой 201605 и объемом 1. (2484) 09.03.2011 13:47:11 [OpenWealth.HeadRealTrade.OnLog] ЛОГ стратегии BBPQS str: Заявка 45502843 на Sell отправлена с ценой 201605 объемом 1. (108) 09.03.2011 13:47:13 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (2060) 09.03.2011 13:47:14 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (962) 09.03.2011 13:47:15 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1177) 09.03.2011 13:47:17 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1748) 09.03.2011 13:47:18 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1363) 09.03.2011 13:47:20 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1722) 09.03.2011 13:47:21 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1205) 09.03.2011 13:47:23 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1812) 09.03.2011 13:47:24 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1090) 09.03.2011 13:47:26 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1721) 09.03.2011 13:47:27 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1284) 09.03.2011 13:47:29 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1763) 09.03.2011 13:47:30 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1174) 09.03.2011 13:47:32 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1931) 09.03.2011 13:47:34 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1115) 09.03.2011 13:47:35 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1840) 09.03.2011 13:47:37 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1241) 09.03.2011 13:47:38 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1710) 09.03.2011 13:47:40 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1350) 09.03.2011 13:47:42 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1638) 09.03.2011 13:47:43 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1442) 09.03.2011 13:47:45 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1559) 09.03.2011 13:47:46 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1459) 09.03.2011 13:47:48 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1731) 09.03.2011 13:47:49 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1385) 09.03.2011 13:47:51 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1695) 09.03.2011 13:47:53 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1352) 09.03.2011 13:47:54 [OpenWealth.StockSharp.TraderInitializator.<Init>b__1] Wrapper order changed: BP-RF-01 RTS-3.11_FT StOrder_State_Pending StOrder_Action_Sell StOrder_Type_Limit True 201605 1 0 1 09.03.2011 13:47:38 570493480 0 2386600 (1655) 09.03.2011 13:47:54 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (1850) 09.03.2011 13:47:55 [OpenWealth.StockSharp.TraderInitializator.<Init>b__1] Wrapper order changed: BP-RF-01 RTS-3.11_FT StOrder_State_Open StOrder_Action_Sell StOrder_Type_Limit True 201605 1 0 1 09.03.2011 13:47:38 570493480 3327683403 2386600 (0) 09.03.2011 13:47:57 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (2080) 09.03.2011 13:47:58 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Warning str: Заявка 45502843 не имеет состояния. (8) 09.03.2011 13:47:59 [OpenWealth.StockSharp.TraderInitializator.<Init>b__0] Wrapper new order: 45502843 570493480 (1185) 09.03.2011 13:47:59 [OpenWealth.StockSharp.TraderInitializator.<Trader_NewOrders>b__19] RTS-3.11 -1*201605 Limit (3) 09.03.2011 13:48:00 [OpenWealth.StockSharp.StrategyProcessOrder.OnNewOrder] Strategy.NewOrder: RTS-3.11 -1*201605 Limit BP5758-RF-01 Active Accepted остаток: 1 ID: 3327683403 transactionID: 45502843 время снятия: (745) 09.03.2011 13:48:00 [OpenWealth.HeadRealTrade.OnLog] ЛОГ стратегии BBPQS str: Цена текущей 201605 и лучшей 201470. (932) 09.03.2011 13:48:04 [OpenWealth.HeadRealTrade.OnLog] ЛОГ стратегии BBPQS str: Котирование заявки 45502843 на Sell с ценой 201605 объемом 1. (5) 09.03.2011 13:48:24 [OpenWealth.HeadRealTrade.OnLog] ERROR: ЛОГ стратегии BBPQS errorStates: Error str: System.InvalidOperationException: В процессе снятия заявки '3327683403' случился тайм-аут. в Ecng.Trading.Algo.TraderHelper.GuarantyCancelOrder(Order order) в Ecng.Trading.Algo.Strategies.Strategy.ReRegisterOrder(Order oldOrder, Func`1 getNewPrice, Func`1 getNewVolume, Boolean isForts) в Ecng.Trading.Algo.Strategies.QuotingStrategy.OnProcess() в Ecng.Trading.Algo.Strategies.Strategy.#=qOdlOKYT7COgmqPX1tHXuEAECbFarHk$mR7teNIEmAAg=.#=qf6gWZmse$H2Zx1_kgVHwYw==() (20642) 09.03.2011 13:48:24 [OpenWealth.HeadRealTrade.OnLog] ЛОГ стратегии BBPQS str: Стратегия останавливается. (0) 09.03.2011 13:48:26 [OpenWealth.HeadRealTrade.OnLog] ЛОГ стратегии BBPQS str: Котирование отменяет заявку 45502843. (2039) 09.03.2011 13:48:27 [OpenWealth.HeadRealTrade.OnLog] ЛОГ стратегии BBPQS str: Стратегия остановлена. (105) 09.03.2011 13:48:46 [OpenWealth.StockSharp.TraderInitializator.<Init>b__1] Wrapper order changed: BP-RF-01 RTS-3.11_FT StOrder_State_Open StOrder_Action_Sell StOrder_Type_Limit True 201605 1 0 1 09.03.2011 13:47:38 570493480 3327683403 2386600 (19822) 09.03.2011 13:48:46 [OpenWealth.StockSharp.TraderInitializator.<Trader_OrdersChanged>b__1d] RTS-3.11 -1*201605 Limit BP5758-RF-01 Active Accepted остаток: 1 ID: 3327683403 transactionID: 45502843 время снятия: (4) 09.03.2011 13:48:47 [OpenWealth.StockSharp.TraderInitializator.<Init>b__1] Wrapper order changed: BP-RF-01 RTS-3.11_FT StOrder_State_Cancel StOrder_Action_Sell StOrder_Type_Limit True 201605 1 0 1 09.03.2011 13:47:38 570493480 3327683403 2386600 (126) 09.03.2011 13:48:50 [OpenWealth.StockSharp.TraderInitializator.<Trader_OrdersChanged>b__1d] RTS-3.11 -1*201605 Limit BP5758-RF-01 Done Accepted остаток: 1 ID: 3327683403 transactionID: 45502843 время снятия: 09.03.2011 13:47:38 (2) 09.03.2011 13:48:50 [OpenWealth.StockSharp.TraderInitializator.<Init>b__1] Wrapper order changed: BP-RF-01 RTS-3.11_FT StOrder_State_Cancel StOrder_Action_Sell StOrder_Type_Limit True 201605 1 0 1 09.03.2011 13:48:18 570493480 3327683403 2386600 (0) 09.03.2011 13:48:50 [OpenWealth.StockSharp.TraderInitializator.<Trader_OrdersChanged>b__1d] RTS-3.11 -1*201605 Limit BP5758-RF-01 Done Accepted остаток: 1 ID: 3327683403 transactionID: 45502843 время снятия: 09.03.2011 13:48:18 (1)
Формат вывода как обычно: Code (this.Trader as SmartTrader).Wrapper.NewOrder += ((i, s) => { Log.Out("Wrapper new order: " + i + " " + s, LogLevel.debug); }); (this.Trader as SmartTrader).Wrapper.OrderChanged += ((s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14) => { Log.Out("Wrapper order changed: " + s1.Remove(2, 4) + " " + s2 + " " + s3 + " " + s4 + " " + s5 + " " + s6 + " " + s7 + " " + s8 + " " + s9 + " " + s10 + " " + s11 + " " + s12 + " " + s13 + " " + s14, LogLevel.debug); });
private void Trader_OrdersChanged(IEnumerable<Order> orders) { orders.ForEach(o => Log.Out(o.ToStringLong())); }
static public string ToStringLong(this Order o) { string sign = (o.Direction == OrderDirections.Buy) ? "+" : "-"; return o.Security.Name + " " + sign + o.Volume + "*" + o.Price + " " + o.Type + " " + o.Portfolio.Name + " " + o.State + " " + o.Status + " остаток: " + o.Balance + " ID: " + o.Id + " transactionID: " + o.TransactionId + " время снятия: " + o.CancelTime; }
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/9/2011
Лог нормальный. А в чем вопрос?
|
|
Thanks:
|
|
|
|
|
Greene-nsk
|
Date: 3/9/2011
Mikhail Sukhov Лог нормальный. А в чем вопрос? Сделки нет. Только один отмененный ордер. Ни одного исполненного.
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/9/2011
Greene-nsk Mikhail Sukhov Лог нормальный. А в чем вопрос? Сделки нет. Только один отмененный ордер. Ни одного исполненного. По логу видно, что была заявка, которую котирование не смогло отменить. После этого котирование остановилось. Заявка и не должна в таком случае появиться.
|
|
Thanks:
|
|
|
|
|
Greene-nsk
|
Date: 3/9/2011
Mikhail Sukhov Greene-nsk Mikhail Sukhov Лог нормальный. А в чем вопрос? Сделки нет. Только один отмененный ордер. Ни одного исполненного. По логу видно, что была заявка, которую котирование не смогло отменить. После этого котирование остановилось. Заявка и не должна в таком случае появиться. Всмысле? Еще ра. Котирование вида BestByPriceQuotingStrategy(_Order, 5.Pips(_Order.Security)). Оно должно передвигать заявку на край стакана при привышении 5и пунктов и в любом случае исполниться рано или поздно. Разве нет??
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/9/2011
Greene-nsk Mikhail Sukhov Greene-nsk Mikhail Sukhov Лог нормальный. А в чем вопрос? Сделки нет. Только один отмененный ордер. Ни одного исполненного. По логу видно, что была заявка, которую котирование не смогло отменить. После этого котирование остановилось. Заявка и не должна в таком случае появиться. Всмысле? Еще ра. Котирование вида BestByPriceQuotingStrategy(_Order, 5.Pips(_Order.Security)). Оно должно передвигать заявку на край стакана при привышении 5и пунктов и в любом случае исполниться рано или поздно. Разве нет?? Что такое процесс движения. Это когда снимается заявка и регистрируется новая. Если в этот механизме происходит исключение, оно не срабатывает. В вашем случае было ошибка на снятии заявки. Слишком долго Смарт слал инфу о том, что заявка снята. И в этом возможно виноват S#.[blush] Sleep с COM объектами не дружит. Если это то, о чем я думаю, то поведение в 3.0.14 будет лучше. Если нет, значит все таки СмартКом.
|
|
Thanks:
|
|
|
|
|
Greene-nsk
|
Date: 3/9/2011
|
|
|
|
Mikhail Sukhov Что такое процесс движения. Это когда снимается заявка и регистрируется новая. Если в этот механизме происходит исключение, оно не срабатывает. В вашем случае было ошибка на снятии заявки. Слишком долго Смарт слал инфу о том, что заявка снята. И в этом возможно виноват S#.[blush] Sleep с COM объектами не дружит. Если это то, о чем я думаю, то поведение в 3.0.14 будет лучше. Если нет, значит все таки СмартКом.
И что теперь делать? Когда я посылаю запрос на котирование, мне необходима 100% гарантия, что запрос исполнится если нет обрыва связи или креша системы / биржи. Иначе вся логика ломается. Из 7 трейдов сегодня, эта ошибка вылезла 3и раза. Т.е. метод АБСОЛЮТНО нерабочий. На мой взгляд: 1. Должна быть запрещена остановка котирования до выполнения сделки. Иначе надеяться на такой метод нельзя. 2. Надо разобраться, почему сообщение об отмене ордера приходит так долго. Возможно надо увеличить таймаут (возможно в разы) или, если это проблема смарта как-то ее обходить.
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/9/2011
Greene-nsk На мой взгляд: 1. Должна быть запрещена остановка котирования до выполнения сделки. Иначе надеяться на такой метод нельзя. 2. Надо разобраться, почему сообщение об отмене ордера приходит так долго. Возможно надо увеличить таймаут (возможно в разы) или, если это проблема смарта как-то ее обходить.
Все верно. Я постараюсь проблему устранить ту, которую сам нашел в метод GuarantyCancelOrder. Если она поможет, гуд. Иначе, как-то по другому решать задачу.
|
|
Thanks:
|
|
|
|
|
vvt
|
Date: 3/10/2011
|
|
|
|
Подтверждаю, с котированием есть проблемы, вот лог [Quik Junior] [3.0.13]: Quote:Регистрация новой заявки на Sell с ценой 198570 и объемом 1. Заявка 47028103 на Sell отправлена с ценой 198570 объемом 1. Цена текущей 198570 и лучшей 198565. Котирование заявки 47028103 на Sell с ценой 198570 объемом 1. Перекотирование зарегистрировано для заявки 47028105 на Sell с ценой 198565 объемом 1. Цена текущей 198565 и лучшей 198560. Котирование заявки 47028105 на Sell с ценой 198565 объемом 1. Перекотирование зарегистрировано для заявки 47028107 на Sell с ценой 198560 объемом 1. Цена текущей 198560 и лучшей 198570. Котирование заявки 47028107 на Sell с ценой 198560 объемом 1. Перекотирование зарегистрировано для заявки 47028109 на Sell с ценой 198570 объемом 1. Цена текущей 198570 и лучшей 198565. Котирование заявки 47028109 на Sell с ценой 198570 объемом 1. Перекотирование зарегистрировано для заявки 47028111 на Sell с ценой 198565 объемом 1. Цена текущей 198565 и лучшей 198545. Котирование заявки 47028111 на Sell с ценой 198565 объемом 1. Перекотирование зарегистрировано для заявки 47028113 на Sell с ценой 198545 объемом 1. Цена текущей 198545 и лучшей 198570. Котирование заявки 47028113 на Sell с ценой 198545 объемом 1. Ecng.Trading.Quik.ApiException: Код ошибки Failed Сообщение Вы не можете снять данную заявку Котируемая заявка 47028113 исполнилась. Регистрация новой заявки на Sell с ценой 198620 и объемом 1. Заявка 47028115 на Sell отправлена с ценой 198620 объемом 1. Цена текущей 198620 и лучшей 198615. Котирование заявки 47028115 на Sell с ценой 198620 объемом 1. Перекотирование зарегистрировано для заявки 47028117 на Sell с ценой 198615 объемом 1. Цена текущей 198615 и лучшей 198560. Котирование заявки 47028117 на Sell с ценой 198615 объемом 1. Перекотирование зарегистрировано для заявки 47028119 на Sell с ценой 198560 объемом 1. Цена текущей 198560 и лучшей 198580. Котирование заявки 47028119 на Sell с ценой 198560 объемом 1. Перекотирование зарегистрировано для заявки 47028121 на Sell с ценой 198580 объемом 1. Цена текущей 198580 и лучшей 198565. Котирование заявки 47028121 на Sell с ценой 198580 объемом 1. Перекотирование зарегистрировано для заявки 47028123 на Sell с ценой 198565 объемом 1. Цена текущей 198565 и лучшей 198620. Котирование заявки 47028123 на Sell с ценой 198565 объемом 1. Ecng.Trading.Quik.ApiException: Код ошибки Failed Сообщение [FORTS] В операции о тказано: Превышен лимит операций от указанного клиента.. Снятое количество: 9193848 System.InvalidOperationException: В процессе снятия заявки '376660815' случился тайм-аут. в Ecng.Trading.Algo.TraderHelper.GuarantyCancelOrder(Order order) в Ecng.Trading.Algo.Strategies.Strategy.ReRegisterOrder(Order oldOrder, Func` 1 getNewPrice, Func`1 getNewVolume, Boolean isForts) в Ecng.Trading.Algo.Strategies.QuotingStrategy.OnProcess() в Ecng.Trading.Algo.Strategies.Strategy.#=q_7aAU8b_zEypCQ8s7GI9rpJ4uiSQ4jqTKo 3$1bhmZoo=.#=q1xDZDIblA8UZbmo72Ys1aA==() Стратегия останавливается. Котирование отменяет заявку 47028123. Стратегия остановлена. Ecng.Trading.Quik.ApiException: Код ошибки Failed Сообщение [FORTS] В операции о тказано: Превышен лимит операций от указанного клиента.. Снятое количество: 9193848 Code var order = base.CreateOrder(OrderDirections.Sell, base.Security.GetMarketPrice(OrderDirections.Sell), base.Volume); var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit(5)); base.ChildStrategies.Add(strategy);
В первом случае заявка исполнилась, а стратегия пытается ее снять. А дальше возникает ошибка из-за ограничения не более 30 транзакций в секунду на ФОРТС через Quik Junior (у меня от Finam), причем оно дается на всех клиентов. Кроме того, в Quik Junior есть еще похоже ограничение на не более 10 перестановок заявки, возникает стабильно, 11 перестановку отвергает. Выложу лог, как только возникнет еще раз. Хотелось бы, чтобы эти ограничения тоже как-то учитывались при котировании.
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/10/2011
vvt В первом случае заявка исполнилась, а стратегия пытается ее снять. А дальше возникает ошибка из-за ограничения не более 30 транзакций в секунду на ФОРТС через Quik Junior (у меня от Finam), причем оно дается на всех клиентов. Кроме того, в Quik Junior есть еще похоже ограничение на не более 10 перестановок заявки, возникает стабильно, 11 перестановку отвергает. Выложу лог, как только возникнет еще раз. Хотелось бы, чтобы эти ограничения тоже как-то учитывались при котировании.
По Смарту совсем другая картина - там обновление не приходит о заявке. А тут типичное ограничение объема, что как раз является правильным поведением (не можете вы продать, потому что к лимиту подошли)... С кол-вом транзакций все просто - Strategy.Interval.
|
|
Thanks:
|
|
|
|