﻿<?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">InvalidOperationException</title>
  <id>~/topic/3882/invalidoperationexception/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-07T07:47:15Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=3882" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/27056/</id>
    <title type="text"> ... При запуске для стратегии мне нужна история предыдущих свечек (в стратегии есть индикаторы), ко...</title>
    <published>2013-08-16T14:28:50Z</published>
    <updated>2013-08-16T14:28:50Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.com/users/26984/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;pft_man &lt;a href="https://stocksharp.com/posts/m/27046/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;...&lt;br /&gt;При запуске для стратегии мне нужна история предыдущих свечек (в стратегии есть индикаторы), которые я и вывожу на график. Ну и чтобы постоянно апдейтить последнюю свечку, использую GetCandleBounds, который и вызывает ошибку при запуске. В общем буду наверное стараться запускать стратегию только во время работы биржи.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Если реагировать на события, например на поступление свечи, использовать обработчики исключений (try-catch), и делать проверки, то система вполне может работать автономно, все дело в отладке, механизм нужно отладить.&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;pft_man &lt;a href="https://stocksharp.com/posts/m/27046/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Ещё, кстати, связанный с этим такой вопрос. Если в свойствах переподключения указано время работы биржи, как происходит переподключение утром? Ровно в 10-00, когда приходит это самое время, Trader приложения начинает переподключение, пока подключится, пока начнётся экспорт пройдёт какое-то время, которое мы упустим, так? То есть если я хочу, чтобы сразу же первая сделка пришла в стратегию с началом торгов, мне нужно поменять соответствующее свойство у трейдера?&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;В общем, да, процесс подключения начинается, как только текущая дата-время попадает на торгуемый период в расписании.&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_bdbe4baf98d14843b13fc012249883dc');" title='Show spoiler' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_bdbe4baf98d14843b13fc012249883dc' style='display:none'&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
		/// &amp;lt;summary&amp;gt;
		/// Проверить, является ли время торгуемым (началась ли сессия, не закончилась ли, нет ли клиринга).
		/// &amp;lt;/summary&amp;gt;
		/// &amp;lt;param name=&amp;quot;workingTime&amp;quot;&amp;gt;Информация о режиме работы биржи.&amp;lt;/param&amp;gt;
		/// &amp;lt;param name=&amp;quot;dateTime&amp;quot;&amp;gt;Передаваемое время, которое нужно проверить.&amp;lt;/param&amp;gt;
		/// &amp;lt;returns&amp;gt;True, если торгуемое время, иначе, неторгуемое.&amp;lt;/returns&amp;gt;
		public static bool IsTradeTime(this WorkingTime workingTime, DateTime dateTime)
		{
			var isWorkingDay = workingTime.IsTradeDate(dateTime.Date);

			if (!isWorkingDay)
				return false;

			var time = dateTime.TimeOfDay;
			var timeBounds = workingTime.Times;

			return timeBounds.IsEmpty() || timeBounds.Any(r =&amp;gt; r.Contains(time));
		}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;pft_man &lt;a href="https://stocksharp.com/posts/m/27046/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&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/27046/</id>
    <title type="text">pft_man Вообще, конечно, логично, что этот метод не должен работать вне торгового периода, но, конеч...</title>
    <published>2013-08-16T08:08:35Z</published>
    <updated>2013-08-16T08:08:35Z</updated>
    <author>
      <name>pft_man</name>
      <uri>https://stocksharp.com/users/28735/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;IvanB &lt;a href="https://stocksharp.com/posts/m/27045/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;b&gt;pft_man&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Вообще, конечно, логично, что этот метод не должен работать вне торгового периода, но, конечно оповещать об этом, следовало специальным исключением.&lt;br /&gt;(return).&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Только моя стратегия работает на часовиках и запускать я её хочу в любое время, хоть ночью. Я хочу иметь возможность ночью / в выходные выключить приложение, посмотреть результаты торгов, посмотреть, что всё корректно отторговалось (входы и выходы были как в тестах в wealthlab), а потом, не дожидаясь новых торгов, снова запустить стратегию.&lt;br /&gt;&lt;br /&gt;При запуске для стратегии мне нужна история предыдущих свечек (в стратегии есть индикаторы), которые я и вывожу на график. Ну и чтобы постоянно апдейтить последнюю свечку, использую GetCandleBounds, который и вызывает ошибку при запуске. В общем буду наверное стараться запускать стратегию только во время работы биржи.&lt;br /&gt;&lt;br /&gt;Ещё, кстати, связанный с этим такой вопрос. Если в свойствах переподключения указано время работы биржи, как происходит переподключение утром? Ровно в 10-00, когда приходит это самое время, Trader приложения начинает переподключение, пока подключится, пока начнётся экспорт пройдёт какое-то время, которое мы упустим, так? То есть если я хочу, чтобы сразу же первая сделка пришла в стратегию с началом торгов, мне нужно поменять соответствующее свойство у трейдера?&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/27045/</id>
    <title type="text">pft_man Воспроизвести ошибку не получилось. запускал до 10-00 по Москве. Ошибка генерируется в метод...</title>
    <published>2013-08-16T07:13:54Z</published>
    <updated>2013-08-16T07:13:54Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.com/users/26984/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;b&gt;pft_man&lt;/b&gt;&lt;br /&gt;Воспроизвести ошибку не получилось. запускал до 10-00 по Москве.&lt;br /&gt;Ошибка генерируется в методе GetCandleBounds, Вы правильно заметили.&lt;br /&gt;Вообще, конечно, логично, что этот метод не должен работать вне торгового периода, но, конечно оповещать об этом, следовало специальным исключением.&lt;br /&gt;В данном случае нужно, либо проверять торговое время биржи, и если мы не в нем, то не выполнять код, либо поставить обработчик исключений try-catch, и при возникновении исключения, не выполнять дальнейший код (return).&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/27042/</id>
    <title type="text">Да я понял уже, что при обращении к любому объекту желательно проверять, что там не null, но здесь-т...</title>
    <published>2013-08-15T21:07:59Z</published>
    <updated>2013-08-15T22:41:19Z</updated>
    <author>
      <name>pft_man</name>
      <uri>https://stocksharp.com/users/28735/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Да я понял уже, что при обращении к любому объекту желательно проверять, что там не null, но здесь-то ошибка явно в другом. Используется только один объект candle, который корректно передаётся и он не null. Там первая свеча дня, со всеми значениями high, low и тд, я проверял, почему тогда метод GetCandleBounds генерит исключение Sequence contains no matching element? Какой ряд, какой элемент, чему соответствие...&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;

