BasketStrategy Orders
Atom Ответить
08.10.2013


raf

Фотография
Делаю так:
Код


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 своих дочерних стратегий?

Теги:


Спасибо:




3 Ответов
esper

Фотография
Программист
Дата: 09.10.2013
Ответить


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

raf

Фотография
Дата: 09.10.2013
Ответить


версия 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

Фотография
Дата: 10.10.2013
Ответить


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


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy