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


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

Теги:


Спасибо:


OvcharenkoVI

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


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

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

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

Код


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/
Спасибо: qpile

ra81

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


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

OvcharenkoVI

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


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

qpile

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


Сделал в точности как Вы и сказали. Но событие почему то не приходит :(. Вставлял код в стандартный SimpleGUI
Код
 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)
            {
            
            }
        }
Спасибо:

OvcharenkoVI

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


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

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

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

qpile

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


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

Sergey Masyura

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


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


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

qpile

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


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

Alexander

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


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


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

loading
clippy