﻿<?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-06-07T08:24:37Z</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">&lt;p&gt;Переделка на ожидание события Stopped в виде:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
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);
                var tcs = new TaskCompletionSource&amp;lt;object&amp;gt;();
                var a = (Action&amp;lt;CandleSeries&amp;gt;)(series =&amp;gt; {
                    _logManager.Application.AddInfoLog($&amp;quot;Stopped event triggered {series.Security.Id}&amp;quot;);
                    if (series == _currentSeries)
                        tcs.TrySetResult(null);
                });
                _candleManager.Stopped += a;
                try
                {
                    _candleManager.Stop(_currentSeries);
                    await tcs.Task;
                }
                finally
                {
                    _candleManager.Stopped -= a;
                }
                await Task.Delay(1000);
            }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ничего не меняет.&lt;/p&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;p&gt;При повторной подписке на свечи того же инструмента и того же таймфрейма в лог начинают сыпаться ошибки вида&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
2016/05/30 15:52:09.090|       |None      |0 iteration
2016/05/30 15:52:10.339|       |None      |1 iteration
2016/05/30 15:52:10.341|Error  |SmartTrader|System.InvalidOperationException: Subscribing
2016/05/30 15:52:10.351|Error  |None      |_smartTrader.Error :    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   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
   at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
   at StockSharp.Algo.Connector.OnProcessMessage(Message message)
   at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
   at StockSharp.Messages.InMemoryMessageChannel.&amp;lt;Open&amp;gt;b__1()
   at Ecng.Common.Converter.&amp;lt;&amp;gt;c__DisplayClassf.&amp;lt;DoInCulture&amp;gt;b__e()
   at Ecng.Common.Converter.DoInCulture[T](CultureInfo cultureInfo, Func`1 func)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
2016/05/30 15:52:11.358|       |None      |2 iteration
2016/05/30 15:52:11.359|Error  |SmartTrader|System.InvalidOperationException: Subscribed
2016/05/30 15:52:11.360|Error  |None      |_smartTrader.Error :    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   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
   at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
   at StockSharp.Algo.Connector.OnProcessMessage(Message message)
   at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
   at StockSharp.Messages.InMemoryMessageChannel.&amp;lt;Open&amp;gt;b__1()
   at Ecng.Common.Converter.&amp;lt;&amp;gt;c__DisplayClassf.&amp;lt;DoInCulture&amp;gt;b__e()
   at Ecng.Common.Converter.DoInCulture[T](CultureInfo cultureInfo, Func`1 func)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
2016/05/30 15:52:12.363|       |None      |3 iteration
2016/05/30 15:52:12.364|Error  |SmartTrader|System.InvalidOperationException: Subscribed
2016/05/30 15:52:12.364|Error  |None      |_smartTrader.Error :    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   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
   at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
   at StockSharp.Algo.Connector.OnProcessMessage(Message message)
   at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
   at StockSharp.Messages.InMemoryMessageChannel.&amp;lt;Open&amp;gt;b__1()
   at Ecng.Common.Converter.&amp;lt;&amp;gt;c__DisplayClassf.&amp;lt;DoInCulture&amp;gt;b__e()
   at Ecng.Common.Converter.DoInCulture[T](CultureInfo cultureInfo, Func`1 func)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
2016/05/30 15:52:13.370|       |None      |4 iteration
2016/05/30 15:52:13.371|Error  |SmartTrader|System.InvalidOperationException: Subscribed
2016/05/30 15:52:13.371|Error  |None      |_smartTrader.Error :    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   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
   at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
   at StockSharp.Algo.Connector.OnProcessMessage(Message message)
   at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
   at StockSharp.Messages.InMemoryMessageChannel.&amp;lt;Open&amp;gt;b__1()
   at Ecng.Common.Converter.&amp;lt;&amp;gt;c__DisplayClassf.&amp;lt;DoInCulture&amp;gt;b__e()
   at Ecng.Common.Converter.DoInCulture[T](CultureInfo cultureInfo, Func`1 func)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Чуть попозже добавляются ещё и следующие (но думаю к делу это мало относится):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
2016/05/30 15:52:18.521|Error  |SmartTrader|System.InvalidOperationException: Series TimeFrameCandle_RIM6@FORTS_00-01-00 was not started earlier.
   at StockSharp.Algo.Candles.CandleManagerContainer.AddCandle(CandleSeries series, Candle candle)
   at System.Action`2.Invoke(T1 arg1, T2 arg2)
   at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action`2 handler, T1 arg1, T2 arg2)
   at StockSharp.Algo.Candles.CandleManager.ExternalCandleSource.OnNewCandles(CandleSeries series, IEnumerable`1 candles)
   at Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action`2 handler, T1 arg1, T2 arg2)
   at StockSharp.SmartCom.SmartTrader.OnProcessMessage(Message message)
   at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
   at StockSharp.Messages.InMemoryMessageChannel.&amp;lt;Open&amp;gt;b__1()

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Код теста:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-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;/code&gt;&lt;/pre&gt;
&lt;p&gt;На первом цикле (закомментированный) ошибки те же, кажется проблемы именно в смартком коннекторе.&lt;/p&gt;
&lt;p&gt;Задержка в виде &amp;quot;await Task.Delay(1000);&amp;quot; не важна - в реальном приложении всё успевало прогрузиться до реал тайма, вылетало там же.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>