﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">4.1.1 Проблема с тиковыми свечками</title>
  <id>~/topic/2753/4_1_1-problema-s-tikovymi-svechkami/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-06T05:59:48Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=2753" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/19506/</id>
    <title type="text">Пофиксил, выложим на codeplex в ближайшие пару дней</title>
    <published>2012-06-02T17:18:38Z</published>
    <updated>2012-06-02T17:18:38Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Пофиксил, выложим на codeplex в ближайшие пару дней</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19486/</id>
    <title type="text">В каждую точку времени у первой тиковой свечки статус CandleState.Started, у всех остальных CandleSt...</title>
    <published>2012-05-31T14:44:51Z</published>
    <updated>2012-05-31T14:44:51Z</updated>
    <author>
      <name>aspirant</name>
      <uri>https://stocksharp.ru/users/6114/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">В каждую точку времени у первой тиковой свечки статус CandleState.Started, у всех остальных CandleState.Changed.  &lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;Started: 10:00:00 TickCandle SPFB.RTS (O:156220,00000, H:156220,00000, L:156220,00000, C:156220,00000, V:0)&lt;br /&gt;Changed: 10:00:00 TickCandle SPFB.RTS (O:156220,00000, H:156220,00000, L:156220,00000, C:156220,00000, V:1)&lt;br /&gt;Changed: 10:00:00 TickCandle SPFB.RTS (O:156220,00000, H:156220,00000, L:156205,00000, C:156205,00000, V:2)&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;CandleState.Finished не появляется вообще, поэтому в DrawCandles ничего и не происходит&lt;br /&gt;&lt;br /&gt;У меня схожая проблема: по этой же причине с тиковыми свечками не вызывается WhenCandlesFinished()</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19484/</id>
    <title type="text">Полный код для воспроизведения ошибки CS using System; using System.Linq; using System.Windows; usin...</title>
    <published>2012-05-31T12:25:24Z</published>
    <updated>2012-05-31T12:25:24Z</updated>
    <author>
      <name>Moadip</name>
      <uri>https://stocksharp.ru/users/5973/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Полный код для воспроизведения ошибки&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CS&lt;/b&gt;&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_47f71bfd60dc4cfba90b0c2dcb8e1ba3');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_47f71bfd60dc4cfba90b0c2dcb8e1ba3' style='display:none'&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

using System;
using System.Linq;
using System.Windows;
using System.Windows.Forms;
using System.ComponentModel;
using Ecng.Common;
using Ecng.Xaml;
using StockSharp.BusinessEntities;
using StockSharp.Quik;
using StockSharp.Algo.Candles;
using StockSharp.Xaml;
using StockSharp.Algo.Logging;
using MessageBox = System.Windows.MessageBox;

namespace Candles
{
	public partial class MainWindow
	{
		QuikTrader _trader;

		private Security _instr1;
		const string _secCode1 = &amp;quot;RIM2&amp;quot;;

        private CandleManager _candleManager;
	    private CandleSeries _series;

	    readonly TimeSpan _timeFrame = TimeSpan.FromMinutes(1);

	    private readonly LogManager _logManager; 

		public MainWindow()
		{
			InitializeComponent();
            Path.Text = &amp;quot;e:\\Program Files\\QUIK\\&amp;quot;;

            _logManager = new LogManager();
            _logManager.Listeners.Add(new GuiLogListener(logcontrol));
		}
	  

		private void FindPath_Click(object sender, RoutedEventArgs e)
		{
			var dlg = new FolderBrowserDialog();

			if (!Path.Text.IsEmpty())
				dlg.SelectedPath = Path.Text;

			if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
			{
				Path.Text = dlg.SelectedPath;
			}
		}

		bool _isConnected;

