[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

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

Теги:


Спасибо:


<< < 2 3 4 
Mikhail Sukhov

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


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


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

Greene-nsk

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


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

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

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
Спасибо:

Mikhail Sukhov

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


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


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

Greene-nsk

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


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


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


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

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

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;
}
}


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

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

loading
clippy