﻿<?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">Как понять, что DDE передал всю историю, и теперь идет реал-тайм?</title>
  <id>~/topic/3075/kak-ponyat-chto-dde-peredal-vsyu-istoriyu-i-teper-idet-real-taim/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-04T16:15:29Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=3075" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/21812/</id>
    <title type="text">CloseTime - это время закрытия свечи, а не время последнего обновления. То, что вы исправили одно ме...</title>
    <published>2012-10-15T19:48:19Z</published>
    <updated>2012-10-15T19:48:19Z</updated>
    <author>
      <name>Sergey Sokolov</name>
      <uri>https://stocksharp.ru/users/6014/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;CloseTime - это время закрытия свечи, а не время последнего обновления.
То, что вы исправили одно место, где логика зависит от правильного CloseTime (IsCandleFinishedBeforeChange), не означает, что нет других таких мест.
Наверняка они есть. А значит, от такого фикса могут возникать труднообнаружимые проблемы.
Да и после того, как вы таким образом проехались по всем свечкам, CloseTime у них будет расставлен совершенно в разнобой, так как последний тик не обязательно приходит в последнюю секунду, и всегда неверно, так как последний тик свечи всегда идет раньше чем настоящий CloseTime.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/21808/</id>
    <title type="text">Ясно, я думал какая-то библиотека c# :) Вот что у меня получилось, вроде работает, и не надо переопр...</title>
    <published>2012-10-15T15:30:37Z</published>
    <updated>2012-10-15T17:06:24Z</updated>
    <author>
      <name>RomSunZ</name>
      <uri>https://stocksharp.ru/users/6384/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Ясно, я думал какая-то библиотека c# :)&lt;/p&gt;
&lt;p&gt;Вот что у меня получилось, вроде работает, и не надо переопределять свечи:
[code=csharp]
public class myTimeFrameCandleBuilder : TimeFrameCandleBuilder
{
protected override TimeFrameCandle CreateCandle(CandleSeries series, ICandleBuilderSourceValue value)
{
var candle = base.CreateCandle(series, value);
candle.CloseTime = value.Time;
return candle;
}
protected override bool IsCandleFinishedBeforeChange(CandleSeries series, TimeFrameCandle candle, ICandleBuilderSourceValue value)
{
return (value.Time &amp;gt;= candle.OpenTime.Add((TimeSpan)candle.Arg));
}&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    protected override void UpdateCandle(CandleSeries series, TimeFrameCandle candle, ICandleBuilderSourceValue value)
    {
        base.UpdateCandle(series, candle, value);
        candle.CloseTime = value.Time;
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[/code]&lt;/p&gt;
&lt;p&gt;[code=csharp]
_candleManager = new CandleManager(_trader);
_candleManager.Sources.RemoveWhere(t =&amp;gt; t.GetType() == typeof(TimeFrameCandleBuilder));
_candleManager.Sources.Add(new myTimeFrameCandleBuilder { Sources = { new TradeCandleBuilderSource(_trader) } });&lt;/p&gt;
&lt;p&gt;[/code]
Не уверен, нужно ли сначала удалять TimeFrameCandleBuilder, но вроде работает&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/21806/</id>
    <title type="text">[code=csharp] public static void CopyFrom(this TimeFrameCandle candle, TimeFrameCandle copyFrom, boo...</title>
    <published>2012-10-15T14:49:19Z</published>
    <updated>2012-10-15T14:49:19Z</updated>
    <author>
      <name>Sergey Sokolov</name>
      <uri>https://stocksharp.ru/users/6014/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;[code=csharp]
public static void CopyFrom(this TimeFrameCandle candle, TimeFrameCandle copyFrom, bool setState=true) {
candle.TimeFrame = copyFrom.TimeFrame;
candle.Security = copyFrom.Security;
candle.OpenTime = copyFrom.OpenTime;
candle.CloseTime = copyFrom.CloseTime;
candle.HighTime = copyFrom.HighTime;
candle.LowTime = copyFrom.LowTime;
candle.OpenPrice = copyFrom.OpenPrice;
candle.ClosePrice = copyFrom.ClosePrice;
candle.HighPrice = copyFrom.HighPrice;
candle.LowPrice = copyFrom.LowPrice;
candle.TotalPrice = copyFrom.TotalPrice;
candle.OpenVolume = copyFrom.OpenVolume;
candle.CloseVolume = copyFrom.CloseVolume;
candle.HighVolume = copyFrom.HighVolume;
candle.LowVolume = copyFrom.LowVolume;
candle.TotalVolume = copyFrom.TotalVolume;
candle.RelativeVolume = copyFrom.RelativeVolume;
candle.Series = copyFrom.Series;
candle.Source = copyFrom.Source;
candle.Arg = copyFrom.Arg;
if(setState) candle.State = copyFrom.State; // must be the last assignment
}
[/code]&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/21790/</id>
    <title type="text">Да, я знаю, просто пока только начал разбираться с библиотекой, и многих моментов просто не знаю. Пл...</title>
    <published>2012-10-12T15:41:45Z</published>
    <updated>2012-10-15T10:32:41Z</updated>
    <author>
      <name>RomSunZ</name>
      <uri>https://stocksharp.ru/users/6384/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Да, я знаю, просто пока только начал разбираться с библиотекой, и многих моментов просто не знаю. Плюс еще сам с# не особо знаком, так что пока разбираюсь с примерами и делаю как более очевидно для меня [biggrin]&lt;/p&gt;
&lt;p&gt;PS а что за метод CopyFrom?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/21786/</id>
    <title type="text">Ооочень медленный способ. Дело в том, что так у вас будет каждый тик копироваться и пересоздаваться ...</title>
    <published>2012-10-12T15:20:10Z</published>
    <updated>2012-10-12T15:20:10Z</updated>
    <author>
      <name>Sergey Sokolov</name>
      <uri>https://stocksharp.ru/users/6014/</uri>
      <email>info@stocksharp.ru</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.ru/posts/m/21784/</id>
    <title type="text">Спасибо. Я сделал еще более коряво, но вроде тоже работает (пока изучаю): [code=csharp] protected ov...</title>
    <published>2012-10-12T14:20:23Z</published>
    <updated>2012-10-12T14:20:23Z</updated>
    <author>
      <name>RomSunZ</name>
      <uri>https://stocksharp.ru/users/6384/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Спасибо.
Я сделал еще более коряво, но вроде тоже работает (пока изучаю):
[code=csharp]
protected override void OnStarted()
{
_series
.WhenCandlesFinished()
.Do(ProcessCandle)
.Apply(this);
_series
.WhenCandlesChanged()
.Do(ProcessCandleTick)
.Apply(this);
}&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    private void ProcessCandleTick(Candle candle)
    {
        var trr = base.Trader.Trades.Where(tr =&amp;gt; tr.Security == candle.Security &amp;amp;&amp;amp; tr.Time &amp;gt;= candle.OpenTime &amp;amp;&amp;amp; tr.Time &amp;lt;= candle.CloseTime).Last();
        var tt = candle.Security.LastTrade.Time;
        if (trr.Time != tt) realtime = false;
        else realtime = true;
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[/code]&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/21780/</id>
    <title type="text">я делал так: [code=csharp] public sealed class MyCandle : TimeFrameCandle { public MyCandle(TimeFram...</title>
    <published>2012-10-12T12:59:20Z</published>
    <updated>2012-10-12T12:59:20Z</updated>
    <author>
      <name>Sergey Sokolov</name>
      <uri>https://stocksharp.ru/users/6014/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;я делал так:
[code=csharp]
public sealed class MyCandle : TimeFrameCandle {
public MyCandle(TimeFrameCandle copyFrom) {
this.CopyFrom(copyFrom);
}&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    public DateTime LastTradeTime {get; private set;}

    public class MyCandleBuilder : TimeFrameCandleBuilder {
        protected override TimeFrameCandle CreateCandle(CandleSeries series, ICandleBuilderSourceValue value) {
            var candle = base.CreateCandle(series, value);
            if(candle == null) return null;

            var mycandle = new MyCandle(candle) {LastTradeTime = value.Time};

            return mycandle;
        }

        protected override void UpdateCandle(CandleSeries series, TimeFrameCandle candle, ICandleBuilderSourceValue value) {
            base.UpdateCandle(series, candle, value);
            ((MyCandle)candle).LastTradeTime = value.Time;
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[/code]
Кривовато, но работает.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/21777/</id>
    <title type="text">candle.CloseTime не пойдет, всегда возвращает конец таймфрейма, а не время последней сделки свечки. ...</title>
    <published>2012-10-12T09:26:10Z</published>
    <updated>2012-10-12T10:57:49Z</updated>
    <author>
      <name>RomSunZ</name>
      <uri>https://stocksharp.ru/users/6384/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;candle.CloseTime не пойдет, всегда возвращает конец таймфрейма, а не время последней сделки свечки.
Подскажите, как можно получить тиковые сделки по свечке или время последнего изменения свечки?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/21764/</id>
    <title type="text">Да, я уже понял [code=csharp] var tt = candle.Security.LastTrade.Time; if (candle.CloseTime != tt) r...</title>
    <published>2012-10-11T19:06:58Z</published>
    <updated>2012-10-11T19:08:25Z</updated>
    <author>
      <name>RomSunZ</name>
      <uri>https://stocksharp.ru/users/6384/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Да, я уже понял&lt;/p&gt;
&lt;p&gt;[code=csharp]
var tt = candle.Security.LastTrade.Time;
if (candle.CloseTime != tt) realtime = false;
else realtime = true;&lt;/p&gt;
&lt;p&gt;[/code]&lt;/p&gt;
&lt;p&gt;Помимо этого в примере не обрабатывается построение МАшек при загрузке истории:
[code=csharp]
private void ProcessCandle(Candle candle)
{
var longValue = candle.State == CandleStates.Finished ? _strategy.LongSma.Process((DecimalIndicatorValue)candle.ClosePrice) : null;
var shortValue = candle.State == CandleStates.Finished ? _strategy.ShortSma.Process((DecimalIndicatorValue)candle.ClosePrice) : null;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;		_chart.ProcessValues(candle.OpenTime, new Dictionary&amp;lt;IChartElement, object&amp;gt;
		{
			{ _candlesElem, candle },
			{ _longMaElem, longValue },
			{ _shortMaElem, shortValue },
		});
	}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[/code]
Статус свечек, загруженных из файла равен NULL, и они не строятся на графике и, соответственно, не рассчитывают МА.
Плюс ко всему в риалтайме машки также считаются непонять как (скорее всего и в окне, и в стратегии расчет дублируется), но я еще не понял, что там нужно поправить.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/21762/</id>
    <title type="text">[quote=RomSunZ;21757]Разбираюсь с примером Quik SampleSMA. В этом примере если запускать робота не с...</title>
    <published>2012-10-11T15:51:00Z</published>
    <updated>2012-10-11T15:51:16Z</updated>
    <author>
      <name>Sergey Masyura</name>
      <uri>https://stocksharp.ru/users/701/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;[quote=RomSunZ;21757]Разбираюсь с примером Quik SampleSMA.
В этом примере если запускать робота не с начала дня, то сыпятся сделки по приходу свечек из истории.
Есть ли какой-либо метод, чтобы запретить выставлять ордера на биржу, пока не будет закачана вся история?&lt;/p&gt;
&lt;p&gt;Роман.[/quote]&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.ru/posts/m/21757/</id>
    <title type="text">Разбираюсь с примером Quik SampleSMA. В этом примере если запускать робота не с начала дня, то сыпят...</title>
    <published>2012-10-11T09:22:21Z</published>
    <updated>2012-10-11T09:22:21Z</updated>
    <author>
      <name>RomSunZ</name>
      <uri>https://stocksharp.ru/users/6384/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Разбираюсь с примером Quik SampleSMA.
В этом примере если запускать робота не с начала дня, то сыпятся сделки по приходу свечек из истории.
Есть ли какой-либо метод, чтобы запретить выставлять ордера на биржу, пока не будет закачана вся история?&lt;/p&gt;
&lt;p&gt;Роман.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>