← Zurück

BasketStrategy Orders

Делаю так:



OnStarted(){
  /* ... */
  this._basketstrategy = new BasketStrategy(BasketStrategyFinishModes.All);
  this.ChildStrategies.Add(_basketstrategy);
  _basketstrategy.ChildStrategies.AddRange(strategiesarray);

  /* ... */
}

OnTimer(){
  var childstrategies = (this.ChildStrategies != null) ? this.ChildStrategies.ToArray() : new Strategy[] { };
  var basketstrategies = (this._basketstrategy != null) ? _basketstrategy.ChildStrategies.ToArray() : new Strategy[]{};
  var orders1 = this.Orders.ToArray();
  var orders2 = this._basketstrategy.Orders.ToArray();
  var orders3 = childstrategies.Select(s => s.Orders).SelectMany(so => so).ToArray();
  var orders4 = basketstrategies.Select(s => s.Orders).SelectMany(so => so).ToArray();
}


после выставления ордера одной из дочерних стратегий из strategiesarray только orders4 возвращает выставленные ордера. остальные показывают отсутствие ордеров.

Так и должно быть или это ошибка? Почему parent-стратегии не транслируют массив ордеров Orders своих дочерних стратегий?

War dieses Thema hilfreich?

Thema teilen

Kommentare (3)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

esper
esper

Кто именно выставляет заявки? Какая версия библиотек? Что в логах?

raf
raf Autor

версия 4.1.19.1

в логах сообщений об ошибках нет:

2013/10/09 21:23:44.850|Debug |mystrategy__8d0935bc7573de2|Переход из состояния Stopped в Started. 2013/10/09 21:23:44.850|Debug |BS_SECURITY1@FORTS_MYACCOUNT|Переход из состояния Stopped в Started. 2013/10/09 21:23:44.850|Debug |SLDC_SECURITY1@FORTS_MYACCOUNT|Переход из состояния Stopped в Started. 2013/10/09 21:23:44.850| |SLDC_SECURITY1@FORTS_MYACCOUNT|Стратегия запущена. [0,2]. Позиция при старте 0. 2013/10/09 21:23:44.858| |SLDC_SECURITY1@FORTS_MYACCOUNT|DBG|b|OnStarted() executing 2013/10/09 21:23:44.862|Debug |SLDC_SECURITY2@FORTS_MYACCOUNT|Переход из состояния Stopped в Started. 2013/10/09 21:23:44.862| |SLDC_SECURITY2@FORTS_MYACCOUNT|Стратегия запущена. [0,2]. Позиция при старте 0. 2013/10/09 21:23:44.864| |SLDC_SECURITY2@FORTS_MYACCOUNT|DBG|b|OnStarted() executing 2013/10/09 21:23:44.864| |BS_SECURITY1@FORTS_MYACCOUNT|Стратегия запущена. [2,1]. Позиция при старте 0. 2013/10/09 21:23:44.866| |mystrategy__8d0935bc7573de2|DBG|BasketStrategy was started (_basketstrategy.WhenStarted()) 2013/10/09 21:23:44.866| |mystrategy__8d0935bc7573de2|Стратегия запущена. [1,-1]. Позиция при старте 0. 2013/10/09 21:23:44.868| |mystrategy__8d0935bc7573de2|DBG|a|OnStarted() executing current process state = Started, position = 0 trades:- strategies: BS_SECURITY1@FORTS_MYACCOUNT state:Started; trades:0; position:0 SLDC_SECURITY1@FORTS_MYACCOUNT state:Started; trades:0; position:0 SLDC_SECURITY2@FORTS_MYACCOUNT state:Started; trades:0; position:0 mystrategy__8d0935bc7573de2 state:Started; trades:0; position:0 2013/10/09 21:23:44.870| |mystrategy__8d0935bc7573de2|DBG|OnStarting() executing 2013/10/09 21:23:44.878| |mystrategy__8d0935bc7573de2|DBG|a|ProcessStateChanged was detected current process state = Started, position = 0 trades:- strategies: BS_SECURITY1@FORTS_MYACCOUNT state:Started; trades:0; position:0 SLDC_SECURITY1@FORTS_MYACCOUNT state:Started; trades:0; position:0 SLDC_SECURITY2@FORTS_MYACCOUNT state:Started; trades:0; position:0 mystrategy__8d0935bc7573de2 state:Started; trades:0; position:0 2013/10/09 21:23:44.847| |BasketTrader|USER|New robot mystrategy__8d0935bc7573de2 was added to Panel App_ControlA__8d0910d62699c3c RobotArray 2013/10/09 21:23:44.850|Debug |mystrategy__8d0935bc7573de2|Переход из состояния Stopped в Started. 2013/10/09 21:23:44.850|Debug |BS_SECURITY1@FORTS_MYACCOUNT|Переход из состояния Stopped в Started. 2013/10/09 21:23:44.850|Debug |SLDC_SECURITY1@FORTS_MYACCOUNT|Переход из состояния Stopped в Started. 2013/10/09 21:23:44.850| |SLDC_SECURITY1@FORTS_MYACCOUNT|Стратегия запущена. [0,2]. Позиция при старте 0. 2013/10/09 21:23:44.858| |SLDC_SECURITY1@FORTS_MYACCOUNT|DBG|b|OnStarted() executing 2013/10/09 21:23:44.862|Debug |SLDC_SECURITY2@FORTS_MYACCOUNT|Переход из состояния Stopped в Started. 2013/10/09 21:23:44.862| |SLDC_SECURITY2@FORTS_MYACCOUNT|Стратегия запущена. [0,2]. Позиция при старте 0. 2013/10/09 21:23:44.864| |SLDC_SECURITY2@FORTS_MYACCOUNT|DBG|b|OnStarted() executing 2013/10/09 21:23:44.864| |BS_SECURITY1@FORTS_MYACCOUNT|Стратегия запущена. [2,1]. Позиция при старте 0. 2013/10/09 21:23:44.866| |mystrategy__8d0935bc7573de2|DBG|BasketStrategy was started (_basketstrategy.WhenStarted()) 2013/10/09 21:23:44.866| |mystrategy__8d0935bc7573de2|Стратегия запущена. [1,-1]. Позиция при старте 0. 2013/10/09 21:23:44.868| |mystrategy__8d0935bc7573de2|DBG|a|OnStarted() executing current process state = Started, position = 0 trades:- strategies: BS_SECURITY1@FORTS_MYACCOUNT state:Started; trades:0; position:0 SLDC_SECURITY1@FORTS_MYACCOUNT state:Started; trades:0; position:0 SLDC_SECURITY2@FORTS_MYACCOUNT state:Started; trades:0; position:0 mystrategy__8d0935bc7573de2 state:Started; trades:0; position:0 2013/10/09 21:23:44.870| |mystrategy__8d0935bc7573de2|DBG|OnStarting() executing 2013/10/09 21:23:44.878| |mystrategy__8d0935bc7573de2|DBG|a|ProcessStateChanged was detected current process state = Started, position = 0 trades:- strategies: BS_SECURITY1@FORTS_MYACCOUNT state:Started; trades:0; position:0 SLDC_SECURITY1@FORTS_MYACCOUNT state:Started; trades:0; position:0 SLDC_SECURITY2@FORTS_MYACCOUNT state:Started; trades:0; position:0 mystrategy__8d0935bc7573de2 state:Started; trades:0; position:0 2013/10/09 21:23:45.312| |SLDC_SECURITY2@FORTS_MYACCOUNT|Регистрация новой Limit (0x2D260A8) заявки на Sell с ценой 3000 и объемом 3. 2013/10/09 21:23:45.316| |SmartTrader|RegisterOrder: 0/0 Продажа Цена=3000 Объем=3 Сост=None Бал=0 2013/10/09 21:23:45.319|Debug |SLDC_SECURITY2@FORTS_MYACCOUNT|Правило 'Полное исполнение 83005946/0 (0x3093D2)'. Подписалось на события. 2013/10/09 21:23:45.319|Debug |SLDC_SECURITY2@FORTS_MYACCOUNT|Правило 'Отмена заявки 83005946/0 (0xD3E52D)'. Подписалось на события. 2013/10/09 21:23:45.319|Debug |SLDC_SECURITY2@FORTS_MYACCOUNT|Правило 'Ошибка регистрации заявки 83005946/0 (0x331DFCF)'. Подписалось на события. 2013/10/09 21:23:45.320| |SmartTrader|New order: 83005946/0 Продажа Цена=3000 Объем=3 Сост=Pending Бал=3 2013/10/09 21:23:45.312| |SLDC_SECURITY2@FORTS_MYACCOUNT|Регистрация новой Limit (0x2D260A8) заявки на Sell с ценой 3000 и объемом 3. 2013/10/09 21:23:45.316| |SmartTrader|RegisterOrder: 0/0 Продажа Цена=3000 Объем=3 Сост=None Бал=0 2013/10/09 21:23:45.319|Debug |SLDC_SECURITY2@FORTS_MYACCOUNT|Правило 'Полное исполнение 83005946/0 (0x3093D2)'. Подписалось на события. 2013/10/09 21:23:45.319|Debug |SLDC_SECURITY2@FORTS_MYACCOUNT|Правило 'Отмена заявки 83005946/0 (0xD3E52D)'. Подписалось на события. 2013/10/09 21:23:45.319|Debug |SLDC_SECURITY2@FORTS_MYACCOUNT|Правило 'Ошибка регистрации заявки 83005946/0 (0x331DFCF)'. Подписалось на события. 2013/10/09 21:23:45.320| |SmartTrader|New order: 83005946/0 Продажа Цена=3000 Объем=3 Сост=Pending Бал=3 2013/10/09 21:23:45.860| |SmartTrader|SmartTrader.UpdateOrder: id 0 smartId 1913906977 type Limit direction Sell price 3000 volume 3 balance 3 time 09.10.2013 21:23:45 security SECURITY2 state Pending 2013/10/09 21:23:45.863| |SmartTrader|SmartTrader.UpdateOrder: id 11524613378 smartId 1913906977 type Limit direction Sell price 3000 volume 3 balance 3 time 09.10.2013 21:23:45 security SECURITY2 state Open 2013/10/09 21:23:45.864| |SmartTrader|Order changed: 83005946/11524613378 Продажа Цена=3000 Объем=3 Сост=Active Бал=3 2013/10/09 21:23:45.868| |SLDC_SECURITY2@FORTS_MYACCOUNT|DBG|b|rxOrderRegistered was detected 2013/10/09 21:23:45.868| |SLDC_SECURITY2@FORTS_MYACCOUNT|DBG|b|WhenOrderRegistered was detected 2013/10/09 21:23:45.873|Debug |SLDC_SECURITY2@FORTS_MYACCOUNT|DBG|L|WhenRegistered 2013/10/09 21:23:45.912| |BasketTrader|DBG|New orders detecteded (1/0) 2013/10/09 21:23:45.860| |SmartTrader|SmartTrader.UpdateOrder: id 0 smartId 1913906977 type Limit direction Sell price 3000 volume 3 balance 3 time 09.10.2013 21:23:45 security SECURITY2 state Pending 2013/10/09 21:23:45.863| |SmartTrader|SmartTrader.UpdateOrder: id 11524613378 smartId 1913906977 type Limit direction Sell price 3000 volume 3 balance 3 time 09.10.2013 21:23:45 security SECURITY2 state Open 2013/10/09 21:23:45.864| |SmartTrader|Order changed: 83005946/11524613378 Продажа Цена=3000 Объем=3 Сост=Active Бал=3 2013/10/09 21:23:45.868| |SLDC_SECURITY2@FORTS_MYACCOUNT|DBG|b|rxOrderRegistered was detected 2013/10/09 21:23:45.868| |SLDC_SECURITY2@FORTS_MYACCOUNT|DBG|b|WhenOrderRegistered was detected 2013/10/09 21:23:45.873|Debug |SLDC_SECURITY2@FORTS_MYACCOUNT|DBG|L|WhenRegistered 2013/10/09 21:23:45.912| |BasketTrader|DBG|New orders detecteded (1/0)

raf
raf Autor

Кроме того в материнской стратегии события this.OrderChanged приходят, а this.OrderRegistered нет (хотя в дочерней стратегии this.OrderRegistered срабатывает) В версии 1.19 как раз баг "11. Не работает правило Strategy.WhenOrderRegistered." было написано, что вылечен. Видимо не до конца.