начудил :(
Atom
3/17/2010
denis


теперь при запуске экспорта по ДДЕ одно ядро проца грузится по полной. где можно было так ошибиться? стратегия еще не запущена.

когда стратегия работает, то ошибками сыпет 2010-03-16T20:51:09.8750000+03:00 [0] None => Strategy runned ошибка ренжа: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: min at Ecng.ComponentModel.Range1.ValidateBounds(T min, T max) at Ecng.ComponentModel.Range1.Init(T min, T max) at Ecng.ComponentModel.Range`1..ctor(T min, T max) at SampleSMA.MainWindow.DrawSma() in D:\trade\bot\code\stockSharp \SampleSMA\MainWindow.xaml.cs:line 267 Первый этап обработки исключения типа "System.ArgumentOutOfRangeException" в приложении Ecng.ComponentModel.dll 2010-03-16T20:53:35.7187500+03:00 [0] None => Strategy stopping 2010-03-16T20:53:35.8281250+03:00 [0] None => Strategy stopped

код private void DrawSma() { // нас не интересует текущая свечка, так как она еще не сформировалась // и из нее нельзя брать цену закрытия

                   // вычисляем временные отрезки текущей свечки
                    var bounds = _timeFrame.GetCandleBounds(_trader);

                   // если появились новые полностью сформированные свечки
                    if (_lastCandleTime < bounds.Min)
                    {
            try
            {
                // отстут с конца интервала, чтобы не захватить

текущую свечку. var endOffset = TimeSpan.FromSeconds(1); bounds = new Range<DateTime>(_lastCandleTime + _timeFrame, bounds.Min - endOffset); // line 267

               // получаем эти свечки
                var candles =

_candleManager.GetTimeFrameCandles(_strategy.Security, _timeFrame, bounds);

но перед этим еще вилы были с вот этим this._trader.NewTrades += (_all_trades) => this.Sync(() => { try { var _lt = _all_trades.Last(tmp => tmp.Security.Code.Equals(mysec)); // trap papir.price = _lt.Price; } catch (InvalidOperationException ex) { Console.WriteLine("ошибка определения последней сделки: {0}", ex); } }); кривой обработчик всех сделок может грузить проц при выключенной стратегии?


Tags:


Thanks:


<< < 2 3 4 
denis

Avatar
Date: 3/23/2010
Reply


С профилировщиком пока не разобрался :( Но воспроизвел тупняк на Sample и не смог воспроизвести на SampleConsole. Сейчас еще немного поковыряю и добавлю стратегию. О резалтах отпишусь.

Thanks:

denis

Avatar
Date: 3/23/2010
Reply


Сделал пока вывод пять сек свечи на риме - летает! :) Супер! респекты и уважуха! Пошел приделывать остальные куски. ссылка на код

https://docs.google.com/leaf?id=0Bw2gQDvf41vtNTVkOWEwNTgtMmU1ZS00MjRmLTg1NDEtNGM2NGU4NjliNmFh&sort=name&layout=list&num=50

Thanks:

Mikhail Sukhov

Avatar
Date: 3/23/2010
Reply


Я что-то упустил. Проблема идентифицировалась?

Thanks:

denis

Avatar
Date: 3/23/2010
Reply


Летает в SampleConsole, а в Sample и SampleSMA - тормозит. Куда думать

  • не знаю, но может из-за GUI-морды и синхронизаций с ней. Кусок из SampleConsole:

                             const string secCode = "RIM0";
                              Security lkoh = null;
              CandleManager _candleManager;
              TimeSpan _timeFrame = TimeSpan.FromSeconds(5);
              StrategyManager _manager = new StrategyManager();
    
                             const string quikPath = @"C:\Program Files\info\";
    
                             // создаем соединение с Quik-ом
                              using (var trader = new QuikTrader(quikPath))
                              {
                  _candleManager = new CandleManager(trader);
                                      // подписываемся на событие появление инструментов
                                      trader.NewSecurities += securities =>
                                      {
                                              if (lkoh == null)
                                              {
                                                      // находим Лукойл и присваиваем ее переменной lkoh
                                                      lkoh = securities.FirstOrDefault(sec => sec.Code == secCode);
    
                                                     if (lkoh != null)
                                                      {
                                                              Console.WriteLine("Инструмент Лукойл появился");
    
                                                             //new TestCandleManager(trader, lkoh).NewCandles += (t, c) =>
    

Console.WriteLine(c.Count()); //waitHandle.Set();

_candleManager.RegisterTimeFrameCandles(lkoh, _timeFrame); _candleManager.NewCandles += (token, candles) => { //DrawCandles(candles); var _lc = candles.LastOrDefault(tmp => tmp.Security.Code.Equals("RIM0")); if (_lc != null) Console.WriteLine("o = " + _lc.OpenPrice + " h = " + _lc.HighPrice + " l = " + _lc.LowPrice + " c = " + _lc.ClosePrice);

                           };
                                                    }
                                            }
                                    };
                //

                                   // запускаем экспорт по DDE
                                    //trader.StartDde(new[] { trader.SecuritiesTable });
                trader.StartDde();

если и есть нагрузка, то она пренебрежительно мала и не поддается обнаружению "на глаз"

Thanks:
<< < 2 3 4 

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy