Версия 4.0.8 Генерирую данные и стакан.
var security = new Security
{
Id = "RIU9@RTS",
Code = "RIU9",
Name = "RTS-9.09",
MinStepSize = 5,
MinStepPrice = 2,
Decimals = 0,
Exchange = Exchange.Test,
};
_trader = new EmulationTrader(
new[] { security },
new[] { portfolio })
{
MarketTimeChangedInterval = timeFrame
};
_trader.TradeGenerators[security] = new RandomWalkTradeGenerator(security, 155000);
_trader.DepthGenerators[security] = new TrendMarketDepthGenerator(security);
В самой стратегии пробую считать объем сделок за период, но:
Int32 count = base.Trader.Trades.Count();
``` всегда = 0.
Хотя в ```csharp
Trade tr = base.Security.LastTrade;
``` есть информация по сделке.
Приход новых сделок в стратегии обрабатываю вот так:
```csharp
protected override void OnStarting()
{
this
.When(base.Security.SecurityNewTrades())
.Do(CalcVolume);
base.OnStarting();
}
В чем может быть проблема?
Comentarios (6)
Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario
Народ, так должны хранится сделки или нет? В примерах аналогичная ситуация.
Int32 count = base.Trader.Trades.Count();
Для тестирования также нужны сделки. Пытался обойти данную проблему созданием собственной ThreadSafeObservableCollection<Trade> sdelki, столкнулся со следующим:
по событию
Если перед запуском делаю остановку на строке добавления сделки в коллекцию и далее прогоняю с пом F11, то сделки сохраняются в коллекцию и расчет идет. Без остановки в коллекцию добавляется только одна сделка, хотя тики продолжают генерироваться и событие срабатывает и через некоторое время вылетает Win32Exception. Так понимаю что-то с потоками...
Без стэк трэйса невозможно сказать. Но похоже что да, проблема с потоками у вас возникает в алгоритме.
Создание шлюза:
из Strategy:
Пытаюсь сделать, чтобы заработал данный элементарный расчет.
так у вас памяти не хватает, ведь написано. очищайте этот список, не держите в нём абсолютно все сделки.