← Voltar

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

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

Este tópico foi útil?

Compartilhar tópico

Comentários (9)

Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário

OvcharenkoVI
OvcharenkoVI

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

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

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



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
ra81

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

qpile
OvcharenkoVI
OvcharenkoVI

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

qpile
qpile
qpile Autor

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

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

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

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

qpile
qpile
qpile Autor

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

Sergey Masyura
Sergey Masyura

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

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

qpile
qpile Autor

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

Alexander
Alexander

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