﻿<?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 формировать свечки из тиков в реал тайме?</title>
  <id>~/topic/2752/kak-v-4_1-formirovat-svechki-iz-tikov-v-real-taime/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-25T18:28:10Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=2752" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/19495/</id>
    <title type="text">TraderHelper.ToCandles в последней версии на codeplex </title>
    <published>2012-06-01T10:26:59Z</published>
    <updated>2012-06-01T10:26:59Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;TraderHelper.ToCandles в последней версии на codeplex&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19482/</id>
    <title type="text">Теперь необходимо конвертировать данные в ICandleBuilderSourceValue. Смотрите в сторону класса Conve...</title>
    <published>2012-05-31T09:54:12Z</published>
    <updated>2012-05-31T09:54:12Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Теперь необходимо конвертировать данные в ICandleBuilderSourceValue.
Смотрите в сторону класса ConvertableCandleBuilderSource.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19454/</id>
    <title type="text">Как теперь формировать свечки из тиков в реальном времени? Мне нужно самому генерировать тики (сделк...</title>
    <published>2012-05-30T08:53:49Z</published>
    <updated>2012-05-30T08:53:49Z</updated>
    <author>
      <name>ionn</name>
      <uri>https://stocksharp.ru/users/6029/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Как теперь формировать свечки из тиков в реальном времени?
Мне нужно самому генерировать тики (сделки), без ITrader.&lt;/p&gt;
&lt;p&gt;в 3 версии, я делал так:&lt;/p&gt;
&lt;p&gt;определял источник свечек, с методом AddNewTrade() и через него скармливал тики. CandleManager соответственно строил свечки, а теперь?&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
public abstract class MyCandleSource : Disposable, ICandleSource

public class ParallelMyTraderCandleSource : MyCandleSource
    {
        private readonly SynchronizedList&amp;lt;Trade&amp;gt; _newTrades = new SynchronizedList&amp;lt;Trade&amp;gt;();

        private bool _isInProcess;
        private readonly Timer _timer;

        /// &amp;lt;summary&amp;gt;
        /// Создать &amp;lt;see cref=&amp;quot;ParallelTraderCandleSource&amp;quot;/&amp;gt;.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;trader&amp;quot;&amp;gt;Торговый шлюз, у которого используется событие &amp;lt;see cref=&amp;quot;ITrader.NewTrades&amp;quot;/&amp;gt;.&amp;lt;/param&amp;gt;
        public ParallelMyCandleSource()
            : this(TimeSpan.FromMilliseconds(300))
        {        }

        /// &amp;lt;summary&amp;gt;
        /// Создать &amp;lt;see cref=&amp;quot;ParallelTraderCandleSource&amp;quot;/&amp;gt;.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;trader&amp;quot;&amp;gt;Торговый шлюз, у которого используется событие &amp;lt;see cref=&amp;quot;ITrader.NewTrades&amp;quot;/&amp;gt;.&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;interval&amp;quot;&amp;gt;Интервал отправки новых сделок.&amp;lt;/param&amp;gt;
        public ParallelMyCandleSource(TimeSpan interval)
            : base(int.MaxValue, int.MaxValue)
        {         

            _timer = interval.CreateTimer(OnProcessTrades);
        }

        /// &amp;lt;summary&amp;gt;
        /// Обработчик события &amp;lt;see cref=&amp;quot;ITrader.NewTrades&amp;quot;/&amp;gt;.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;trades&amp;quot;&amp;gt;Новые сделки.&amp;lt;/param&amp;gt;
        protected override void OnNewTrades(IEnumerable&amp;lt;Trade&amp;gt; trades)
        {
            base.OnNewTrades(trades);

            _newTrades.AddRange(trades);
        }


        public override void AddNewTrades(Trade trade)
        {
            base.AddNewTrades(trade);

            _newTrades.Add(trade);
        }

        private void OnProcessTrades()
        {
            if (_isInProcess)
                return;

            _isInProcess = true;

            try
            {
                var newTrades = _newTrades.SyncGet(c =&amp;gt;
                {
                    var retVal = c.ToArray();
                    c.Clear();
                    return retVal;
                });

                if (newTrades.Length &amp;gt; 0)
                    base.RaiseNewTrades(newTrades);
            }
            finally
            {
                _isInProcess = false;
            }
        }        
    }

&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>