﻿<?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/977/rabota-s-candlemanager/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-07-03T15:44:48Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=977" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/2604/</id>
    <title type="text">Опять непонятный косяк возник. Код, по нажатию на кнопку(нажимаем ее когда прошло уже как минимум 10...</title>
    <published>2010-04-14T20:10:00Z</published>
    <updated>2010-04-14T20:10:00Z</updated>
    <author>
      <name>AndreiFX</name>
      <uri>https://stocksharp.com/users/28035/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Опять непонятный косяк возник.
Код, по нажатию на кнопку(нажимаем ее когда прошло уже как минимум 10
свечей с момента открытия):&lt;/p&gt;
&lt;p&gt;ВремяНажатия=DateTime.Now;
var arg = new CandleArg();
arg.Value = TimeSpan.FromMinutes(TimeFrame);
_candleManager.RegisterTimeFrameCandles(secur,
(TimeSpan)arg.Value);&lt;/p&gt;
&lt;p&gt;_candleManager.NewCandles += delegate
{
if (ВремяНажатияПуск.AddSeconds(milsec) &amp;gt;
DateTime.Now) return;
candles = _candleManager.GetTimeFrameCandles(secur,
TimeSpan.FromMinutes(TimeFrame), 8);
};&lt;/p&gt;
&lt;p&gt;И в итоге candles выдает непонятно что...
Аналогично получается если свечи получаю таким образом(когда
просматриваю свечи, то получаю нормальный набор свечей,начиная с
начала сессии до какого то  времени(не до текущего), дальше пусто):&lt;/p&gt;
&lt;p&gt;candles = _candleManager.GetTimeFrameCandles(secur,&lt;/p&gt;
&lt;p&gt;TimeSpan.FromMinutes(TimeFrame),&lt;/p&gt;
&lt;p&gt;new Range&amp;lt;DateTime&amp;gt;(secur.LastTrade.Time.Date + begin,
secur.LastTrade.Time));&lt;/p&gt;
&lt;p&gt;Причем на одном компе работает как часы, а на другом непонятно что
показывает(и опять же не всегда, а к концу сессии)
Версия s# 1.6(сейчас буду на 1.8 переписывать, но не знаю поможет или
нет)&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/2603/</id>
    <title type="text">new GetTimeFrameCandles(secur, TimeSpan.FromMinutes(TimeFrame), new Range(minDate, maxDate)); </title>
    <published>2010-03-17T12:41:00Z</published>
    <updated>2010-03-17T12:41:00Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;new GetTimeFrameCandles(secur, TimeSpan.FromMinutes(TimeFrame), new
Range&lt;DateTime&gt;(minDate, maxDate));&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/2602/</id>
    <title type="text">А подскажите пожалуйста, как можно пользоваться перегрузкой GetTimeFrameCandles(Security, TimeSpan, ...</title>
    <published>2010-03-17T07:12:00Z</published>
    <updated>2010-03-17T07:12:00Z</updated>
    <author>
      <name>AndreiFX</name>
      <uri>https://stocksharp.com/users/28035/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;А подскажите пожалуйста, как можно пользоваться перегрузкой
GetTimeFrameCandles(Security, TimeSpan, Range((DateTime)))
Т.е. я к сожалению не смог нигде найти  где и как можно задать
Range&amp;lt;DateTime&amp;gt; timeRange , м.б. есть какой нибудь пример?&lt;/p&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/2601/</id>
    <title type="text">Получить можно: _candleManager.GetTimeFrameCandles(trader.GetCandleBounds().Min) </title>
    <published>2010-03-15T15:37:00Z</published>
    <updated>2010-03-15T15:37:00Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Получить можно:&lt;/p&gt;
&lt;p&gt;_candleManager.GetTimeFrameCandles(trader.GetCandleBounds().Min)&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/2600/</id>
    <title type="text">Сделал вот так _candleManager.CandlesChanged += delegate { if (ВремяНажатияПуск.AddMinutes(TimeFrame...</title>
    <published>2010-03-15T11:40:00Z</published>
    <updated>2010-03-15T11:40:00Z</updated>
    <author>
      <name>AndreiFX</name>
      <uri>https://stocksharp.com/users/28035/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Сделал вот так&lt;/p&gt;
&lt;p&gt;_candleManager.CandlesChanged += delegate
{
if
(ВремяНажатияПуск.AddMinutes(TimeFrame)&amp;gt;DateTime.Now)
candles =
_candleManager.GetTimeFrameCandles(secur,
TimeSpan.FromMinutes(TimeFrame), 20);
};&lt;/p&gt;
&lt;p&gt;Все заработало нормально, но один ньюанс появился. Самая последняя
свечка(candles[19]) представляет собой не последнюю свечку на чарте, а
предпоследнюю,т.е. текущую свечку получить не получается...&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/2599/</id>
    <title type="text">)) спасибо, попробую </title>
    <published>2010-03-12T16:31:00Z</published>
    <updated>2010-03-12T16:31:00Z</updated>
    <author>
      <name>AndreiFX</name>
      <uri>https://stocksharp.com/users/28035/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&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/2598/</id>
    <title type="text">Есть. Вы запускаете RegisterTimeFrameCandles в момент X. Сохраните это время. Ждите, пока не появило...</title>
    <published>2010-03-12T16:30:00Z</published>
    <updated>2010-03-12T16:30:00Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Есть. Вы запускаете RegisterTimeFrameCandles в момент X. Сохраните это
время. Ждите, пока не появилось NewCandles для времени X + TimeFrame.&lt;/p&gt;
&lt;p&gt;Если следовать Вашему кода, то возникает ситуация. CandlesChanges
вызвалось для свечек с самого начала сессии (фактически для первых
сделок). А Вы еще пытаетесь и -20 свечек взять. Влезать в вечерку
пред. сессиии S# не позволяет =)&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/2597/</id>
    <title type="text">А есть выход? Т.е. мне нужно в любой момент времени иметь данные о 20и последних свечках, м.б. подск...</title>
    <published>2010-03-12T16:23:00Z</published>
    <updated>2010-03-12T16:23:00Z</updated>
    <author>
      <name>AndreiFX</name>
      <uri>https://stocksharp.com/users/28035/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;А есть выход? Т.е. мне нужно в любой момент времени иметь данные о 20и
последних свечках, м.б. подскажите как сделать?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/2596/</id>
    <title type="text">Будут не корректны. Потому что вот что получается. Вы в событие об изменении одних свечек, получаете...</title>
    <published>2010-03-12T16:10:00Z</published>
    <updated>2010-03-12T16:10:00Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&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/2595/</id>
    <title type="text">Я делаю так: есть кнопка connect, dde и start При нажатии на коннект создаем экземпляр CandleManager...</title>
    <published>2010-03-12T15:41:00Z</published>
    <updated>2010-03-12T15:41:00Z</updated>
    <author>
      <name>AndreiFX</name>
      <uri>https://stocksharp.com/users/28035/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Я делаю так: есть кнопка connect, dde и start
При нажатии на коннект создаем экземпляр CandleManager, далее делаем
дде вывод и при нажатии на start вот что прописываю:&lt;/p&gt;
&lt;p&gt;_candleManager.RegisterTimeFrameCandles(secur, (TimeSpan)arg.Value);&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;           _candleManager.CandlesChanged += delegate
            {
                candles =
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;_candleManager.GetTimeFrameCandles(secur,
TimeSpan.FromMinutes(TimeFrame), 20);
};&lt;/p&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/2594/</id>
    <title type="text">Так делать нельзя. Свечки формируются в параллельном потоке. Когда Вы вызываете RegisterTimeFrameCan...</title>
    <published>2010-03-12T14:40:00Z</published>
    <updated>2010-03-12T14:40:00Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Так делать нельзя. Свечки формируются в параллельном потоке. Когда Вы
вызываете RegisterTimeFrameCandles, запускается данный процесс.
Необходимо время для окончания формирования (+ еще особенность ДДЕ
Квика посылать данные не упорядоченно). Именно для этого я и сделал
события СandleChanged.&lt;/p&gt;
&lt;p&gt;Старайтесь делать следующим образом. Запускать экспорт и формирование
свечек в самом старте работы. Затем, предоставлять время роботу
подумать. Как вариант, не сразу запускать процесс торговли, а делать
кнопку старт, которую нажимает пользователь. Человек в состоянии
понять, что загружка проца упала, и что все данные перелиты. В
дальнейшем, уже работать со свечками в стиле: пришло событие
NewCandles, значит все свечки до только что созданных (именно что
только что созданных, а не окончательно сформированных)
сформировались.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/2593/</id>
    <title type="text">Здравствуйте. Ситуация такая: в роботе получаю значения 20и последних свечек таким образом arg.Value...</title>
    <published>2010-03-12T14:03:00Z</published>
    <updated>2010-03-12T14:03:00Z</updated>
    <author>
      <name>AndreiFX</name>
      <uri>https://stocksharp.com/users/28035/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Здравствуйте.
Ситуация такая: в роботе получаю значения 20и последних свечек таким
образом&lt;/p&gt;
&lt;p&gt;arg.Value = TimeSpan.FromMinutes(TimeFrame);
secur = Securities.FirstOrDefault(secc =&amp;gt; secc.Code == this.sec.Text);
_candleManager.RegisterTimeFrameCandles(secur, (TimeSpan)arg.Value);
var candles = _candleManager.GetTimeFrameCandles(secur,
TimeSpan.FromMinutes(TimeFrame), 20);&lt;/p&gt;
&lt;p&gt;Сначала они считались грамотно и верно, однако сегодня какая то
неожиданная ошибка: последние 3 свечки не соответствуют
действительности, т.е. там цена какая то не та и время свечи указано
которого на текущий момент еще не было.
Из за чего такое может быть?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>