		private void btnConnect_Click(object sender, RoutedEventArgs e)
		{
			if (!_isConnected)
			{
				if (Path.Text.IsEmpty())
					MessageBox.Show(this, &amp;quot;Путь к Quik не выбран&amp;quot;);
				else
				{
					if (_trader == null)
					{
                        _trader = new QuikTrader(Path.Text);
                        _logManager.Sources.Add(_trader);
                        _trader.ReConnectionSettings.Interval = TimeSpan.FromSeconds(10);
                        _trader.ReConnectionSettings.WorkingTime = Exchange.Rts.WorkingTime;
                        _trader.ReConnectionSettings.ConnectionRestored += () =&amp;gt; this.GuiAsync(() =&amp;gt; MessageBox.Show(this, &amp;quot;Соединение восстановлено&amp;quot;));
                        _trader.MarketTimeOffset = TimeSpan.FromHours(-3);

						_isConnected = true;

					    btnExportDde.IsEnabled = true;

						_trader.NewSecurities += securities =&amp;gt;
						{
							if (_instr1 == null)
							{
								_instr1 = securities.FirstOrDefault(sec =&amp;gt; sec.Code == _secCode1);
							}
						};

						_candleManager = new CandleManager(_trader);
                        _candleManager.Processing += DrawCandles;

					}

					_trader.Connect();

					_isConnected = true;
					btnConnect.Content = &amp;quot;Отключиться&amp;quot;;
				}
			}
			else
			{
				_trader.Disconnect();

				_isConnected = false;
				btnConnect.Content = &amp;quot;Подключиться&amp;quot;;
			}
		}

        private void btnStart_Click(object sender, RoutedEventArgs e)
        {
            //_series = new CandleSeries(typeof(TimeFrameCandle), _instr1, _timeFrame);
            _series = new CandleSeries(typeof(TickCandle), _instr1, 100);

            _candleManager.Start(_series);
            _trader.AddInfoLog(&amp;quot;Запуск получения свечек&amp;quot;);
        }


		private void DrawCandles(CandleSeries series, Candle candle)
		{
            if(candle.State == CandleStates.Finished) 
                _trader.AddInfoLog(string.Format(&amp;quot;Свечка закончена. CloseTime = {0}&amp;quot;, candle.CloseTime));
		}

        private void Window_Closing(object sender, CancelEventArgs e)
        {
            if (_trader != null)
            {
                if (_isDdeStarted) StopDde();
                _trader.Dispose();
            }
        }

        private void btnExportDde_Click(object sender, RoutedEventArgs e)
        {
            if (_isDdeStarted) StopDde();
            else StartDde();
        }

        bool _isDdeStarted;

        private void StartDde()
        {
            _trader.StartExport();
            _isDdeStarted = true;
        }