private void siDraw(Candle candle)
{
     // временные рамки свечи
     var candleBounds = ((TimeSpan)candle.Arg).GetCandleBounds(candle.Security);

     if (candle.State == CandleStates.Finished || candle.OpenTime &amp;gt;= candleBounds.Min)
     {
          // что-то делаем
     }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;p.s. мучился, мучился, в итоге пришёл к выводу, что нужно смотреть, как устроен timeFrame.GetCandleBounds в Ecng.ComponentModel, но к сожалению на codeplex открытых кодов для компонентов Ecng я не нашёл. &lt;br /&gt;&lt;br /&gt;p.s.s. коротко об ошибке - если у candle.Security время запуска проекта приходится на working time у этой Security, то всё работает, если нет, то генерится исключение.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27034/</id>
    <title type="text">В общем, ошибка всё ещё есть. Она появляется, когда я запускаю проект в нерабочее время биржи. Но ве...</title>
    <published>2013-08-15T12:32:55Z</published>
    <updated>2013-08-15T12:32:55Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.com/users/26984/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;pft_man &lt;a href="https://stocksharp.com/posts/m/27027/" 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;Нужно проверять наличие доступных свечей и других объектов, при попытке работать с ними, сам API этого не делает в большинстве случаев.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27027/</id>
    <title type="text">В общем, ошибка всё ещё есть. Она появляется, когда я запускаю проект в нерабочее время биржи. Но ве...</title>
    <published>2013-08-14T22:46:46Z</published>
    <updated>2013-08-14T22:46:46Z</updated>
    <author>
      <name>pft_man</name>
      <uri>https://stocksharp.com/users/28735/</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/26978/</id>
    <title type="text">Какая-то мистика, открыл проект, хотел посмотреть StackTrace этой ошибки, а она больше не возникает....</title>
    <published>2013-08-10T13:48:34Z</published>
    <updated>2013-08-10T13:48:34Z</updated>
    <author>
      <name>pft_man</name>
      <uri>https://stocksharp.com/users/28735/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Какая-то мистика, открыл проект, хотел посмотреть StackTrace этой ошибки, а она больше не возникает. Посмотрим, что будет дальше. </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/26945/</id>
    <title type="text">Вот на этой строке получается вот такой exception. ... Проблема возникла, после того, как при обраще...</title>
    <published>2013-08-08T04:30:46Z</published>
    <updated>2013-08-08T04:31:09Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.com/users/26984/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;pft_man &lt;a href="https://stocksharp.com/posts/m/26944/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Вот на этой строке получается вот такой exception. &lt;br /&gt;...&lt;br /&gt;Проблема возникла, после того, как при обращении к предыдущей свечке в начале торгов выпадало null exception. После чего я пришёл к мысли, что со строками для тестовых торгов он тогда на часовках в 10-ть утра обращается к 9-ти часовой свечке, которой естественно нет. Когда убрал эти строки для тестовых торгов, стал выпадать Invalid OperationException. Где собака порылась? &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Нужно просмотреть содержимое поля StackTrace в свойствах исключения (2й скрин предыдущего сообщения).</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/26944/</id>
    <title type="text">Вот на этой строке получается вот такой exception. var candleBounds = ((TimeSpan)candle.Arg).GetCand...</title>
    <published>2013-08-07T22:42:19Z</published>
    <updated>2013-08-07T22:42:19Z</updated>
    <author>
      <name>pft_man</name>
      <uri>https://stocksharp.com/users/28735/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Вот на этой строке получается вот такой exception. &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;

var candleBounds = ((TimeSpan)candle.Arg).GetCandleBounds(candle.Security);
&lt;/pre&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:csharp"&gt;

siCandleSeries.WorkingTime.Times[0].Min = TimeSpan.FromHours(0); // для тестовых торгов
siCandleSeries.WorkingTime.Times[0].Max = TimeSpan.FromHours(24); // для тестовых торгов
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;то всё работает. Более того, запуская в 1:30 ночи и поставив Min FromHours(2), exception снова выскакивает. Запускаю на рабочем (не тестовом) квике. Ещё интересно то, что на фьючерсах SBER и LKOH такого не наблюдается, только на Si.&lt;br /&gt;&lt;br /&gt;Проблема возникла, после того, как при обращении к предыдущей свечке в начале торгов выпадало null exception. После чего я пришёл к мысли, что со строками для тестовых торгов он тогда на часовках в 10-ть утра обращается к 9-ти часовой свечке, которой естественно нет. Когда убрал эти строки для тестовых торгов, стал выпадать Invalid OperationException. Где собака порылась? </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>