﻿<?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">Ошибки при рестарте подписки на свечи 4.3.13</title>
  <id>~/topic/5415/oshibki-pri-restarte-podpiski-na-svechi-4_3_13/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-25T11:01:03Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=5415" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/34840/</id>
    <title type="text">Переделка на ожидание события Stopped в виде: for (int i = 0; i (); var a = (Action)(series =&amp;gt; { _lo...</title>
    <published>2016-06-04T05:54:05Z</published>
    <updated>2016-06-04T05:54:05Z</updated>
    <author>
      <name>agat50</name>
      <uri>https://stocksharp.com/users/28063/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Переделка на ожидание события Stopped в виде:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;br /&gt;for (int i = 0; i &amp;lt; 10; i++)&lt;br /&gt;            {&lt;br /&gt;                _logManager.Application.AddInfoLog($&amp;quot;{i} iteration&amp;quot;);&lt;br /&gt;                var marketTime = _smartTrader.CurrentTime;&lt;br /&gt;                var to = marketTime;&lt;br /&gt;                var from = to.Subtract(TimeSpan.FromDays(7));&lt;br /&gt;                var _currentSeries = new CandleSeries(typeof(TimeFrameCandle), tool, tf);&lt;br /&gt;                _candleManager.Start(_currentSeries, from, DateTimeOffset.MaxValue);&lt;br /&gt;                await Task.Delay(1000);&lt;br /&gt;                var tcs = new TaskCompletionSource&amp;lt;object&amp;gt;();&lt;br /&gt;                var a = (Action&amp;lt;CandleSeries&amp;gt;)(series =&amp;gt; {&lt;br /&gt;                    _logManager.Application.AddInfoLog($&amp;quot;Stopped event triggered {series.Security.Id}&amp;quot;);&lt;br /&gt;                    if (series == _currentSeries)&lt;br /&gt;                        tcs.TrySetResult(null);&lt;br /&gt;                });&lt;br /&gt;                _candleManager.Stopped += a;&lt;br /&gt;                try&lt;br /&gt;                {&lt;br /&gt;                    _candleManager.Stop(_currentSeries);&lt;br /&gt;                    await tcs.Task;&lt;br /&gt;                }&lt;br /&gt;                finally&lt;br /&gt;                {&lt;br /&gt;                    _candleManager.Stopped -= a;&lt;br /&gt;                }&lt;br /&gt;                await Task.Delay(1000);&lt;br /&gt;            }&lt;br /&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/34825/</id>
    <title type="text">При повторной подписке на свечи того же инструмента и того же таймфрейма в лог начинают сыпаться оши...</title>
    <published>2016-05-30T13:08:31Z</published>
    <updated>2016-05-30T13:14:52Z</updated>
    <author>
      <name>agat50</name>
      <uri>https://stocksharp.com/users/28063/</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;br /&gt;2016/05/30 15:52:09.090|       |None      |0 iteration&lt;br /&gt;2016/05/30 15:52:10.339|       |None      |1 iteration&lt;br /&gt;2016/05/30 15:52:10.341|Error  |SmartTrader|System.InvalidOperationException: Subscribing&lt;br /&gt;2016/05/30 15:52:10.351|Error  |None      |_smartTrader.Error :    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)&lt;br /&gt;   at System.Environment.get_StackTrace()&lt;br /&gt;   at VisualMacdTests.Tests.&amp;lt;&amp;gt;c__DisplayClass0_0.&amp;lt;MultipleCandleSubscription&amp;gt;b__3(Exception error) in E:\Projects\Exchange\StockSharpProjects\VisualMacd\VisualMacdTests\Tests.cs:line 53&lt;br /&gt;   at Ecng.Common.DelegateHelper.SafeInvoke&amp;#91;T&amp;#93;(Action`1 handler, T arg)&lt;br /&gt;   at StockSharp.Algo.Connector.OnProcessMessage(Message message)&lt;br /&gt;   at Ecng.Common.DelegateHelper.SafeInvoke&amp;#91;T&amp;#93;(Action`1 handler, T arg)&lt;br /&gt;   at StockSharp.Messages.InMemoryMessageChannel.&amp;lt;Open&amp;gt;b__1()&lt;br /&gt;   at Ecng.Common.Converter.&amp;lt;&amp;gt;c__DisplayClassf.&amp;lt;DoInCulture&amp;gt;b__e()&lt;br /&gt;   at Ecng.Common.Converter.DoInCulture&amp;#91;T&amp;#93;(CultureInfo cultureInfo, Func`1 func)&lt;br /&gt;   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)&lt;br /&gt;   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)&lt;br /&gt;   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)&lt;br /&gt;   at System.Threading.ThreadHelper.ThreadStart()&lt;br /&gt;2016/05/30 15:52:11.358|       |None      |2 iteration&lt;br /&gt;2016/05/30 15:52:11.359|Error  |SmartTrader|System.InvalidOperationException: Subscribed&lt;br /&gt;2016/05/30 15:52:11.360|Error  |None      |_smartTrader.Error :    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)&lt;br /&gt;   at System.Environment.get_StackTrace()&lt;br /&gt;   at VisualMacdTests.Tests.&amp;lt;&amp;gt;c__DisplayClass0_0.&amp;lt;MultipleCandleSubscription&amp;gt;b__3(Exception error) in E:\Projects\Exchange\StockSharpProjects\VisualMacd\VisualMacdTests\Tests.cs:line 53&lt;br /&gt;   at Ecng.Common.DelegateHelper.SafeInvoke&amp;#91;T&amp;#93;(Action`1 handler, T arg)&lt;br /&gt;   at StockSharp.Algo.Connector.OnProcessMessage(Message message)&lt;br /&gt;   at Ecng.Common.DelegateHelper.SafeInvoke&amp;#91;T&amp;#93;(Action`1 handler, T arg)&lt;br /&gt;   at StockSharp.Messages.InMemoryMessageChannel.&amp;lt;Open&amp;gt;b__1()&lt;br /&gt;   at Ecng.Common.Converter.&amp;lt;&amp;gt;c__DisplayClassf.&amp;lt;DoInCulture&amp;gt;b__e()&lt;br /&gt;   at Ecng.Common.Converter.DoInCulture&amp;#91;T&amp;#93;(CultureInfo cultureInfo, Func`1 func)&lt;br /&gt;   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)&lt;br /&gt;   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)&lt;br /&gt;   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)&lt;br /&gt;   at System.Threading.ThreadHelper.ThreadStart()&lt;br /&gt;2016/05/30 15:52:12.363|       |None      |3 iteration&lt;br /&gt;2016/05/30 15:52:12.364|Error  |SmartTrader|System.InvalidOperationException: Subscribed&lt;br /&gt;2016/05/30 15:52:12.364|Error  |None      |_smartTrader.Error :    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)&lt;br /&gt;   at System.Environment.get_StackTrace()&lt;br /&gt;   at VisualMacdTests.Tests.&amp;lt;&amp;gt;c__DisplayClass0_0.&amp;lt;MultipleCandleSubscription&amp;gt;b__3(Exception error) in E:\Projects\Exchange\StockSharpProjects\VisualMacd\VisualMacdTests\Tests.cs:line 53&lt;br /&gt;   at Ecng.Common.DelegateHelper.SafeInvoke&amp;#91;T&amp;#93;(Action`1 handler, T arg)&lt;br /&gt;   at StockSharp.Algo.Connector.OnProcessMessage(Message message)&lt;br /&gt;   at Ecng.Common.DelegateHelper.SafeInvoke&amp;#91;T&amp;#93;(Action`1 handler, T arg)&lt;br /&gt;   at StockSharp.Messages.InMemoryMessageChannel.&amp;lt;Open&amp;gt;b__1()&lt;br /&gt;   at Ecng.Common.Converter.&amp;lt;&amp;gt;c__DisplayClassf.&amp;lt;DoInCulture&amp;gt;b__e()&lt;br /&gt;   at Ecng.Common.Converter.DoInCulture&amp;#91;T&amp;#93;(CultureInfo cultureInfo, Func`1 func)&lt;br /&gt;   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)&lt;br /&gt;   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)&lt;br /&gt;   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)&lt;br /&gt;   at System.Threading.ThreadHelper.ThreadStart()&lt;br /&gt;2016/05/30 15:52:13.370|       |None      |4 iteration&lt;br /&gt;2016/05/30 15:52:13.371|Error  |SmartTrader|System.InvalidOperationException: Subscribed&lt;br /&gt;2016/05/30 15:52:13.371|Error  |None      |_smartTrader.Error :    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)&lt;br /&gt;   at System.Environment.get_StackTrace()&lt;br /&gt;   at VisualMacdTests.Tests.&amp;lt;&amp;gt;c__DisplayClass0_0.&amp;lt;MultipleCandleSubscription&amp;gt;b__3(Exception error) in E:\Projects\Exchange\StockSharpProjects\VisualMacd\VisualMacdTests\Tests.cs:line 53&lt;br /&gt;   at Ecng.Common.DelegateHelper.SafeInvoke&amp;#91;T&amp;#93;(Action`1 handler, T arg)&lt;br /&gt;   at StockSharp.Algo.Connector.OnProcessMessage(Message message)&lt;br /&gt;   at Ecng.Common.DelegateHelper.SafeInvoke&amp;#91;T&amp;#93;(Action`1 handler, T arg)&lt;br /&gt;   at StockSharp.Messages.InMemoryMessageChannel.&amp;lt;Open&amp;gt;b__1()&lt;br /&gt;   at Ecng.Common.Converter.&amp;lt;&amp;gt;c__DisplayClassf.&amp;lt;DoInCulture&amp;gt;b__e()&lt;br /&gt;   at Ecng.Common.Converter.DoInCulture&amp;#91;T&amp;#93;(CultureInfo cultureInfo, Func`1 func)&lt;br /&gt;   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)&lt;br /&gt;   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)&lt;br /&gt;   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)&lt;br /&gt;   at System.Threading.ThreadHelper.ThreadStart()&lt;br /&gt;&lt;/div&gt;&lt;/div&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;br /&gt;2016/05/30 15:52:18.521|Error  |SmartTrader|System.InvalidOperationException: Series TimeFrameCandle_RIM6@FORTS_00-01-00 was not started earlier.&lt;br /&gt;   at StockSharp.Algo.Candles.CandleManagerContainer.AddCandle(CandleSeries series, Candle candle)&lt;br /&gt;   at System.Action`2.Invoke(T1 arg1, T2 arg2)&lt;br /&gt;   at Ecng.Common.DelegateHelper.SafeInvoke&amp;#91;T1,T2&amp;#93;(Action`2 handler, T1 arg1, T2 arg2)&lt;br /&gt;   at StockSharp.Algo.Candles.CandleManager.ExternalCandleSource.OnNewCandles(CandleSeries series, IEnumerable`1 candles)&lt;br /&gt;   at Ecng.Common.DelegateHelper.SafeInvoke&amp;#91;T1,T2&amp;#93;(Action`2 handler, T1 arg1, T2 arg2)&lt;br /&gt;   at StockSharp.SmartCom.SmartTrader.OnProcessMessage(Message message)&lt;br /&gt;   at Ecng.Common.DelegateHelper.SafeInvoke&amp;#91;T&amp;#93;(Action`1 handler, T arg)&lt;br /&gt;   at StockSharp.Messages.InMemoryMessageChannel.&amp;lt;Open&amp;gt;b__1()&lt;br /&gt;&lt;/div&gt;&lt;/div&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:c#"&gt;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Ecng.Common;
using StockSharp.Algo.Candles;
using StockSharp.BusinessEntities;
using StockSharp.Logging;
using StockSharp.Messages;
using StockSharp.SmartCom;
using Xunit;

namespace VisualMacdTests
{
    public class Tests
    {
        [Fact]
        public async Task MultipleCandleSubscription()
        {
            var _logManager = new LogManager();
            _logManager.Listeners.Add(new FileLogListener(&amp;quot;smartcom_logs.txt&amp;quot;));
            var _smartTrader = new SmartTrader()
            {
                Address = &amp;quot;mxdemo.ittrade.ru:8443&amp;quot;.To&amp;lt;EndPoint&amp;gt;(),
                Login = &amp;quot;*******&amp;quot;,
                Password = &amp;quot;*******&amp;quot;,
            };
            _logManager.Sources.Add(_smartTrader);

            //_logManager.Application.AddInfoLog(WorkingTimeToString(ExchangeBoard.Forts.WorkingTime));
            // подписываемся на событие об успешном восстановлении соединения
            _smartTrader.Restored += () =&amp;gt;
            {
                _logManager.Application.AddInfoLog(&amp;quot;_smartTrader.Restored&amp;quot;);
            };

            // подписываемся на событие разрыва соединения
            _smartTrader.ConnectionError += error =&amp;gt;
            {
                _logManager.Application.AddErrorLog(error, &amp;quot;_smartTrader.ConnectionError&amp;quot;);
            };

            _smartTrader.MarketDataSubscriptionFailed += (security, type, error) =&amp;gt;
            {
                _logManager.Application.AddErrorLog(error, $&amp;quot;_smartTrader.MarketDataSubscriptionFailed {security.Id} {type}&amp;quot;);
            };

            // подписываемся на ошибку обработки данных (транзакций и маркет)
            _smartTrader.Error += error =&amp;gt;
            {
                _logManager.Application.AddErrorLog(error, $&amp;quot;_smartTrader.Error : {Environment.StackTrace}&amp;quot;);
            };
            Security tool = null;
            _smartTrader.NewSecurities += securities =&amp;gt;
            {
                var rimSec = securities.FirstOrDefault(s =&amp;gt; 
                    s.Type != null 
                    &amp;amp;&amp;amp; s.Type.Value == SecurityTypes.Future
                    &amp;amp;&amp;amp; s.Id.Contains(&amp;quot;RIM6&amp;quot;)
                );
                if (rimSec != null)
                    tool = rimSec;
            };

            _smartTrader.UpdateSecurityByLevel1 = true;
            _smartTrader.UpdateSecurityLastQuotes = true;

            _smartTrader.Connect();

            var _candleManager = new CandleManager(_smartTrader);

            while (tool == null)
                await Task.Delay(100);

            var tf = SmartComTimeFrames.Minute1;
            /*
            for (int i = 0; i &amp;lt; 10; i++)
            {
                _logManager.Application.AddInfoLog($&amp;quot;{i} iteration&amp;quot;);
                var marketTime = _smartTrader.CurrentTime;
                var to = marketTime;
                var from = to.Subtract(TimeSpan.FromDays(7));
                var _currentSeries = new CandleSeries(typeof(TimeFrameCandle), tool, tf);
                _smartTrader.SubscribeCandles(_currentSeries, from, DateTimeOffset.MaxValue);
                await Task.Delay(1000);
                _smartTrader.UnSubscribeCandles(_currentSeries);
            }
            */
            
            for (int i = 0; i &amp;lt; 10; i++)
            {
                _logManager.Application.AddInfoLog($&amp;quot;{i} iteration&amp;quot;);
                var marketTime = _smartTrader.CurrentTime;
                var to = marketTime;
                var from = to.Subtract(TimeSpan.FromDays(7));
                var _currentSeries = new CandleSeries(typeof(TimeFrameCandle), tool, tf);
                _candleManager.Start(_currentSeries, from, DateTimeOffset.MaxValue);
                await Task.Delay(1000);
                _candleManager.Stop(_currentSeries);
            }
            
            _smartTrader.Disconnect();
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;На первом цикле (закомментированный) ошибки те же, кажется проблемы именно в смартком коннекторе.&lt;br /&gt;&lt;br /&gt;Задержка в виде &amp;quot;await Task.Delay(1000);&amp;quot; не важна - в реальном приложении всё успевало прогрузиться до реал тайма, вылетало там же.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>