Ошибка при тестировании
Atom
19.11.2012
vk37


При тестировании периодически возникает::::spoiler

System.NullReferenceException: Object reference not set to an instance of an object.
   at #=qkoSo$d923scmg_sYtLvcgC1T0ft2pstJcPersksBoZKwr0BQW4jZhfAQW1xMmBut.#=qg67115AckIhO5d2zxyCZAQ==(Boolean #=qLADmQb8cJ4Y_nd7XlXaXQw==)
   at #=qkoSo$d923scmg_sYtLvcgC1T0ft2pstJcPersksBoZKwr0BQW4jZhfAQW1xMmBut.#=qm3V9Kfo72M8TE2px_zLo9xQM1RL6SFBGqLB3If2f6Fw=.#=qPPbjei2wiECkz_QeThbm2A5qP5NSKd6ArG8wtLmBsyA=()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.TimerQueueTimer.CallCallback()
   at System.Threading.TimerQueueTimer.Fire()
   at System.Threading.TimerQueue.FireNextTimers()



Спасибо:


Alexander

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


что надо чтоб воспроизвести? на Sample воспроизводится?

Спасибо:

vk37

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


На Sample не порбовал. Код такой примерно::::spoiler

public class Optimizer
{
    private IStorageRegistry _storageRegistry;
    private LocalMarketDataDrive _defaultDrive;
 
    public void Optimize()
    {
        var startTime = new DateTime(2012, 9, 10);
        var stopTime = new DateTime(2012, 11, 8);
        _storageRegistry = new StorageRegistry();
        _defaultDrive = (LocalMarketDataDrive)_storageRegistry.DefaultDrive;
        _defaultDrive.Path = @"D:\DBs\HydraData\Smart";
        var security = Securities.Instance.RtsF;
        var periods = MyStrategy.GetParamCombinations();
 
        Parallel.ForEach(periods, new ParallelOptions { MaxDegreeOfParallelism = 8 }, period =>
            {
                using (var waitHandle = new AutoResetEvent(false))
                {
                    var rts = security.Clone();
                    var portfolio = new Portfolio { Name = "test account", BeginValue = 100000m };
                    var trader = new EmulationTrader(
                        new[] { rts },
                        new[] { portfolio },
                        _storageRegistry)
                        {
                            UseMarketDepth = true,
                            StorageRegistry = _storageRegistry,
                        };
 
                    trader.MarketEmulator.Settings.Latency = TimeSpan.FromSeconds(1);
                    trader.RegisterMarketDepth(rts);
                    trader.Connect();
                    trader.StartExport();
                    var strategy = new MyStrategy(period)
                    {
                        Volume = 1,
                        Security = rts,
                        Portfolio = portfolio,
                        Trader = trader,
                        CommissionManager = rts.GetComissionManager(),
                    };
 
                    trader.StateChanged += (oldState, newState) =>
                        {
                            if (trader.State == EmulationStates.Started)
                                strategy.Start();
                            else if (trader.State == EmulationStates.Stopped)
                            {
                                new ExcelStrategyReport(strategy, path).Generate();
                                waitHandle.Set();
                            }
                        };
 
                    trader.Start(startTime, stopTime);
                    waitHandle.WaitOne();
                }
            });
    }
}
Спасибо:

Alexander

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


Зачем всё это делать в параллельном foreach? Попробуйте Sample, воспроизведётся там - будем смотреть. Нет - ищите проблему у себя.

Спасибо:

vk37

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


Alexander Mukhanchikov: Зачем всё это делать в параллельном foreach?Хочется, чтобы все ядра задействовались: так тестируется быстрее.

Спасибо:

Alexander

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


vk37:

Alexander Mukhanchikov: Зачем всё это делать в параллельном foreach?Хочется, чтобы все ядра задействовались: так тестируется быстрее.

А почитать как это сделать правильно в документации или посмотреть исходники примера кто-то мешает?

Спасибо:

vk37

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


Да пробовал я ваш Баскет Трейдер. С него начинал. Чем-то он мне не понравился. Память, чтоли всю сразу под себя забирал. Ну может еще раз попробую.

Спасибо:

Mikhail Sukhov

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


vk37: Да пробовал я ваш Баскет Трейдер. С него начинал. Чем-то он мне не понравился.

Спасибо:

vk37

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


Михаил, у Вас все пользователи вашей библиотеки вызывают подобные ассоциации, или только избранные?

Спасибо:


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

loading
clippy