← 戻る

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

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

このトピックは参考になりましたか?

トピックを共有

コメント (9)

ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください

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 著者

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

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

Sergey Masyura
Sergey Masyura

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

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

qpile
qpile 著者

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

Alexander
Alexander

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