RandomWalkTradeGenerator не хранятся сделки

RandomWalkTradeGenerator не хранятся сделки
Atom
10.12.2011
russ


Версия 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();
        }

В чем может быть проблема?




Спасибо:


russ

Фотография
Дата: 11.12.2011
Ответить


Народ, так должны хранится сделки или нет? В примерах аналогичная ситуация.

Спасибо:

Mikhail Sukhov

Фотография
Дата: 11.12.2011
Ответить


russ: В самой стратегии пробую считать объем сделок за период, но:

Int32 count = base.Trader.Trades.Count();


Да, в эмуляции сделки не попадают в Trader.Trades.
Спасибо:

profts

Фотография
Дата: 10.01.2012
Ответить


Для тестирования также нужны сделки. Пытался обойти данную проблему созданием собственной ThreadSafeObservableCollection sdelki, столкнулся со следующим:

по событию

this .When(Security.SecurityNewTrades()) .Do(raschet); сначала идет добавление последней сделки в мою коллекцию, а затем уже необходимый расчет на основе моей коллекции: private void raschet() { sdelki.Add(Security.LastTrade); ... /// Расчет ... }

Если перед запуском делаю остановку на строке добавления сделки в коллекцию и далее прогоняю с пом F11, то сделки сохраняются в коллекцию и расчет идет. Без остановки в коллекцию добавляется только одна сделка, хотя тики продолжают генерироваться и событие срабатывает и через некоторое время вылетает Win32Exception. Так понимаю что-то с потоками...

Спасибо:

Alexander

Фотография
Дата: 10.01.2012
Ответить


Без стэк трэйса невозможно сказать. Но похоже что да, проблема с потоками у вас возникает в алгоритме.

Спасибо:

profts

Фотография
Дата: 10.01.2012
Ответить


Создание шлюза:

_trader = new EmulationTrader( new[] , new[] ) ; _trader.DepthGenerators[security] = new TrendMarketDepthGenerator(security) ;

из Strategy:

protected override void OnStarting() { sdelki = new ThreadSafeObservableCollection();

          this
                 .When(Security.SecurityNewTrades())
                 .Do(raschet);
       base.OnStarting();
      }

private void raschet() { sdelki.Add(Security.LastTrade);

        MainWindow.Instance.GuiAsync(() => sum_vol_riz010 = sdelki.Where(p => p.Time > Security.LastTrade.Time.AddSeconds(-10) &&
                  p.Security == Security).Sum(tr => tr.Volume));
      }

Пытаюсь сделать, чтобы заработал данный элементарный расчет.

Спасибо:

Alexander

Фотография
Дата: 10.01.2012
Ответить


так у вас памяти не хватает, ведь написано. очищайте этот список, не держите в нём абсолютно все сделки.

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy