Есть базовая стратегия, которая при срабатывании кастомного правила вызывается Do(Action1):
private void Action1()
{
Debug.WriteLine(DateTime.Now.ToLongTimeString() + " - Запускаем действие");
var order = _signalDirection == OrderDirections.Buy ? base.BuyAt(Security.LastTrade.Price) : base.SellAt(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());
};
this.ChildStrategies.Add(qstr);
}
код MyMarketQuotingStrategy приведен выше.
Сама базовая стратегия вызывается следующим образом:
private void LounchStrat()
{
var cm = new CandleManager(Trader);
var cf = new VolumeTimeFrameCandleFactory();
cm.UnRegisterCandleFactory<TimeFrameCandle>();
cm.RegisterCandleFactory(cf);
var strategy = new VolumeDiffStrategy(Security, SignalSecurity, 18000, (-5.08).Percents(), 0.03.Percents(), 0.03.Percents())
{
Volume = 1,
Portfolio = Portfolio_FORTS,
Trader = this.Trader,
IsShortEnabled = true,
CandleManager = cm,
};
cm.RegisterCandles<TimeFrameCandle, TimeSpan>(SignalSecurity, TimeSpan.FromSeconds(25));
if (!Trader.Terminal.IsQuotesOpened(Security)) Trader.Terminal.OpenQuotes(Security);
Trader.RegisterQuotes(Security);
strategy.NewMyTrades += t =>
{
MyTrade tr = t.FirstOrDefault();
Debug.WriteLine("Базовая стратегия: Пришла новая сделка - " + DateTime.Now.ToLongTimeString() + " " + tr.ToString());
};
var fileLogger = new FileStrategyLogger("log.txt");
fileLogger.Strategies.Add(strategy);
strategy.Start();
}
Вывод дебаггера (после первой сделки все события вызвались, потом нет):
16:19:25 - вызван OnRunning
16:19:38 - Запускаем действие
Базовая стратегия: Пришла новая сделка - 16:19:40 StockSharp.BusinessEntities.MyTrade
Котирование: Пришла новая сделка - 16:19:40 StockSharp.BusinessEntities.MyTrade
Котирование внутри: Пришла новая сделка - 16:19:40 StockSharp.BusinessEntities.MyTrade
The thread '<No Name>' (0xc90) has exited with code 0 (0x0).
16:20:00 - Запускаем действие
Базовая стратегия: Пришла новая сделка - 16:20:01 StockSharp.BusinessEntities.MyTrade
16:20:29 - Запускаем действие
Базовая стратегия: Пришла новая сделка - 16:20:34 StockSharp.BusinessEntities.MyTrade
лог:
VDS 23.06.2011 16:19:26.313 Стратегия запущена.
VDS 23.06.2011 16:19:38.359 [MMQS] Стратегия запущена.
VDS 23.06.2011 16:19:38.566 [MMQS] Регистрация новой заявки на Buy с ценой 9622 и объемом 1.
VDS 23.06.2011 16:19:38.577 [MMQS] Заявка 58736846 на Buy отправлена с ценой 9622 объемом 1.
VDS 23.06.2011 16:19:38.678 [MMQS] Заявка 58736846 не имеет состояния.
VDS 23.06.2011 16:19:40.297 [MMQS] Цена текущей 9622 и лучшей 9621.
VDS 23.06.2011 16:19:40.297 [MMQS] Котирование заявки 58736846 на Buy с ценой 9622 объемом 1.
VDS 23.06.2011 16:19:40.301 [MMQS] Перекотирование зарегистрировано для заявки 58736847 на Buy с ценой 9621 объемом 1.
VDS 23.06.2011 16:19:40.336 [MMQS] Позиция изменилась на 1.
VDS 23.06.2011 16:19:40.336 [MMQS] Заканчиваем котирование с неисполненным объемом равный 0.
VDS 23.06.2011 16:19:40.336 [MMQS] Стратегия останавливается.
VDS 23.06.2011 16:19:40.340 [MMQS] Стратегия остановлена.
VDS 23.06.2011 16:20:00.823 [MMQS] Стратегия запущена.
VDS 23.06.2011 16:20:00.889 [MMQS] Регистрация новой заявки на Buy с ценой 9618 и объемом 1.
VDS 23.06.2011 16:20:00.889 [MMQS] Заявка 58736848 на Buy отправлена с ценой 9618 объемом 1.
VDS 23.06.2011 16:20:01.091 [MMQS] Заявка 58736848 не имеет состояния.
VDS 23.06.2011 16:20:01.659 [MMQS] Позиция изменилась на 1.
VDS 23.06.2011 16:20:01.659 [MMQS] Заканчиваем котирование с неисполненным объемом равный 0.
VDS 23.06.2011 16:20:01.659 [MMQS] Стратегия останавливается.
VDS 23.06.2011 16:20:01.659 [MMQS] Стратегия остановлена.
VDS 23.06.2011 16:20:30.155 [MMQS] Стратегия запущена.
VDS 23.06.2011 16:20:30.302 [MMQS] Регистрация новой заявки на Buy с ценой 9619 и объемом 1.
VDS 23.06.2011 16:20:30.302 [MMQS] Заявка 58736849 на Buy отправлена с ценой 9619 объемом 1.
VDS 23.06.2011 16:20:34.764 [MMQS] Позиция изменилась на 1.
VDS 23.06.2011 16:20:34.764 [MMQS] Заканчиваем котирование с неисполненным объемом равный 0.
VDS 23.06.2011 16:20:34.764 [MMQS] Стратегия останавливается.
VDS 23.06.2011 16:20:34.764 [MMQS] Стратегия остановлена.