Здравствуйте.
Ситуация такая.
- Скачал Гидрой тиковые сделки по фьючу 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);
Вопрос - как заставить эмулятор прогнать через стратегию все исторические сделки, а не свечки? Спасибо.
Kommentare (3)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Вообще сделки приходят нормально. Сам тестил на 4.1.2 версии стратегию со стоплосями и они бы не работали без сделок. В вашем коде вроде ничего не вижу кривого. Но где-то косяк есть это точно.
Возможно он вот тут
Как вариант предлагается переписать в
Возможно, еще не хватает Trader.RegisterTrades.
Да! С Trader.RegisterTrades все заработало.