сабж. Причем по родительской стратегии событие приходит. Я так понимаю, стратегия успевает остановиться перед вызовом этого события. Это так задумано или баг?
var strategy = new MyStrategy(Security)
{
Volume = 1,
Portfolio = Portfolio_FORTS,
Trader = this.Trader,
};
strategy.NewMyTrades += t =>
{
MyTrade tr = t.FirstOrDefault();
Debug.WriteLine("Родительская стратегия: Пришла новая сделка - " + DateTime.Now.ToLongTimeString() + " " + tr.ToString());
};
В коде стратеги при получении сигнала прописываю:
var order = base.BuyAt(Security.LastTrade.Price);
var qstr = new MyMarketQuotingStrategy(order, 0m.Pips(order.Security), 0m.Pips(order.Security)) { PriceType = MarketPriceTypes.Middle, MaxErrorCount = 1 };
qstr.NewMyTrades += t =>
{
MyTrade tr = t.FirstOrDefault();
Debug.WriteLine("Котирование: Пришла новая сделка - " + DateTime.Now.ToLongTimeString() + " " + tr.ToString());
};
base.ChildStrategies.Add(qstr);
Получаю: Родительская стратегия: Пришла новая сделка - 17:07:56 StockSharp.BusinessEntities.MyTrade Родительская стратегия: Пришла новая сделка - 17:08:17 StockSharp.BusinessEntities.MyTrade
Причем иногда сделка по котированию все-таки приходит, иногда с третьего раза, бывает позже.
Комментарии (10)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Версия 3.2.2, проблема осталась. Использую следующий код
Событие не приходит.
Молный лог можете привести котирования? Плюс как используется стратегия? Куда-то добавляется или сама по себе работает? Как создается?
Есть базовая стратегия, которая при срабатывании кастомного правила вызывается Do(Action1):
код MyMarketQuotingStrategy приведен выше. Сама базовая стратегия вызывается следующим образом:
Вывод дебаггера (после первой сделки все события вызвались, потом нет):
лог:
Меня в логе напрягает один момент. Сначала он выводит запись от родительской стратегии, а затем от дочерней. А так быть не может. Потому что родительская подписывается последней строчкой в Action1 (неявно при добавлении в ChildStrategies).
Можете выкинуть все люгику работы, и прислать пример мне на mika сбк сайт?
Ок, получил. Буду разбираться.
Нашел проблему. Ситуация следующая. MyMarketQuotingStrategy успешно отработало и было удалено. Сделки приходят чуть с запозданием, поэтому оно то успевало вызвать событие, то нет. Решается проблема так:
Пока не знаю, насколько это правильно.
public VolumeDiffStrategy(Security sec)