        private void StopDde()
        {
            _trader.StopExport();
            _isDdeStarted = false;
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;XAML&lt;/b&gt;&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_79be4c90e30f4a01a728ce6f270c24d3');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_79be4c90e30f4a01a728ce6f270c24d3' style='display:none'&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

&amp;lt;Window x:Class=&amp;quot;Candles.MainWindow&amp;quot;
        xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
        xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
        xmlns:EcngTradingXaml=&amp;quot;clr-namespace:StockSharp.Xaml;assembly=StockSharp.Xaml&amp;quot;
        Title=&amp;quot;&amp;quot; Height=&amp;quot;455&amp;quot; Width=&amp;quot;614&amp;quot; Closing=&amp;quot;Window_Closing&amp;quot; Topmost=&amp;quot;True&amp;quot; WindowStartupLocation=&amp;quot;CenterScreen&amp;quot;&amp;gt;
    &amp;lt;Grid&amp;gt;
        &amp;lt;Grid  HorizontalAlignment=&amp;quot;Left&amp;quot; Name=&amp;quot;grid1&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Margin=&amp;quot;12,12,0,0&amp;quot;&amp;gt;
            &amp;lt;Grid.ColumnDefinitions&amp;gt;
                &amp;lt;ColumnDefinition Width=&amp;quot;Auto&amp;quot; /&amp;gt;
                &amp;lt;ColumnDefinition Width=&amp;quot;Auto&amp;quot; /&amp;gt;
                &amp;lt;ColumnDefinition Width=&amp;quot;72&amp;quot; /&amp;gt;
                &amp;lt;ColumnDefinition Width=&amp;quot;Auto&amp;quot; /&amp;gt;
            &amp;lt;/Grid.ColumnDefinitions&amp;gt;
            &amp;lt;Grid.RowDefinitions&amp;gt;
                &amp;lt;RowDefinition Height=&amp;quot;Auto&amp;quot; /&amp;gt;
                &amp;lt;RowDefinition Height=&amp;quot;Auto&amp;quot; /&amp;gt;
            &amp;lt;/Grid.RowDefinitions&amp;gt;
            &amp;lt;Button Content=&amp;quot;Подключиться&amp;quot; Height=&amp;quot;23&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot; Name=&amp;quot;btnConnect&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Width=&amp;quot;100&amp;quot; Click=&amp;quot;btnConnect_Click&amp;quot; Grid.Row=&amp;quot;1&amp;quot; /&amp;gt;
            &amp;lt;Button Content=&amp;quot;Экспорт DDE&amp;quot; Height=&amp;quot;23&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot; Name=&amp;quot;btnExportDde&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Width=&amp;quot;100&amp;quot; Click=&amp;quot;btnExportDde_Click&amp;quot; IsEnabled=&amp;quot;False&amp;quot; Grid.Column=&amp;quot;1&amp;quot; Grid.Row=&amp;quot;1&amp;quot; /&amp;gt;
            &amp;lt;Button Content=&amp;quot;Старт&amp;quot; Height=&amp;quot;23&amp;quot; Name=&amp;quot;btnStart&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Click=&amp;quot;btnStart_Click&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot; Width=&amp;quot;100&amp;quot; Grid.Column=&amp;quot;2&amp;quot; Grid.ColumnSpan=&amp;quot;2&amp;quot; Grid.Row=&amp;quot;1&amp;quot; /&amp;gt;
            &amp;lt;TextBox Height=&amp;quot;23&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot; Name=&amp;quot;Path&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Width=&amp;quot;272&amp;quot; Grid.ColumnSpan=&amp;quot;3&amp;quot;/&amp;gt;
            &amp;lt;Button Content=&amp;quot;...&amp;quot; Name=&amp;quot;FindPath&amp;quot; Click=&amp;quot;FindPath_Click&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot; Width=&amp;quot;28&amp;quot; Height=&amp;quot;23&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Grid.Column=&amp;quot;3&amp;quot; /&amp;gt;
        &amp;lt;/Grid&amp;gt;
        &amp;lt;EcngTradingXaml:LogControl Margin=&amp;quot;12,64,10,12&amp;quot; Name=&amp;quot;logcontrol&amp;quot;/&amp;gt;
    &amp;lt;/Grid&amp;gt;
&amp;lt;/Window&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Если таймфреймовые свечки, то вот так&lt;br /&gt;&lt;a href='http://i37.fastpic.ru/big/2012/0531/27/f411a8832e335ded535f74dcc2717327.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="http://i37.fastpic.ru/big/2012/0531/27/f411a8832e335ded535f74dcc2717327.png" style='max-width: 600px;' alt=""/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Если тиковые, то глухо&lt;br /&gt;&lt;a href='http://i37.fastpic.ru/big/2012/0531/ec/46e75a7171402aa3d3f47e544a3a30ec.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="http://i37.fastpic.ru/big/2012/0531/ec/46e75a7171402aa3d3f47e544a3a30ec.png" style='max-width: 600px;' alt=""/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Стояла одна из последних сборок 4.1 все было нормально. Обновился до 4.1.1, вылез этот баг, потом скачал 17411, тоже самое.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19472/</id>
    <title type="text">Приведите полный код работы со свечками - создание менеджера, серий, и т.д.</title>
    <published>2012-05-31T07:31:07Z</published>
    <updated>2012-05-31T07:31:07Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Приведите полный код работы со свечками - создание менеджера, серий, и т.д.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19462/</id>
    <title type="text">В обработчик события СandleManager.Processing обновленные свечки приходят примерно раз в 1сек. Если ...</title>
    <published>2012-05-30T14:53:58Z</published>
    <updated>2012-05-30T14:53:58Z</updated>
    <author>
      <name>Moadip</name>
      <uri>https://stocksharp.ru/users/5973/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">В обработчик события СandleManager.Processing обновленные свечки приходят примерно раз в 1сек.&lt;br /&gt;&lt;br /&gt;Если написать что то подобное&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

_candleManager.Processing += (series, candle) =&amp;gt;
                                    {
                                        if(candle.State == CandleStates.Finished)
                                        {
                                            this.GuiAsync(() =&amp;gt; MessageBox.Show(this, &amp;quot;Свечка закончена&amp;quot;));
                                        }
                                    };
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;И воткнуть бряк в условие, то его срабатывание можно ждать долго и упорно.&lt;br /&gt;&lt;br /&gt;С таймфреймовыми свечками все нормально.&lt;br /&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>