﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Не приходят данные в CandleManager</title>
  <id>~/topic/2541/ne-prihodyat-dannye-v-candlemanager/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-05-06T11:47:08Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=2541" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/18210/</id>
    <title type="text">Понял, спасибо</title>
    <published>2012-04-13T10:58:18Z</published>
    <updated>2012-04-13T10:58:18Z</updated>
    <author>
      <name>Кот Матроскин</name>
      <uri>https://stocksharp.com/users/808/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Понял, спасибо</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/18194/</id>
    <title type="text">Такая строка из кода выше: private Logger _logger; //Логгер событий Нигде в документации не найду пр...</title>
    <published>2012-04-13T03:42:01Z</published>
    <updated>2012-04-13T03:42:01Z</updated>
    <author>
      <name>Mirovan</name>
      <uri>https://stocksharp.com/users/797/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Кот Матроскин &lt;a href="https://stocksharp.com/posts/m/18186/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Такая строка из кода выше:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
private Logger _logger;                 //Логгер событий&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Нигде в документации не найду про класс Logger. Устарело или не там ищу?&lt;br /&gt;Или просто это не S#?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Это мой собственный класс.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/18186/</id>
    <title type="text">Такая строка из кода выше: private Logger _logger; //Логгер событий Нигде в документации не найду пр...</title>
    <published>2012-04-12T15:08:38Z</published>
    <updated>2012-04-12T15:09:55Z</updated>
    <author>
      <name>Кот Матроскин</name>
      <uri>https://stocksharp.com/users/808/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Такая строка из кода выше:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
private Logger _logger;                 //Логгер событий&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Нигде в документации не найду про класс Logger. Устарело или не там ищу?&lt;br /&gt;Или просто это не S#?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/17824/</id>
    <title type="text">Для получения свечек real-time необходима подписка на сделки // начинаем получать текущие сделки (дл...</title>
    <published>2012-03-29T08:53:06Z</published>
    <updated>2012-03-29T08:53:46Z</updated>
    <author>
      <name>Marcopolo</name>
      <uri>https://stocksharp.com/users/6457/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Для получения свечек real-time необходима подписка на сделки&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

// начинаем получать текущие сделки (для построения свечек реального времени)
_trader.RegisterTrades(_strategy.Security);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Опоздал :)</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/17822/</id>
    <title type="text">Похоже решил проблему. Данные стали приходить, когда добавил строчку: securities.ForEach(_trader.Reg...</title>
    <published>2012-03-29T08:44:11Z</published>
    <updated>2012-03-29T08:44:11Z</updated>
    <author>
      <name>Mirovan</name>
      <uri>https://stocksharp.com/users/797/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Похоже решил проблему.&lt;br /&gt;&lt;br /&gt;Данные стали приходить, когда добавил строчку:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;securities.ForEach(_trader.RegisterTrades);</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/17821/</id>
    <title type="text">Попробуйте _candleManager = new CandleManager(_trader); foreach (var builder in _candleManager.Sourc...</title>
    <published>2012-03-29T08:00:46Z</published>
    <updated>2012-03-29T08:00:46Z</updated>
    <author>
      <name>Mirovan</name>
      <uri>https://stocksharp.com/users/797/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Marcopolo &lt;a href="https://stocksharp.com/posts/m/17820/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Попробуйте&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

_candleManager = new CandleManager(_trader);
foreach (var builder in _candleManager.Sources.OfType&amp;lt;CandleBuilder&amp;gt;())
{
   builder.IsSyncRegister = true;
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;К сожалению не помогло.&lt;br /&gt;&lt;br /&gt;Прогнал еще раз SampleCandles и SampleSMA - там данные приходят.&lt;br /&gt;&lt;br /&gt;Может проблема в том что программа не корректно завершает работу.&lt;br /&gt;&lt;br /&gt;Добавил :&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

        protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
        {
            if (_trader != null)
            {
                _trader.StopExport();
                _trader.Disconnect();

                _trader.Dispose();
            }

            base.OnClosing(e);
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Пока не помогло</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/17820/</id>
    <title type="text">Попробуйте _candleManager = new CandleManager(_trader); foreach (var builder in _candleManager.Sourc...</title>
    <published>2012-03-29T07:31:11Z</published>
    <updated>2012-03-29T07:31:11Z</updated>
    <author>
      <name>Marcopolo</name>
      <uri>https://stocksharp.com/users/6457/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Попробуйте&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

_candleManager = new CandleManager(_trader);
foreach (var builder in _candleManager.Sources.OfType&amp;lt;CandleBuilder&amp;gt;())
{
   builder.IsSyncRegister = true;
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/17819/</id>
    <title type="text">Т.е. исторические данные приходят нормально, а real- time нет (тупо не происходит событие от CandleM...</title>
    <published>2012-03-29T06:46:12Z</published>
    <updated>2012-03-29T06:46:12Z</updated>
    <author>
      <name>Mirovan</name>
      <uri>https://stocksharp.com/users/797/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Т.е. исторические данные приходят нормально, а real- time нет (тупо не происходит событие от CandleManager&amp;#39;а)&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/17818/</id>
    <title type="text">в SampleCandles приходят? Перепроверил проект SampleSmartCandles. Там вызов метода DrawCandles на по...</title>
    <published>2012-03-29T06:43:52Z</published>
    <updated>2012-03-29T06:43:52Z</updated>
    <author>
      <name>Mirovan</name>
      <uri>https://stocksharp.com/users/797/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mirovan &lt;a href="https://stocksharp.com/posts/m/17816/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Alexander Mukhanchikov &lt;a href="https://stocksharp.com/posts/m/17811/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;в SampleCandles приходят?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Перепроверил проект SampleSmartCandles. Там вызов метода DrawCandles на подписанные CandlesStarted/CandlesChanged тоже не происходит.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Перепроверил проект SampleSmartCandles. Там вызов метода DrawCandles на подписанные CandlesStarted/CandlesChanged тоже не происходит.&lt;br /&gt;&lt;br /&gt;Тестирование проводил на Демо-сервере ИТинвеста.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/17817/</id>
    <title type="text">Попробовал воспользоваться вместо CandleManager - CandleBuilder&amp;apos;ом - результат тот же :( Ума не прил...</title>
    <published>2012-03-29T05:30:30Z</published>
    <updated>2012-03-29T05:30:30Z</updated>
    <author>
      <name>Mirovan</name>
      <uri>https://stocksharp.com/users/797/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Попробовал воспользоваться вместо CandleManager - CandleBuilder&amp;#39;ом - результат тот же :(&lt;br /&gt;Ума не приложу где у меня ошибка :(</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/17811/</id>
    <title type="text">в SampleCandles приходят?</title>
    <published>2012-03-28T19:02:55Z</published>
    <updated>2012-03-28T19:02:55Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">в SampleCandles приходят?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/17810/</id>
    <title type="text">Доброго дня! Пытаюсь получить Real Time данные через SmartCom. S# версия 4.0.22 Однако не происходят...</title>
    <published>2012-03-28T18:57:44Z</published>
    <updated>2012-03-28T18:57:44Z</updated>
    <author>
      <name>Mirovan</name>
      <uri>https://stocksharp.com/users/797/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Доброго дня!&lt;br /&gt;&lt;br /&gt;Пытаюсь получить Real Time данные через SmartCom. S# версия 4.0.22&lt;br /&gt;Однако не происходят события на получение/изменение свечей.&lt;br /&gt;Подскажи, где у меня ошибка ?&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Threading;

using Ecng.Collections;
using Ecng.Common;
using Ecng.ComponentModel;
using Ecng.Xaml;

using StockSharp.Algo;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Logging;
using StockSharp.Algo.Strategies;
using StockSharp.BusinessEntities;
using StockSharp.Smart;
using StockSharp.Xaml;

namespace SimpleRobot
{
    /// &amp;lt;summary&amp;gt;
    /// Логика взаимодействия для MainWindow.xaml
    /// &amp;lt;/summary&amp;gt;
    public partial class MainWindow : Window
    {
        
        private string _login = &amp;quot;&amp;quot;;
        private string _password = &amp;quot;&amp;quot;;
        private string _account = &amp;quot;&amp;quot;;
        private string _ipAddress = &amp;quot;95.131.26.246&amp;quot;;
        private string secCode = &amp;quot;RIM2&amp;quot;;

        private readonly TimeSpan _timeFrame = (TimeSpan)SmartTimeFrames.Minute15;  //Таймфрейм
        private static Portfolio _portfolio;    //Портфель
        private Security _sec;                  //Эмитент - Акция/Фьючерс/Опцион

        private SmartTrader _trader;            //Шлюз для SmartCOM
        private Logger _logger;                 //Логгер событий
        private CandleManager _candleManager;   //Менеджер свечей

        private bool _isConnected = false;              //Подключены ли
        private bool _isStartRecivePorfolio = false;    //Начилась ли загрузка портфелей
        private bool _isStartReciveSecurity = false;    //Начилась ли загрузка эмитентов

        private CandleToken token;


        public MainWindow()
        {
            InitializeComponent();
        }


        //Инициализация робота
        private void button1_Click(object sender, RoutedEventArgs e)
        {

            //Логгер
            _logger = new Logger(textBox1);

            //Ip address
            System.Net.IPAddress addr = System.Net.IPAddress.Parse(_ipAddress);
            System.Net.IPEndPoint server = new System.Net.IPEndPoint(addr, 8090);

            //Create Smart Trade шлюз
            _trader = new SmartTrader(_login, _password, server);

            //Подписываемся на все необходимые события
            _trader.Connected += Trader_Connected;
            _trader.Disconnected += Trader_Disconnected;
            _trader.NewHistoryCandles += Trader_GetHistoryCandles;
            _trader.ReConnectionSettings.ConnectionRestored += Trader_ConnectionRestored;
            _trader.ConnectionError += Trader_ConnectionError;
            _trader.NewPortfolios += Trader_NewPortfolios;
            _trader.NewSecurities += Trader_NewSecurities;

            // инициализируем механизм переподключения (будет автоматически соединяться
            // каждые 10 секунд, если шлюз потеряется связь с сервером)
            _trader.ReConnectionSettings.Interval = TimeSpan.FromSeconds(10);
            _trader.ReConnectionSettings.WorkingTime = Exchange.Rts.WorkingTime;

            _logger.Write(&amp;quot;Инициализия программы&amp;quot;);
        }


        //Соединение и передача данных
        private void button2_Click(object sender, RoutedEventArgs e)
        {
            //Устанавливаем соединение
            _trader.Connect();
        }



        //Запуск робота
        private void button3_Click(object sender, RoutedEventArgs e)
        {
            //Создаем менеджер свечей и подписываемся на события
            _candleManager = new CandleManager(_trader);
            _candleManager.CandlesStarted += CandleManager_GetCandles;
            _candleManager.CandlesChanged += CandleManager_GetCandles;
            _candleManager.CandlesFinished += CandleManager_GetCandles;

            //Устанавливаени таймфрейм для менеджер свечей
            TimeSpan currentTimeFrame = TimeSpan.FromSeconds(60);
            token = _candleManager.RegisterTimeFrameCandles(_sec, currentTimeFrame);
            //token = _candleManager.RegisterTimeFrameCandles(_sec, 1000);
            
            /*
            var candles = _candleManager.GetTimeFrameCandles(_sec, _timeFrame);

            foreach (Candle candle in candles)
            {
                //Выводим свечи в формате OHLC
                _logger.Write(candle.Time.ToString() + &amp;quot; &amp;quot; + candle.OpenPrice + &amp;quot; &amp;quot; + candle.HighPrice + &amp;quot; &amp;quot; + candle.LowPrice + &amp;quot; &amp;quot; + candle.ClosePrice + &amp;quot; &amp;quot; + candle.CloseVolume);
            }
            */
        }




        private void Trader_Connected()
        {
            this.GuiAsync(() =&amp;gt;
            {
                _isConnected = true;
                _logger.Write(&amp;quot;Успешно подключены&amp;quot;);

                //Начинаем Экспорт данных
                _trader.StartExport();
            });
        }


        private void Trader_Disconnected()
        {
            this.GuiAsync(() =&amp;gt;
            {
                if (_isConnected)
                {
                    _isConnected = false;
                    _trader.Disconnect();
                    _logger.Write(&amp;quot;Отключены&amp;quot;);
                }
            });
        }


        private void Trader_GetHistoryCandles(CandleToken token, IEnumerable&amp;lt;TimeFrameCandle&amp;gt; candles)
        {
            this.GuiAsync(() =&amp;gt;
            {
                _logger.Write(&amp;quot;Принимаю исторические данные&amp;quot;);
                //_candlesStarted.SafeInvoke(token, candles);
                //_candlesFinished.SafeInvoke(token, candles);
            });
        }


        private void Trader_ConnectionRestored()
        {
            this.GuiAsync(() =&amp;gt;
            {
                _logger.Write(&amp;quot;Соединение восстановлено&amp;quot;);
            });
        }


        private void Trader_ConnectionError(Exception e)
        {
            this.GuiAsync(() =&amp;gt;
            {
                _logger.Write(&amp;quot;ОШИБКА: Ошибка соединения&amp;quot; + e.Message + &amp;quot; [&amp;quot; + e.ToString() + &amp;quot;]&amp;quot;);
            });
        }

        
        private void Trader_NewPortfolios(IEnumerable&amp;lt;Portfolio&amp;gt; portfolios)
        {
            this.GuiAsync(() =&amp;gt;
            {
                if (_isConnected)
                {
                    if (!_isStartRecivePorfolio)
                    {
                        _logger.Write(&amp;quot;Получение портфелей...&amp;quot;);
                        _isStartRecivePorfolio = true;
                    }


                    // необходимое условие работы в SmartCOM
                    int pCount = 0;
                    foreach (Portfolio p in portfolios)
                    {
                        pCount++;
                        _trader.RegisterPortfolio(p);
                        _logger.Write(&amp;quot;Инициализация портфеля &amp;quot; + p.ToString());
                    }

                    if (pCount == 0)
                    {
                        _logger.Write(&amp;quot;Портфели не найдены&amp;quot;);
                    }
                    else
                    {
                        // находим нужный портфель и присваиваем его переменной _portfolio
                        _portfolio = portfolios.FirstOrDefault(p =&amp;gt; p.Name == _account);

                        if (_portfolio != null)
                        {
                            _logger.Write(&amp;quot;Портфель &amp;quot; + _account + &amp;quot; появился&amp;quot;);
                        }
                    }
                }
            });
        }



        private void Trader_NewSecurities(IEnumerable&amp;lt;Security&amp;gt; securities)
        {
            this.GuiAsync(() =&amp;gt;
            {
                if (_isConnected)
                {
                    if (!_isStartReciveSecurity)
                    {
                        _logger.Write(&amp;quot;Получение инструментов...&amp;quot;);
                        _isStartReciveSecurity = true;
                    }


                    if (_isConnected)
                    {
                        var sec = securities.FirstOrDefault(s =&amp;gt; s.Code == secCode &amp;amp;&amp;amp; s.Type == SecurityTypes.Future);
                        if (sec != null)
                        {
                            _logger.Write(&amp;quot;Инструмент &amp;quot; + secCode + &amp;quot; успешно найден&amp;quot;);

                            _sec = sec;
                        }
                    }
                }
            });
        }



        private void CandleManager_GetCandles(CandleToken token, IEnumerable&amp;lt;Candle&amp;gt; candles)
        {
            this.GuiAsync(() =&amp;gt;
            {
                foreach (Candle candle in candles)
                {
                    //Выводим свечи в формате OHLC
                    _logger.Write(candle.Time.ToString() + &amp;quot; &amp;quot; + candle.OpenPrice + &amp;quot; &amp;quot; + candle.HighPrice + &amp;quot; &amp;quot; + candle.LowPrice + &amp;quot; &amp;quot; + candle.ClosePrice + &amp;quot; &amp;quot; + candle.CloseVolume);
                }
            });
        }



    }
}

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>