[BLOCKER] [S#3.0beta] трейды не регистрируются под статегией


[BLOCKER] [S#3.0beta] трейды не регистрируются под статегией
Atom
09.02.2011


Есть стратегия унаследованная от TimeFrameStrategy.

Для каждой новой свечки делается следующее:
Код

OpenWealth.Log.Out("ДО отмены приказов");
OpenWealth.Log.Out("Strategy.Orders " + base.Orders.Count);
OpenWealth.Log.Out("Strategy.StopOrders " + base.StopOrders.Count);
OpenWealth.Log.Out("Strategy.Orders active " + base.Orders.Count(o => o.State == OrderStates.Active));
OpenWealth.Log.Out("Strategy.StopOrders active " + base.StopOrders.Count(o => o.State == OrderStates.Active));
OpenWealth.Log.Out("Trader.Orders " + Const.SmartInstance.Trader.Orders.Count());
OpenWealth.Log.Out("Trader.StopOrders " + Const.SmartInstance.Trader.StopOrders.Count());

// отменяем активные заявки
base.CancelActiveOrders();

OpenWealth.Log.Out("ПОСЛЕ отмены приказов");
OpenWealth.Log.Out("Strategy.Orders " + base.Orders.Count);
OpenWealth.Log.Out("Strategy.StopOrders " + base.StopOrders.Count);
OpenWealth.Log.Out("Strategy.Orders active " + base.Orders.Count(o => o.State == OrderStates.Active));
OpenWealth.Log.Out("Strategy.StopOrders active " + base.StopOrders.Count(o => o.State == OrderStates.Active));
OpenWealth.Log.Out("Trader.Orders " + Const.SmartInstance.Trader.Orders.Count());
OpenWealth.Log.Out("Trader.StopOrders " + Const.SmartInstance.Trader.StopOrders.Count());

// регистрируем заявки (обычным способом, без котирования)
StrategyInstance.Alerts.ForEach(a => base.RegisterOrder(Translations.AlertToOrder(a)));

System.Threading.Thread.Sleep(10000);
OpenWealth.Log.Out("ПОСЛЕ регистрации новых приказов");
OpenWealth.Log.Out("Strategy.Orders " + base.Orders.Count);
OpenWealth.Log.Out("Strategy.StopOrders " + base.StopOrders.Count);
OpenWealth.Log.Out("Strategy.Orders active " + base.Orders.Count(o => o.State == OrderStates.Active));
OpenWealth.Log.Out("Strategy.StopOrders active " + base.StopOrders.Count(o => o.State == OrderStates.Active));
OpenWealth.Log.Out("Trader.Orders " + Const.SmartInstance.Trader.Orders.Count());
OpenWealth.Log.Out("Trader.StopOrders " + Const.SmartInstance.Trader.StopOrders.Count());


Для каждой свечки (для одной итерации) создаются два ордера.
Вывод на второй свечке (на первой аналогично добавились только в общий список):
Код

09.02.2011 19:41:35 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] ДО отмены приказов
09.02.2011 19:41:35 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.Orders 0
09.02.2011 19:41:35 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.StopOrders 0
09.02.2011 19:41:35 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.Orders active 0
09.02.2011 19:41:35 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.StopOrders active 0
09.02.2011 19:41:35 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Trader.Orders 2
09.02.2011 19:41:35 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Trader.StopOrders 2
09.02.2011 19:41:35 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] ПОСЛЕ отмены приказов
09.02.2011 19:41:35 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.Orders 0
09.02.2011 19:41:35 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.StopOrders 0
09.02.2011 19:41:35 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.Orders active 0
09.02.2011 19:41:35 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.StopOrders active 0
09.02.2011 19:41:35 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Trader.Orders 2
09.02.2011 19:41:35 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Trader.StopOrders 2
09.02.2011 19:41:35 [OpenWealth.StockSharp.SmartCOM.<Smart_NewOrders>b__18] RTS-3.11 -1 Conditional
09.02.2011 19:41:35 [OpenWealth.StockSharp.SmartCOM.<Smart_NewOrders>b__18] RTS-3.11 +1 Conditional
09.02.2011 19:41:45 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] ПОСЛЕ регистрации новых приказов
09.02.2011 19:41:45 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.Orders 0
09.02.2011 19:41:45 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.StopOrders 0
09.02.2011 19:41:45 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.Orders active 0
09.02.2011 19:41:45 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.StopOrders active 0
09.02.2011 19:41:45 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Trader.Orders 4
09.02.2011 19:41:45 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Trader.StopOrders 4


