Ошибка при построении графика


Ошибка при построении графика
Atom
9/11/2012


Добрый день!
В таймере постоянно обновляю график. Через некоторое время вылазиет такая ошибка
Ошибка.png 57 KB (104)

Tags:


Thanks:




OvcharenkoVI

Avatar
Date: 9/11/2012
Reply


Скорее всего рассоединяется с сервом терминал.

Подход к построению графика в корне неверный.

Используйте:

Code


public void CreateChart()
{
Trader.CandlesFinished += (series, candles) => OnCandlesFinished(series, candles);

Trader.CandlesChanged += (series, candles) => OnCandlesChanged(series, candles);

Trader.CandlesStarted += (series, candles) => OnCandlesStarted(series, candles);

Trader.RegisterCandles(security, (TimeSpan)AlfaTimeFrames.Minute1, security.GetMarketTime().AddDays(-1));
}

public void OnCandlesFinished(CandleSeries series, IEnumerable<Candle> candles)
{
    foreach(var c in candles)
    {
          stockChart1.DataSets[0].Items.Add(c);
          strategy.Candles.Add(c);
    }
}


Юзайте последнюю сборку с codeplex http://stocksharp.codeplex.com/
Thanks:

ra81

Avatar
Date: 9/12/2012
Reply


В принципе проблема основная в том что нельзя коннектор постоянно опрашивать по истории. Это процедура будет мешать получению данных от терминала и может привести вот к таким загогулинам. Как вариант можно использовать GetLocalHistory которая берет историю с терминала а не сервера. Она работает много быстрее и не должна вызывать таких ошибок. Ну или способ как написано постом выше. Вообще чтобы не опрашивать терминал про историю, нужно использовать CandleManager. Потому как способ выше по факту все равно опрашивает терминал только запрос идет на пару свечек.
Thanks:

OvcharenkoVI

Avatar
Date: 9/12/2012
Reply


Родион, я кстати раньше тоже юзал candleManager, но всегда получается трабла с неккоректностью текущей свечи. В альфе все же удобнее использовать стандартный механизм.
Thanks:

qpile

Avatar
Date: 9/12/2012
Reply


Сделал в точности как Вы и сказали. Но событие почему то не приходит :(. Вставлял код в стандартный SimpleGUI
Code
 public void CreateChart()
        {
            Trader.CandlesFinished += (series, candles) => OnCandlesFinished(series, candles);



            Trader.RegisterCandles(SelectedSecurity, (TimeSpan)AlfaTimeFrames.Minute1, DateTime.Now.AddDays(-1));
        }

        public void OnCandlesFinished(CandleSeries series, IEnumerable<Candle> candles)
        {
            foreach (var c in candles)
            {
            
            }
        }
Thanks:

OvcharenkoVI

Avatar
Date: 9/12/2012
Reply


Чуть переделал SampleAlfaCandles.

Изучайте: http://dump.ru/file/5849512

В терминале должен быть открыт график инструмента с таким же таймфреймом, что и выбрали.
Thanks:

qpile

Avatar
Date: 9/12/2012
Reply


Добавил получение сделок . Буду ждать. Спасибо!
Только я сейчас все на старой 4.0 сижу. С лицензией чето никак не заморочусь. Там подобное можно реализовать?
Thanks:

Sergey Masyura

Avatar
Date: 9/12/2012
Reply


qpile GoTo
Добавил получение сделок . Буду ждать. Спасибо!
Только я сейчас все на старой 4.0 сижу. С лицензией чето никак не заморочусь. Там подобное можно реализовать?


Лицензия высылается сейчас всем без ограничений на почту.
Thanks:

qpile

Avatar
Date: 9/12/2012
Reply


Попытался обновить библиотеки.
Теперь выдает ошибку вот тут
Trader.RegisterCandles(security, timeFrame, from, out candleSeries);
Что не принимает 4 аргумента.. С Чем это может быть связано
Thanks:

Alexander

Avatar
Date: 9/12/2012
Reply


С тем что логика и метод поменялся. Читайте документацию.
Thanks:


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

loading
clippy