﻿<?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">События NewCandles и CandlesChanged не происходят.</title>
  <id>~/topic/1773/sobytiya-newcandles-i-candleschanged-ne-proishodyat_/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-10T10:21:41Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=1773" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/10054/</id>
    <title type="text">посмотрите SampleSma - как раз пример запуска стратегии </title>
    <published>2011-07-30T15:52:54Z</published>
    <updated>2011-07-30T15:52:54Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;посмотрите SampleSma - как раз пример запуска стратегии&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/10052/</id>
    <title type="text">Возник еще один вопрос. Как в данный код внедрить стратегию SmaStrategy? Я перед циклом вставляю сле...</title>
    <published>2011-07-30T15:20:34Z</published>
    <updated>2011-07-30T15:20:34Z</updated>
    <author>
      <name>paunov</name>
      <uri>https://stocksharp.com/users/27840/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Возник еще один вопрос. Как в данный код внедрить стратегию SmaStrategy?
Я перед циклом вставляю следующее&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
  _strategy = new SmaStrategy(_candleManager, new Sma(80), new Sma(10), _timeFrame)
                        {
                            Volume = 1,
                            Portfolio = _portfolio,
                            Security = _lkoh,
                            Trader = trader,

                        };


                      
                        _strategy.Start();

&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/9967/</id>
    <title type="text">Спасибо! Все заработало! </title>
    <published>2011-07-27T15:02:07Z</published>
    <updated>2011-07-27T15:02:07Z</updated>
    <author>
      <name>paunov</name>
      <uri>https://stocksharp.com/users/27840/</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/9966/</id>
    <title type="text">paunov: Прошу прощения, с первого раза не понял) а как называется таблица всех сделок? я так понял, ...</title>
    <published>2011-07-27T15:00:30Z</published>
    <updated>2011-07-27T15:00:30Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(9965)" rel="nofollow" target="_blank"&gt;paunov&lt;/a&gt;:&lt;/strong&gt;
Прошу прощения, с первого раза не понял)
а как называется таблица всех сделок?
я так понял, что просто должен ее в &amp;quot;trader.StartExport(trader.SecuritiesTable, trader.MyTradesTable, trader.EquityPositionsTable);&amp;quot; вставить)
Спасибо огромное!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;TradesTable
или просто trader.StartExport(); - все таблицы стартуют&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/9965/</id>
    <title type="text">Прошу прощения, с первого раза не понял) а как называется таблица всех сделок? я так понял, что прос...</title>
    <published>2011-07-27T14:58:06Z</published>
    <updated>2011-07-27T14:58:06Z</updated>
    <author>
      <name>paunov</name>
      <uri>https://stocksharp.com/users/27840/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Прошу прощения, с первого раза не понял)
а как называется таблица всех сделок?
я так понял, что просто должен ее в &amp;quot;trader.StartExport(trader.SecuritiesTable, trader.MyTradesTable, trader.EquityPositionsTable);&amp;quot; вставить)
Спасибо огромное!&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/9964/</id>
    <title type="text">paunov: Мне нужно получать информацию о свечках. В коде (141-150 строчки) еcть свечные события. Я пл...</title>
    <published>2011-07-27T14:38:25Z</published>
    <updated>2011-07-27T14:38:25Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(9963)" rel="nofollow" target="_blank"&gt;paunov&lt;/a&gt;:&lt;/strong&gt;
Мне нужно получать информацию о свечках.
В коде (141-150 строчки) еcть свечные события.
Я планирую получать значения свечек через них.
Но как видно из распечатки консоли они не происходят.
Как преодолеть эту проблему?
Спасибо!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Я ведь ответил:
&lt;mark&gt;Свечки строятся по потоку всех сделок инструмента&lt;/mark&gt;&lt;/p&gt;
&lt;p&gt;У вас экспорт таблицы всех сделок не стартует =&amp;gt; откуда изволите получать информацию для построения свечек? :)&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/9963/</id>
    <title type="text">Мне нужно получать информацию о свечках. В коде (141-150 строчки) еcть свечные события. Я планирую п...</title>
    <published>2011-07-27T14:35:19Z</published>
    <updated>2011-07-27T14:35:19Z</updated>
    <author>
      <name>paunov</name>
      <uri>https://stocksharp.com/users/27840/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Мне нужно получать информацию о свечках.
