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

[BLOCKER] [S#3.0beta] трейды не регистрируются под статегией
Atom
2/9/2011
Greene-nsk


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

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

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());


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

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


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

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

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

Tags:


Thanks:


<< < 2 3 4 
Mikhail Sukhov

Avatar
Date: 3/2/2011
Reply


Greene-nsk
Да, вывожу (уверен процентов на 80% - тот кусок кода уже переделал, лог удален). Лог стратегии в этом куске "не задет".
Order.Id добавил. В следующий раз будет.


И еще не забудьте номер транзакции, Order.TransactionId + сразу выведите его в лог после метода RegisterOrder... Пока по логу я исправил несколько косяков. Но в целом лог говорит о том, что заявки должны были прийти в стратегию.
Thanks:

Greene-nsk

Avatar
Date: 3/2/2011
Reply


Возможно последняя "не регистрация" произошла по моей вине. Моя стратегия останавливается после регистрации приказа, но иногда ДО того, как придет событие NewMyTrades.
Это может быть причиной не прихода события NewMyTrades? Если да, то похоже вопрос закрыт.

Лог трейда, который не зарегистрировался:
Code

02.03.2011 18:03:26 [OpenWealth.StockSharp.StrategySimpleQuoting.OnRunning] Регистрируем приказ: RTS-3.11 -1*0 Market
02.03.2011 18:03:26 [OpenWealth.StockSharp.StrategySimpleQuoting.OnRunning] Приказ сразу после RegisterOrder: RTS-3.11 -1*0 Market ST3276-RF-01 None остаток: 1 ID: 0 transactionID: 64153703 время снятия:
02.03.2011 18:03:26 [OpenWealth.StockSharp.StrategyProcessOrder.OnLog] ЛОГ стратегии SSQ str: Стратегия запущена.
02.03.2011 18:03:26 [OpenWealth.StockSharp.TraderInitializator.<Init>b__1] Wrapper order changed: ST3276-RF-01 RTS-3.11_FT StOrder_State_Pending StOrder_Action_Sell StOrder_Type_Market True 0 1 0 1 02.03.2011 18:03:14 67124253 0 1
02.03.2011 18:03:26 [OpenWealth.StockSharp.TraderInitializator.<Init>b__0] Wrapper new order: 64153703 67124253
02.03.2011 18:03:26 [OpenWealth.StockSharp.TraderInitializator.<Init>b__1] Wrapper order changed: ST3276-RF-01 RTS-3.11_FT StOrder_State_Open StOrder_Action_Sell StOrder_Type_Market True 0 1 0 1 02.03.2011 18:03:14 67124253 367308489 2089884016
02.03.2011 18:03:26 [OpenWealth.StockSharp.TraderInitializator.<Terminal_NewOrders>b__19] RTS-3.11 -1*0 Market
02.03.2011 18:03:26 [OpenWealth.StockSharp.StrategyProcessOrder.OnNewOrder] Strategy.NewOrder: RTS-3.11 -1*0 Market ST3276-RF-01 Active Done остаток: 1 ID: 367308489 transactionID: 64153703 время снятия: 02.03.2011 18:03:14
02.03.2011 18:03:26 [OpenWealth.StockSharp.StrategyProcessOrder.OnLog] ЛОГ стратегии SSQ str: Стратегия останавливается.
02.03.2011 18:03:27 [OpenWealth.StockSharp.TraderInitializator.<Init>b__1] Wrapper order changed: ST3276-RF-01 RTS-3.11_FT StOrder_State_Filled StOrder_Action_Sell StOrder_Type_Market True 189390 1 0 0 02.03.2011 18:03:31 67124253 367308489 0
02.03.2011 18:03:27 [OpenWealth.StockSharp.TraderInitializator.<Terminal_OrdersChanged>b__1d] RTS-3.11 -1*0 Market ST3276-RF-01 Done Done остаток: 0 ID: 367308489 transactionID: 64153703 время снятия: 02.03.2011 18:03:14
02.03.2011 18:03:27 [OpenWealth.StockSharp.StrategyProcessOrder.OnLog] ЛОГ стратегии SSQ str: Стратегия остановлена.
02.03.2011 18:03:27 [OpenWealth.StockSharp.TraderInitializator.<Terminal_NewMyTrades>b__17] 12854674 RTS-3.11 -1*196280
Thanks:

Mikhail Sukhov

Avatar
Date: 3/2/2011
Reply


Greene-nsk
Возможно последняя "не регистрация" произошла по моей вине. Моя стратегия останавливается после регистрации приказа, но иногда ДО того, как придет событие NewMyTrades.
Это может быть причиной не прихода события NewMyTrades? Если да, то похоже вопрос закрыт.


Все равно должно. А точно после 18:03:27 событие не вызывалось?
Thanks:

Greene-nsk

Avatar
Date: 3/3/2011
Reply


Mikhail Sukhov
Greene-nsk
Возможно последняя "не регистрация" произошла по моей вине. Моя стратегия останавливается после регистрации приказа, но иногда ДО того, как придет событие NewMyTrades.
Это может быть причиной не прихода события NewMyTrades? Если да, то похоже вопрос закрыт.


Все равно должно. А точно после 18:03:27 событие не вызывалось?


Точно. Ломалось 2 раза, первый раз после 2 сделок, второй раз после 10. 5 минут ждал.
Потом переделал, чтобы стратегия останавливалась только после прихода Strategy.NewMyTrades и 100 сделок прошло без проблем. Т.е. пока не могу повторить.

Ломалась стратегия вида:
Code

class StrategySimpleQuoting : Strategy
{
private Order _Order;

public StrategySimpleQuoting(Order order)
{
_Order = order;
_Order.Price = 0.0;
_Order.Type = OrderTypes.Market;
}

protected override void OnRunning()
{
OpenWealth.Log.Out("Регистрируем приказ: " + _Order.ToStringShort());
base.RegisterOrder(_Order);
OpenWealth.Log.Out("Приказ сразу после RegisterOrder: " + _Order.ToStringLong());
base.OnRunning();
}

protected override StrategyProcessResults OnProcess()
{
return StrategyProcessResults.Stop;
}
}


Могу поповторять, если надо.
Thanks:
<< < 2 3 4 

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy