﻿<?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">Ошибка построения стакана для RIH3@RTS</title>
  <id>~/topic/3462/oshibka-postroeniya-stakana-dlya-rih3rts/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-05T21:39:38Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=3462" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/24530/</id>
    <title type="text">Причину нужно искать в настройках стакана в Квике Странно. Он же сам создается. Настройка потом не м...</title>
    <published>2013-03-13T15:31:01Z</published>
    <updated>2013-03-13T17:16:56Z</updated>
    <author>
      <name>kahuna</name>
      <uri>https://stocksharp.com/users/16705/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.com/posts/m/24521/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Причину нужно искать в настройках стакана в Квике&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Странно. Он же сам создается. Настройка потом не меняется.&lt;br /&gt;Вот как здесь &lt;a href="http://stocksharp.com/doc/ " title="http://stocksharp.com/doc/ "&gt;http://stocksharp.com/doc/ &lt;/a&gt;и написано:&lt;br /&gt;&lt;b&gt;&amp;quot;Если стакан для необходимого инструмента еще ни разу не окрывался в Quik-е, то QuikTrader самостоятельно создаст окно в терминале и настроит его при вызове метода RegisterMarketDepth из кода программы. Или можно принудительно закрыть стакан в Quik-е и он будет переоткрыт с уже корректными для S# настройками.&amp;quot;&lt;/b&gt; &lt;br /&gt;Получается если стакан удален он может быть переоткрыт с некорректными для S# настройками?&lt;br /&gt;&lt;br /&gt;Сдается мне эта беда появилась после вчерашего автоматического обновления Quik-а ver 6.5.2.11</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24521/</id>
    <title type="text">Причину нужно искать в настройках стакана в Квике</title>
    <published>2013-03-13T12:12:39Z</published>
    <updated>2013-03-13T12:12:39Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</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/24517/</id>
    <title type="text">Стакан создает сам робот (ver 4.1.8) и затем такая ошибка циклически выскакивает. Что бы это могло з...</title>
    <published>2013-03-13T10:31:14Z</published>
    <updated>2013-03-13T11:16:59Z</updated>
    <author>
      <name>kahuna</name>
      <uri>https://stocksharp.com/users/16705/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Стакан создает сам робот (ver 4.1.8)&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;

