сабж. Причем по родительской стратегии событие приходит. Я так понимаю, стратегия успевает остановиться перед вызовом этого события. Это так задумано или баг?
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)