На третьей свечке добавляются наконец в список стратегии, но только в стоп ордера:
Код

09.02.2011 19:51:36 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] ДО отмены приказов
09.02.2011 19:51:36 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.Orders 0
09.02.2011 19:51:36 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.StopOrders 0
09.02.2011 19:51:36 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.Orders active 0
09.02.2011 19:51:36 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.StopOrders active 0
09.02.2011 19:51:36 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Trader.Orders 4
09.02.2011 19:51:36 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Trader.StopOrders 4
09.02.2011 19:51:36 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] ПОСЛЕ отмены приказов
09.02.2011 19:51:36 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.Orders 0
09.02.2011 19:51:36 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.StopOrders 0
09.02.2011 19:51:36 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.Orders active 0
09.02.2011 19:51:37 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.StopOrders active 0
09.02.2011 19:51:37 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Trader.Orders 4
09.02.2011 19:51:37 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Trader.StopOrders 4
09.02.2011 19:51:37 [OpenWealth.StockSharp.SmartCOM.<Smart_NewOrders>b__18] RTS-3.11 -1 Conditional
09.02.2011 19:51:37 [OpenWealth.HeadRealTradeStockSharp.OnOrderChanged] Ордер изменен. Состояние: Active статус: ReceiveByServer время снятия: бумага: RTS-3.11 b/s: Sell средняя цена: 0 тип: Conditional
09.02.2011 19:51:37 [OpenWealth.StockSharp.SmartCOM.<Smart_NewOrders>b__18] RTS-3.11 +1 Conditional
09.02.2011 19:51:37 [OpenWealth.HeadRealTradeStockSharp.OnOrderChanged] Ордер изменен. Состояние: Active статус: ReceiveByServer время снятия: бумага: RTS-3.11 b/s: Buy средняя цена: 0 тип: Conditional
09.02.2011 19:51:47 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] ПОСЛЕ регистрации новых приказов
09.02.2011 19:51:47 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.Orders 0
09.02.2011 19:51:47 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.StopOrders 2
09.02.2011 19:51:47 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.Orders active 0
09.02.2011 19:51:47 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.StopOrders active 2
09.02.2011 19:51:47 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Trader.Orders 6
09.02.2011 19:51:47 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Trader.StopOrders 6


Т.е. 2е ошибки:
1. ордера не всегда добавляются в список ордеров стратегии (чаще не добавляются)
2. в одном случае стоп ордер добавляется в Orders и StopOrders, в другом только в StopOrders

Что я делаю не так?

Теги:


Спасибо:


< 1 2 3 4  >
Greene-nsk

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


Это стоп заявки, через веб интрефейс на них смотрю - у них все в порядке.

Проверил через врапер. Я подписан на события:
ITrader.NewOrders += Smart_NewOrders;
strategy.NewOrder += OnNewOrder;
strategy.NewStopOrder += OnNewOrder;
strategy.OrderChanged += OnOrderChanged;
strategy.StopOrderChanged += OnOrderChanged;

Код

10.02.2011 20:01:54 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] ПОСЛЕ отмены приказов
10.02.2011 20:01:54 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.Orders 0
10.02.2011 20:01:54 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.StopOrders 0
10.02.2011 20:01:54 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.Orders active 0
10.02.2011 20:01:54 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.StopOrders active 0
10.02.2011 20:01:54 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Trader.Orders 0
10.02.2011 20:01:54 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Trader.StopOrders 0
10.02.2011 20:01:55 [OpenWealth.StockSharp.SmartCOM.<Init>b__0] Wrapper new order: 71839626 544268683
10.02.2011 20:01:56 [OpenWealth.StockSharp.SmartCOM.<Init>b__1] Wrapper order changed: BP5758-RF-01 RTS-3.11_FT StOrder_State_Pending StOrder_Action_Buy StOrder_Type_StopLimit False
10.02.2011 20:01:56 [OpenWealth.StockSharp.SmartCOM.<Init>b__1] Wrapper order changed: BP5758-RF-01 RTS-3.11_FT StOrder_State_Pending StOrder_Action_Buy StOrder_Type_StopLimit False
10.02.2011 20:01:56 [OpenWealth.HeadRealTradeStockSharp.OnOrderChanged] Ордер изменен. Состояние: Active статус: ReceiveByServer время снятия: бумага: RTS-3.11 b/s: Buy средняя цена: 0 тип: Conditional
10.02.2011 20:01:56 [OpenWealth.StockSharp.SmartCOM.<Init>b__1] Wrapper order changed: BP5758-RF-01 RTS-3.11_FT StOrder_State_Pending StOrder_Action_Sell StOrder_Type_StopLimit False
10.02.2011 20:01:56 [OpenWealth.StockSharp.SmartCOM.<Init>b__0] Wrapper new order: 71839625 544268689
10.02.2011 20:01:56 [OpenWealth.StockSharp.SmartCOM.<Init>b__1] Wrapper order changed: BP5758-RF-01 RTS-3.11_FT StOrder_State_Pending StOrder_Action_Sell StOrder_Type_StopLimit False
10.02.2011 20:02:04 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] ПОСЛЕ регистрации новых приказов
10.02.2011 20:02:05 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.Orders 0
10.02.2011 20:02:05 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.StopOrders 1
10.02.2011 20:02:05 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.Orders active 0
10.02.2011 20:02:05 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Strategy.StopOrders active 1
10.02.2011 20:02:05 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Trader.Orders 2
10.02.2011 20:02:05 [OpenWealth.StockSharp.StrategyAdapter.OnProcess] Trader.StopOrders 2


После выполнения:
1. в itinvest веб интрефейсе обе заявки, которые и должны быть
2. в Trader.Orders и Trader.StopOrders 2 стоп заявки sell и buy какие и должны быть
3!!! Пришло только одно событие strategy.StopOrderChanged для стоп ордера buy. для sell не пришло.
4!!! Не пришло ни одного события ITrader.NewOrders

Видно, что для события sell врапер orderChanged метод пришел раньше, чем NewOrder. Но это только предположение. Может быть это совпадение.
Спасибо:

Greene-nsk

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


Mikhail Sukhov Перейти
Так, код явно не тривиален. А вот когда приходят только ITrader.NewOrders Вы уверены, что это стоп заявки? Плюс, отключит SmartTrader.AutoSave.


Я не говорил, что приходят только ITrader.NewOrders. Как видно из последнего теста как раз наоборот, они и не приходят. Приходили только ITrader.NewStopOrders, хотя регистрация идет в оба списка.
Спасибо:

Mikhail Sukhov

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


Greene-nsk Перейти
Mikhail Sukhov Перейти
Так, код явно не тривиален. А вот когда приходят только ITrader.NewOrders Вы уверены, что это стоп заявки? Плюс, отключит SmartTrader.AutoSave.


Я не говорил, что приходят только ITrader.NewOrders. Как видно из последнего теста как раз наоборот, они и не приходят. Приходили только ITrader.NewStopOrders, хотя регистрация идет в оба списка.


Так, я видимо сам ошибку. Посмотрел в документацию, ITrader.NewOrders для стоп заявок не должен вызываться. Так что это правильно. Термин "в оба списка" мне не совсем понятен.
Спасибо:

Greene-nsk

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


Mikhail Sukhov Перейти

Так, я видимо сам ошибку. Посмотрел в документацию, ITrader.NewOrders для стоп заявок не должен вызываться. Так что это правильно. Термин "в оба списка" мне не совсем понятен.


Имел ввиду эти: ITrader.Orders и ITrader.StopOrders.

Про основную ошибку, что трейды не добавляются в strategy.NewStopOrders посмотрите? Я могу еще как-нибудь помочь?
Спасибо:

Mikhail Sukhov

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


Greene-nsk Перейти
Mikhail Sukhov Перейти

Так, я видимо сам ошибку. Посмотрел в документацию, ITrader.NewOrders для стоп заявок не должен вызываться. Так что это правильно. Термин "в оба списка" мне не совсем понятен.


Имел ввиду эти: ITrader.Orders и ITrader.StopOrders.

Про основную ошибку, что трейды не добавляются в strategy.NewStopOrders посмотрите? Я могу еще как-нибудь помочь?


Да, посмотрю, конечно. Только нужно все четко выяснить. Проблема в стоп заявках и только? Обычные работают номрмально? ITrader.NewStopOrders вызывается? Strategy.NewStopOrders не вызывается? SmartTrader.AutoSave = false?
Спасибо:

Greene-nsk

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


Mikhail Sukhov Перейти
Greene-nsk Перейти
Mikhail Sukhov Перейти

Так, я видимо сам ошибку. Посмотрел в документацию, ITrader.NewOrders для стоп заявок не должен вызываться. Так что это правильно. Термин "в оба списка" мне не совсем понятен.


Имел ввиду эти: ITrader.Orders и ITrader.StopOrders.

Про основную ошибку, что трейды не добавляются в strategy.NewStopOrders посмотрите? Я могу еще как-нибудь помочь?


Да, посмотрю, конечно. Только нужно все четко выяснить. Проблема в стоп заявках и только? Обычные работают номрмально? ITrader.NewStopOrders вызывается? Strategy.NewStopOrders не вызывается? SmartTrader.AutoSave = false?


1. другие заявки не смотрел. использую только стоп пока.
2. ITrader.NewStopOrders вызывается
3. когда проблема случается, Strategy.NewStopOrders не вызывается
4. Trader.IsAutoSaveOrders = false;
Спасибо:

Mikhail Sukhov

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


Greene-nsk Перейти

1. другие заявки не смотрел. использую только стоп пока.
2. ITrader.NewStopOrders вызывается
3. когда проблема случается, Strategy.NewStopOrders не вызывается
4. Trader.IsAutoSaveOrders = false;


Вы писали до этого что работаете с ITrader.Orders и ITrader.StopOrders, поэтому вполне мог подумать, что и с обычными глючит. Можете еще показать код, как Вы регистрируете стратегию?
Спасибо:

Greene-nsk

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


Код


public class StrategyAdapter : TimeFrameStrategy
{
...
}
// создаем менеджер стратегий
StrategyManager = new RealTimeStrategyManager(Const.SmartInstance.Trader);
...
foreach (WealthScript strategy in StrategiesInfo.Strategies)
{
StrategyAdapter sAdapter = new StrategyAdapter(strategy);
...
Log.Out("Регистрируем стратегию: " + sAdapter.StrategyInstance.strategyID);
StrategyManager.Register(sAdapter, portfolio, security);
...
sAdapter.Start();
}

Спасибо:

Mikhail Sukhov

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


Greene-nsk Перейти
Код

StrategyAdapter sAdapter = new StrategyAdapter(strategy);
...
Log.Out("Регистрируем стратегию: " + sAdapter.StrategyInstance.strategyID);
StrategyManager.Register(sAdapter, portfolio, security);


Я так понимаю, StrategyAdapter - это наследник от Strategy? А список заявок вы смотрите в sAdapter или в переданном strategy?
Спасибо:

Greene-nsk

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


Mikhail Sukhov Перейти
Greene-nsk Перейти
Код

StrategyAdapter sAdapter = new StrategyAdapter(strategy);
...
Log.Out("Регистрируем стратегию: " + sAdapter.StrategyInstance.strategyID);
StrategyManager.Register(sAdapter, portfolio, security);


Я так понимаю, StrategyAdapter - это наследник от Strategy? А список заявок вы смотрите в sAdapter или в переданном strategy?


Все смотрю и заявки исполняю из StrategyAdapter sAdapter (производный от TimeFrameStrategy). Из WealthScript strategy берется только инфа о приказах на исполнение.
Спасибо:
< 1 2 3 4  >

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

loading
clippy