2013/03/13 15:09:59.169|Debug  |RealTimeEmulationTrader`1|тут поставлена точка остановки по ошибке
2013/03/13 15:09:59.372|       |QuikTrader|Экспорт запущен.
2013/03/13 15:10:25.772|Error  |QuikTrader|System.InvalidOperationException: Ошибка построения стакана для RIH3@RTS. ---&amp;gt; System.ArgumentException: Элемент с тем же ключом уже был добавлен.
   в System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
   в System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   в System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
   в StockSharp.Quik.QuikTrader.#=qjrOBFov$lIae$ZMCQLx7P1fQAe2X2s16$DxZRnv$aqU=.#=qzvbLwKmGOZP8Mn3VANwmO7j2JOolfd6kGP3G5If$W6A=.#=qoBmyAYCfRFCH40f$3yGW_A==(IList`1 #=qRHjMyjnBoxoiZTuH4AXEyA==, Func`2 #=qIQV1FWrBPFefG1SSxNmAjA==)
   в #=qU8C8kAMUmJ0kPIeEJrF68f3NMymXDukMNgL4Dc7ffmr7PRgVzknJ3atY_n0PucT4.#=qB09_IBYvsxLb_dLzMi2NWQ==(DdeTable #=qOgXoydWCvsq2gXlddKoo0w==, IList`1 #=qMeYWUEb44NrXcAvbPuNfiQ==, Action`2 #=qolGBgTssErk3vXo538xxsQ==, Action`1 #=qIfmNdbFGgLtG9ybpXuosbQ==, Boolean #=qe3W9$GyIKMHUi59wvLuQeA==)
   --- Конец трассировки внутреннего стека исключений ---
   в StockSharp.Quik.QuikTrader.#=qjrOBFov$lIae$ZMCQLx7P1fQAe2X2s16$DxZRnv$aqU=.#=qzvbLwKmGOZP8Mn3VANwmO7j2JOolfd6kGP3G5If$W6A=.#=qg7jlPQQbjd3ga0fXSfzAPA==(Exception #=q7L4EpKXX1uzdIPMI_NaJKw==)
   в #=qU8C8kAMUmJ0kPIeEJrF68f3NMymXDukMNgL4Dc7ffmr7PRgVzknJ3atY_n0PucT4.#=qB09_IBYvsxLb_dLzMi2NWQ==(DdeTable #=qOgXoydWCvsq2gXlddKoo0w==, IList`1 #=qMeYWUEb44NrXcAvbPuNfiQ==, Action`2 #=qolGBgTssErk3vXo538xxsQ==, Action`1 #=qIfmNdbFGgLtG9ybpXuosbQ==, Boolean #=qe3W9$GyIKMHUi59wvLuQeA==)
   в StockSharp.Quik.QuikTrader.#=qjrOBFov$lIae$ZMCQLx7P1fQAe2X2s16$DxZRnv$aqU=.#=qlN2RGV_nOu2izbvUPp1GHQ==(Security #=qskBctfGFaOoCaDExIEMlfA==)
   в StockSharp.Algo.BaseTrader.ProcessSecurityAction(String securityId, Object nativeSecurityId, Action`1 action, Boolean ignoreIfNotExist)
   в StockSharp.Quik.QuikTrader.#=qjrOBFov$lIae$ZMCQLx7P1fQAe2X2s16$DxZRnv$aqU=.#=qu4gTMGq$3yH4Axl_FWkd5w==()
   в StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&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.ComponentModel;
using System.Globalization;
using System.Windows;
using System.Windows.Controls;
using System.Diagnostics;
using MessageBox = System.Windows.MessageBox;
using System.Threading;
using System.Linq;
using System.Xml;
using Ecng.Common;
using Ecng.Collections;
using Ecng.Xaml;
using Ecng.ComponentModel;

using StockSharp.BusinessEntities;
using StockSharp.Algo.Reporting;
using StockSharp.Quik;
using StockSharp.Algo;
using StockSharp.Xaml;
using StockSharp.Logging;
using StockSharp.Algo.Testing;

namespace test
{
    /// &amp;lt;summary&amp;gt;
    /// Логика взаимодействия для MainWindow.xaml
    /// &amp;lt;/summary&amp;gt;

    public partial class MainWindow : Window
   {




        private RealTimeEmulationTrader&amp;lt;QuikTrader&amp;gt; _trader;

        //private QuikTrader _trader;
        private MonitorWindow monitor;
        private LogManager _logManager;

        public MainWindow()
        {

            InitializeComponent();

            monitor = new MonitorWindow();
           monitor.Show();
            _logManager = new LogManager();
            var fileListener = new FileLogListener(&amp;quot;{0}_{1:00}_{2:00}.txt&amp;quot;.Put(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day));
            _logManager.Listeners.Add(fileListener);
            _logManager.Listeners.Add(new GuiLogListener(monitor));
            _trader = new RealTimeEmulationTrader&amp;lt;QuikTrader&amp;gt;(new QuikTrader(QuikTerminal.GetDefaultPath()) { IsAsyncMode = true, SupportManualOrders = true });
            _trader.UnderlyingTrader.SupportManualOrders = true;
           _trader.UnderlyingTrader.IsAsyncMode = true;
            //_trader = new QuikTrader(QuikTerminal.GetDefaultPath()) { IsAsyncMode = true, SupportManualOrders = false };




            _trader.UnderlyingTrader.LogLevel = LogLevels.Debug;
            _logManager.Sources.Add(_trader.UnderlyingTrader);
            _trader.LogLevel = LogLevels.Debug;
            _logManager.Sources.Add(_trader);

            //_trader.LogLevel = LogLevels.Debug;
            //_logManager.Sources.Add(_trader);
            _trader.ProcessDataError += (ex) =&amp;gt;
            {
                _trader.AddDebugLog(&amp;quot;тут поставлена точка остановки по ошибке&amp;quot;);
            };

            _trader.Connected += () =&amp;gt;
            {
                _trader.AddDebugLog(&amp;quot;Соединились&amp;quot;);
            };
            // запускаем экспорт по DDE
            _trader.Connect();


            while (!_trader.IsConnected) { }

            _trader.StartExport();
            string sec = &amp;quot;RIH3@RTS&amp;quot;; // создаем временную текстовую переменную и присваиваем ей название выбраного елемента (напр. RIH3@RTS)
            sec = sec.Replace(&amp;quot;@RTS&amp;quot;, string.Empty); // вырезаем хвост &amp;quot;@RTS&amp;quot; 
            Security ss = _trader.Securities.First(s =&amp;gt; s.Code == sec &amp;amp;&amp;amp; s.Type == SecurityTypes.Future); // присваеваем переменной _security имя  выбраного инструмента

            _trader.RegisterMarketDepth(ss);
            while (_trader.RegisteredMarketDepths.IsNull()) { }
            _trader.UnRegisterMarketDepth(ss);
            _trader.Disconnect();
            _trader.Dispose();


        }
     }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>