Здравствуйте.
Ситуация такая.
- Скачал Гидрой тиковые сделки по фьючу RTS
- Взял за основу SampleHistoryTesting
- Заменил стратегию на собственную
- Не работает :)
Если запустить SampleHistoryTesting - то все тестируется, данные по сделкам читаются, свечки приходят. То есть для SmaStrategy вызывается событие ProcessCandle, которое задано как
protected override void OnStarting()
{
_series
.WhenCandlesFinished()
.Do(ProcessCandle)
.Apply(this);
// запоминаем текущее положение относительно друг друга
_isShortLessThenLong = ShortSma.LastValue < LongSma.LastValue;
base.OnStarting();
}
Моя же стратегия основана не на свечках, мне нужно обработать каждую сделку. Делаю так:
protected override void OnStarting()
{
base.Security.Exchange.IsSupportAtomicReRegister = false;
this.SuspendRules(() =>
{
base.Security.WhenNewTrades().Do(NewTrade).Apply(this);
});
base.OnStarting();
}
И метод NewTrade никогда не вызывается. Дополнительно пробовал:
- Менял MarketTimeChangedInterval = TimeSpan.FromMilliseconds(1) при создании эмулятора:
m_Trader = new EmulationTrader(new[] { Sec }, new[] { Por }, Str)
{
MarketTimeChangedInterval = TimeSpan.FromMilliseconds(1),
WorkingTime = Exchange.Rts.WorkingTime,
UseMarketDepth = false,
};
- Пробовал правило base.Security.WhenChanged().Do(NewTrade).Apply(this);
Вопрос - как заставить эмулятор прогнать через стратегию все исторические сделки, а не свечки? Спасибо.
评论 (3)
登录 或 创建账户, 登录或注册以发表评论
Вообще сделки приходят нормально. Сам тестил на 4.1.2 версии стратегию со стоплосями и они бы не работали без сделок. В вашем коде вроде ничего не вижу кривого. Но где-то косяк есть это точно.
Возможно он вот тут
Как вариант предлагается переписать в
Возможно, еще не хватает Trader.RegisterTrades.
Да! С Trader.RegisterTrades все заработало.