В коде (141-150 строчки) еcть свечные события.
Я планирую получать значения свечек через них.
Но как видно из распечатки консоли они не происходят.
Как преодолеть эту проблему?
Спасибо!&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/9962/</id>
    <title type="text">Свечки строятся по потоку всех сделок инструмента </title>
    <published>2011-07-27T14:29:39Z</published>
    <updated>2011-07-27T14:29:39Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</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/9961/</id>
    <title type="text">Добавил распечатку RegisterTimeFrameCandles Версия C# 3.2.5 Ошибок вроде никаких. вот консоль Запуще...</title>
    <published>2011-07-27T14:08:38Z</published>
    <updated>2011-07-27T14:08:38Z</updated>
    <author>
      <name>paunov</name>
      <uri>https://stocksharp.com/users/27840/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Добавил распечатку RegisterTimeFrameCandles
Версия C# 3.2.5
Ошибок вроде никаких.
вот консоль&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Запущенный Quik найден по пути C:\Program Files\Quik-Zerich\info.exe
Введите номер счета, через который будет выставлена заявка: Производим подключе
ие...
Подключение было произведено успешно.
Дожидаемся появления в программе инструмента Лукойл и портфеля 1636...
Инструмент Лукойл появился.
Стакан Лукойла появился.
TimeFrameCandle LKOH@EQBR 00:05:00
Портфель 1636 появился.
Первоначальное значение середины спреда 1862,25
Заявка 442774 зарегистрирована.
Заявка 442810 зарегистрирована.
Заявка 442838 зарегистрирована.
Заявка 442895 зарегистрирована.
Заявка 442948 зарегистрирована.
Заявка 442991 зарегистрирована.
Заявка 443021 зарегистрирована.
Заявка 443048 зарегистрирована.
Заявка 443096 зарегистрирована.
Заявка 443121 зарегистрирована.
Заявка 443141 зарегистрирована.
Заявка 443162 зарегистрирована.
Заявка 443209 зарегистрирована.
Заявка 443227 зарегистрирована.
Заявка 443244 зарегистрирована.
Заявка 443277 зарегистрирована.
Заявка 443300 зарегистрирована.
Заявка 443353 зарегистрирована.
Заявка 443368 зарегистрирована.
Заявка 443451 зарегистрирована.
Заявка 443474 зарегистрирована.
Заявка 443538 зарегистрирована.
Заявка 443744 зарегистрирована.
Заявка 444355 зарегистрирована.
Заявка 444578 зарегистрирована.
Сделка 217243 по цене 1861 по бумаге LKOH по объему 1 в 27.07.2011 18:00:08.
Заявка 444660 зарегистрирована.
Заявка 444909 зарегистрирована.
Заявка 445119 зарегистрирована.
Заявка 445210 зарегистрирована.
Заявка 445411 зарегистрирована.
Заявка 445476 зарегистрирована.
Заявка 445569 зарегистрирована.
Заявка 445679 зарегистрирована.
Заявка 445713 зарегистрирована.
Заявка 445762 зарегистрирована.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/9960/</id>
    <title type="text">paunov: Сначала то, что все инструменты и портфель появились, а потом идут Заявки подряд(с интервало...</title>
    <published>2011-07-27T13:54:50Z</published>
    <updated>2011-07-27T13:54:50Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(9959)" rel="nofollow" target="_blank"&gt;paunov&lt;/a&gt;:&lt;/strong&gt;
Сначала то, что все инструменты и портфель появились, а потом идут Заявки подряд(с интервалом в пару секунд). &amp;quot;Заявка {0} зарегистрирована&amp;quot;. И иногда &amp;quot;Заявка не может быть снята&amp;quot;. (Если сделка уже свершилась, а я попытался снять). И в случае если сделка свершилась в консоль выводится &amp;quot;Сделка {0} по цене {1} по бумаге {2} по объему {3} в {4}.&amp;quot;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Лучше из консоли скопировать, чтоб точно было.&lt;/p&gt;
&lt;p&gt;Что выводит ProcessDataError?
Что возвращает RegisterTimeFrameCandles?
Версия S#?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/9959/</id>
    <title type="text">Сначала то, что все инструменты и портфель появились, а потом идут Заявки подряд(с интервалом в пару...</title>
    <published>2011-07-27T13:48:39Z</published>
    <updated>2011-07-27T13:48:39Z</updated>
    <author>
      <name>paunov</name>
      <uri>https://stocksharp.com/users/27840/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Сначала то, что все инструменты и портфель появились, а потом идут Заявки подряд(с интервалом в пару секунд). &amp;quot;Заявка {0} зарегистрирована&amp;quot;. И иногда &amp;quot;Заявка не может быть снята&amp;quot;. (Если сделка уже свершилась, а я попытался снять). И в случае если сделка свершилась в консоль выводится &amp;quot;Сделка {0} по цене {1} по бумаге {2} по объему {3} в {4}.&amp;quot;.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/9958/</id>
    <title type="text">а что выводится в консоль? </title>
    <published>2011-07-27T13:36:24Z</published>
    <updated>2011-07-27T13:36:24Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</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/9957/</id>
    <title type="text">Я добавил в SampleConsole события NewCandles и CandlesChanged. Сделки совершаются, но эти события не...</title>
    <published>2011-07-27T13:30:24Z</published>
    <updated>2011-07-27T13:30:24Z</updated>
    <author>
      <name>paunov</name>
      <uri>https://stocksharp.com/users/27840/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Я добавил в SampleConsole события NewCandles и CandlesChanged. Сделки совершаются, но эти события не вызываются.
Сразу кидаю код.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;namespace SampleConsole
{
	using System;
	using System.Linq;
	using System.Threading;

	using Ecng.Common;

	using StockSharp.BusinessEntities;
	using StockSharp.Quik;
	using StockSharp.Algo;
    using StockSharp.Algo.Candles;
    using StockSharp.Algo.Reporting;
    using StockSharp.Algo.Strategies;
	class Program
	{
        private readonly static TimeSpan _timeFrame = TimeSpan.FromMinutes(5);
		private static Security _lkoh;
		private static Portfolio _portfolio;
		private static MarketDepth _depth;
        private static CandleManager _candleManager;
		static void Main()
		{
			try
			{
				// для теста выбираем бумагу Лукойл
				const string secCode = &amp;quot;LKOH&amp;quot;;

				var quikPath = QuikTerminal.GetDefaultPath();

				if (quikPath.IsEmpty())
				{
					Console.WriteLine(&amp;quot;Не найден ни один запущенный Quik&amp;quot;);
					return;
				}

				Console.WriteLine(&amp;quot;Запущенный Quik найден по пути &amp;quot; + quikPath);

				Console.Write(&amp;quot;Введите номер счета, через который будет выставлена заявка: &amp;quot;);
                var account = &amp;quot;1636&amp;quot;;

				using (var waitHandle = new AutoResetEvent(false))
				{
					// создаем шлюз к Quik-у
					using (var trader = new QuikTrader(quikPath))
					{
						// необходимо раскомментировать, если идет работа с РТС Стандарт
						//trader.FormatTransaction += builder =&amp;gt; builder.RemoveInstruction(TransactionBuilder.ExecutionCondition);

						// подписываемся на событие успешного подключения
						// все действия необходимо производить только после подключения
						trader.Connected += () =&amp;gt;
						{

                            _candleManager = new CandleManager(trader);
							Console.WriteLine(&amp;quot;Подключение было произведено успешно.&amp;quot;);

							// извещаем об успешном соединени
							waitHandle.Set();
						};

						Console.WriteLine(&amp;quot;Производим подключение...&amp;quot;);

						trader.Connect();

						// дожидаемся события об успешном соединении
						waitHandle.WaitOne();

						trader.NewPortfolios += portfolios =&amp;gt;
						{
							if (_portfolio == null)
							{
								// находим Лукойл и присваиваем ее переменной lkoh
								_portfolio = portfolios.FirstOrDefault(p =&amp;gt; p.Name == account);

								if (_portfolio != null)
								{
									Console.WriteLine(&amp;quot;Портфель {0} появился.&amp;quot;, account);

									// если инструмент и стакан уже появились,
									// то извещаем об этом основной поток для выставления заявки
									if (_lkoh != null &amp;amp;&amp;amp; _depth != null)
										waitHandle.Set();
								}
							}
						};
                        
                        

						// подписываемся на событие появление инструментов
						trader.NewSecurities += securities =&amp;gt;
						{
							if (_lkoh == null)
							{
								// находим Лукойл и присваиваем ее переменной lkoh
								_lkoh = securities.FirstOrDefault(sec =&amp;gt; sec.Code == secCode);

								if (_lkoh != null)
								{
									Console.WriteLine(&amp;quot;Инструмент Лукойл появился.&amp;quot;);

									// запускаем экспорт стакана
									trader.RegisterQuotes(_lkoh);
                                    _candleManager.RegisterTimeFrameCandles(_lkoh, _timeFrame);
									if (_portfolio != null)
										waitHandle.Set();
								}
							}
						};

						// подписываемся на событие появления моих новых сделок
						trader.NewMyTrades += myTrades =&amp;gt;
						{
							foreach (var myTrade in myTrades)
							{
								var trade = myTrade.Trade;
								Console.WriteLine(&amp;quot;Сделка {0} по цене {1} по бумаге {2} по объему {3} в {4}.&amp;quot;, trade.Id, trade.Price, trade.Security.Code, trade.Volume, trade.Time);
							}
						};

						// подписываемся на событие обновления стакана
						trader.QuotesChanged += depths =&amp;gt;
						{
							if (_depth == null &amp;amp;&amp;amp; _lkoh != null)
							{
								_depth = depths.FirstOrDefault(d =&amp;gt; d.Security == _lkoh);

								if (_depth != null)
								{
									Console.WriteLine(&amp;quot;Стакан Лукойла появился.&amp;quot;);

									// если портфель уже появился, то извещаем об этом основной поток для выставления заявки
									if (_portfolio != null)
										waitHandle.Set();
								}
							}
						};

						Console.WriteLine(&amp;quot;Дожидаемся появления в программе инструмента Лукойл и портфеля {0}...&amp;quot;.Put(account));

                        
                        _candleManager.NewCandles += (token, candles) =&amp;gt;
                        {
                            Console.WriteLine(&amp;quot;Событие NewCandles произошло&amp;quot;);
                        };
                        _candleManager.CandlesChanged += (token, candles) =&amp;gt; 
                        {
                            Console.WriteLine(&amp;quot;Событие CandlesChanged произошло&amp;quot;);
                        };
                        
						// запускаем экспорт по DDE
						trader.StartExport(trader.SecuritiesTable, trader.MyTradesTable, trader.EquityPositionsTable);

						// дожидаемся появления портфеля и инструмента
						waitHandle.WaitOne();

						// 0.1% от изменения цены
						const decimal delta = 0.001m;

						// запоминаем первоначальное значение середины спреда
						var firstMid = _lkoh.BestPair.SpreadPrice / 2;
						Console.WriteLine(&amp;quot;Первоначальное значение середины спреда {0:0.##}&amp;quot;, _lkoh.BestBid.Price + firstMid);

						while (true)
						{
							var mid = _lkoh.BestPair.SpreadPrice / 2;

							// если спред вышел за пределы нашего диапазона
							if	(
									((firstMid + firstMid * delta) &amp;lt;= mid) ||
									((firstMid - firstMid * delta) &amp;gt;= mid) ||(0==0)
								)
							{




								var order = new Order
								{
									Portfolio = _portfolio,
									Price = _lkoh.ShrinkPrice(_lkoh.BestBid.Price + mid),
									Security = _lkoh,
									Volume = 1,
									Direction = OrderDirections.Buy,
								};


								trader.RegisterOrder(order);
								Console.WriteLine(&amp;quot;Заявка {0} зарегистрирована.&amp;quot;, order.Id);

                                Thread.Sleep(1000);

                                try
                                {
                                    if (!order.IsMatched() &amp;amp;&amp;amp; (order.State == OrderStates.Active))
                                        trader.CancelOrder(order);
                                }
                                catch (Exception ex)
                                {
                                    Console.WriteLine(&amp;quot;Заявка не может быть снята&amp;quot;);
                                }



							}
							else
								Console.WriteLine(&amp;quot;Текущее значение середины спреда {0:0.##}&amp;quot;, _lkoh.BestBid.Price + mid);

							// ждем 1 секунду
							Thread.Sleep(1000);

						}

						// останавливаем экспорт по DDE
						trader.StopExport(trader.SecuritiesTable, trader.MyTradesTable, trader.EquityPositionsTable);
					}
				}
			}
			catch (Exception ex)
			{
				Console.WriteLine(ex);
			}
            var getch = Console.ReadLine();
		}
     
	}
}
&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>