﻿<?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">Проблемы со стратегией</title>
  <id>~/topic/2460/problemy-so-strategiei/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-05-05T01:43:03Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=2460" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/17389/</id>
    <title type="text">выложите кто нибудь рабочий пример со стаканом пожалуйста Взял оригинальный SampleHistoryTesting, за...</title>
    <published>2012-03-19T07:45:29Z</published>
    <updated>2016-08-16T00:06:13Z</updated>
    <author>
      <name>Moadip</name>
      <uri>https://stocksharp.ru/users/5973/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;выложите кто нибудь рабочий пример со стаканом пожалуйста&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Взял оригинальный SampleHistoryTesting, заменил в нем SmaStrategy на вашу стратегию - &lt;a href="http://stocksharp.com/posts/m/16974/" title="http://stocksharp.com/posts/m/16974/"&gt;NewStrategy&lt;/a&gt;&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;

// создаем тестовый инструмент, на котором будет производится тестирование
var security = new Security
{
	Id = &amp;quot;RIM2@RTS&amp;quot;, // по идентификатору инструмента будет искаться папка с историческими маркет данными
	Code = &amp;quot;RIM2&amp;quot;,
	Name = &amp;quot;RTS-6.12&amp;quot;,
	MinStepSize = 5,
	MinStepPrice = 2,
	Exchange = Exchange.Test,
};

 ...

var startTime = new DateTime(2012, 3, 16);
var stopTime = new DateTime(2012, 3, 17);

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Поставил обновление стакана раз в 10 сек. т.к. при 1 сек. тестер перешел в пошаговый режим.[biggrin]&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;

_trader.DepthGenerators[security] = new TrendMarketDepthGenerator(security)
{
	// стакан для инструмента в истории обновляется раз в секунду
	Interval = TimeSpan.FromSeconds(10),
};
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&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;

// создаем торговую стратегию, скользящие средние на 80 5-минуток и 10 5-минуток
_strategy = new NewStrategy()
{
	Volume = 1,
	Portfolio = portfolio,
	Security = security,
	Trader = _trader
};
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Больше ничего не менял.&lt;br /&gt;Пуск!&lt;br /&gt;&lt;a href='http://i35.fastpic.ru/big/2012/0319/50/3b3666b9f5bb3e2a45b364368add0450.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="http://i35.fastpic.ru/big/2012/0319/50/3b3666b9f5bb3e2a45b364368add0450.png" style='max-width: 600px;' alt=""/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;До конца теста ждать не стал.&lt;br /&gt;&lt;br /&gt;Полный код на на всякий случай&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_e0d78f28eaa145908753b0b11c7d5df6');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_e0d78f28eaa145908753b0b11c7d5df6' 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;

namespace SampleHistoryTesting
{
	using System;
	using System.Collections.Generic;
	using System.Diagnostics;
	using System.IO;
	using System.Windows;
	using System.Windows.Forms;
	using System.Windows.Media;
	using MessageBox = System.Windows.MessageBox;

	using Ecng.Common;
	using Ecng.Serialization;
	using Ecng.Xaml;
	using Ecng.Collections;

	using StockSharp.Algo.Candles;
	using StockSharp.Algo.Reporting;
	using StockSharp.Algo.Storages;
	using StockSharp.Algo.Strategies;
	using StockSharp.Algo.Testing;
	using StockSharp.Algo.Logging;
	using StockSharp.Algo.Equity;
	using StockSharp.Algo.Indicators.Trend;
	using StockSharp.BusinessEntities;
	
	public partial class MainWindow
	{
		private Strategy _strategy;

		private ICollection&amp;lt;EquityData&amp;gt; _curveItems;
		private EmulationTrader _trader;

		private readonly LogManager _logManager = new LogManager();

		private DateTime _lastUpdateDate;
		private DateTime _startEmulationTime;

		public MainWindow()
		{
			InitializeComponent();

			_logManager.Listeners.Add(new FileLogListener(&amp;quot;log.txt&amp;quot;));
		}

		private void FindPath_Click(object sender, RoutedEventArgs e)
		{
			var dlg = new FolderBrowserDialog();

			if (!HistoryPath.Text.IsEmpty())
				dlg.SelectedPath = HistoryPath.Text;

			if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
			{
				HistoryPath.Text = dlg.SelectedPath;
			}
		}

		private void StartBtn_Click(object sender, RoutedEventArgs e)
		{
			// если процесс был запущен, то его останавливаем
			if (_trader != null &amp;amp;&amp;amp; _trader.State != EmulationStates.Stopped)
			{
				StartBtn.IsEnabled = false;

				_strategy.Stop();
				_trader.Stop();
				_logManager.Sources.Clear();

				return;
			}

			if (HistoryPath.Text.IsEmpty() || !Directory.Exists(HistoryPath.Text))
			{
				MessageBox.Show(this, &amp;quot;Неправильный путь.&amp;quot;);
				return;
			}

			// создаем тестовый инструмент, на котором будет производится тестирование
			var security = new Security
			{
				Id = &amp;quot;RIM2@RTS&amp;quot;, // по идентификатору инструмента будет искаться папка с историческими маркет данными
				Code = &amp;quot;RIM2&amp;quot;,
				Name = &amp;quot;RTS-6.12&amp;quot;,
				MinStepSize = 5,
				MinStepPrice = 2,
				Exchange = Exchange.Test,
			};

			// тестовый портфель
			var portfolio = new Portfolio { Name = &amp;quot;test account&amp;quot;, BeginAmount = 1000000m };

			// хранилище, через которое будет производиться доступ к тиковой и котировочной базе
			var storage = new TradingStorage(new InMemoryStorage())
			{
				BasePath = HistoryPath.Text
			};

			var timeFrame = TimeSpan.FromMinutes(5);

			// в реальности период может быть другим, и это зависит от объема данных,
			// хранящихся по пути HistoryPath, 
			var startTime = new DateTime(2012, 3, 16);
			var stopTime = new DateTime(2012, 3, 17);
	
			_trader = new EmulationTrader(
				new[] { security },
				new[] { portfolio })
			{
				MarketTimeChangedInterval = timeFrame,
				Storage = storage,
				WorkingTime = Exchange.Rts.WorkingTime,

				// параметр влияет на занимаемую память.
				// в случае достаточно количества памяти на компьютере рекомендуется его увеличить
				DaysInMemory = 6,
			};
			
			_trader.DepthGenerators[security] = new TrendMarketDepthGenerator(security)
			{
				// стакан для инструмента в истории обновляется раз в секунду
				Interval = TimeSpan.FromSeconds(10),
			};

			var candleManager = new CandleManager();
			var builder = new CandleBuilder(new TradeCandleBuilderSource(_trader) { IsSyncProcess = true });
			candleManager.Sources.Add(builder);

			// в целях оптимизации расходования памяти храним не более 100 последних свечек и 100000 последних сделок
			((CandleContainer)candleManager.Container).MaxCandleCount = 100;
			((CandleBuilderContainer)builder.Container).MaxCandleCount = 100;
			((CandleBuilderContainer)builder.Container).MaxValueCount = 100000;

			candleManager.RegisterTimeFrameCandles(security, timeFrame);

			// создаем торговую стратегию, скользящие средние на 80 5-минуток и 10 5-минуток
            _strategy = new NewStrategy()
			{
				Volume = 1,
				Portfolio = portfolio,
				Security = security,
				Trader = _trader
			};

			// копируем параметры на визуальную панель
			ParametersPanel.Parameters.Clear();
			ParametersPanel.Parameters.AddRange(_strategy.EquityManager.Parameters);

			if (_curveItems == null)
				_curveItems = Curve.CreateCurve(_strategy.Name, Colors.DarkGreen);
			else
				_curveItems.Clear();

			_strategy.EquityManager.NewEquityData += data =&amp;gt; this.GuiAsync(() =&amp;gt; _curveItems.Add(data));

			_logManager.Sources.Add(_strategy);

			// и подписываемся на событие изменения времени, чтобы обновить ProgressBar
			_trader.MarketTimeChanged += () =&amp;gt;
			{
				// в целях оптимизации обновляем ProgressBar только при начале нового дня
				if (_trader.MarketTime.Date != _lastUpdateDate || _trader.MarketTime &amp;gt;= stopTime)
				{
					_lastUpdateDate = _trader.MarketTime.Date;
					this.GuiAsync(() =&amp;gt; TestingProcess.Value = (_trader.MarketTime - startTime).Ticks);
				}
			};

			_trader.StateChanged += () =&amp;gt;
			{
				if (_trader.State == EmulationStates.Stopped)
				{
					this.GuiAsync(() =&amp;gt;
					{
						StartBtn.IsEnabled = true;

						if (TestingProcess.Value == TestingProcess.Maximum)
							MessageBox.Show(&amp;quot;Закончено за &amp;quot; + (DateTime.Now - _startEmulationTime));
						else
							MessageBox.Show(&amp;quot;Отменено&amp;quot;);
					});
				}
				else if (_trader.State == EmulationStates.Started)
				{
					// запускаем стратегию когда эмулятор запустился
					_strategy.Start();
				}
			};

			// устанавливаем в визуальный элемент ProgressBar максимальное количество итераций)
			TestingProcess.Maximum = (stopTime - startTime).Ticks;
			TestingProcess.Value = 0;
			Report.IsEnabled = true;

			_startEmulationTime = DateTime.Now;

			// соединяемся с трейдером и запускаем экспорт,
			// чтобы инициализировать переданными инструментами и портфелями необходимые свойства EmulationTrader
			_trader.Connect();
			_trader.StartExport();

			// запускаем эмуляцию, задавая период тестирования (startTime, stopTime).
			_trader.Start(startTime, stopTime);
		}

		private void Report_Click(object sender, RoutedEventArgs e)
		{
			// сгерерировать отчет по прошедшему тестированию
			// Внимание! сделок и заявок может быть большое количество,
			// поэтому Excel отчет может тормозить
			new ExcelStrategyReport(_strategy, &amp;quot;sma.xls&amp;quot;).Generate();

			// открыть отчет
			Process.Start(&amp;quot;sma.xls&amp;quot;);
		}
	}
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17206/</id>
    <title type="text">У вас не успевает, могу вам сразу сказать. Раз бид = null Я вам всячески рекомендую либо записаться ...</title>
    <published>2012-03-13T17:40:50Z</published>
    <updated>2016-08-16T00:06:07Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.ru/users/6032/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Alexander Mukhanchikov &lt;a href="https://stocksharp.ru/posts/m/17205/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;У вас не успевает, могу вам сразу сказать.&lt;br /&gt;Раз бид = null&lt;br /&gt;&lt;br /&gt;Я вам всячески рекомендую либо записаться к нам на курсы, либо воспользоваться услугой &lt;a href="http://stocksharp.com/forum/2149/Novaia-uslugha---platnaia-poddierzhka-pol-zovatieliei/" title="http://stocksharp.com/forum/2149/Novaia-uslugha---platnaia-poddierzhka-pol-zovatieliei/"&gt;поддержки&lt;/a&gt;.&lt;br /&gt;А то так можно очень долго выяснять подобные мелочи, и в итоге на каком-то шаге сдаться, потратив слишком много времени и сил впустую.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;А сколько экспорт стакана запускается? может задержку сделать после запуска. Я бы с радостью заплатить за поддержку, но в бюджете брешь на данный момент[biggrin] </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17205/</id>
    <title type="text">У вас не успевает, могу вам сразу сказать. Раз бид = null Я вам всячески рекомендую либо записаться ...</title>
    <published>2012-03-13T17:35:26Z</published>
    <updated>2016-08-16T00:06:07Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">У вас не успевает, могу вам сразу сказать.&lt;br /&gt;Раз бид = null&lt;br /&gt;&lt;br /&gt;Я вам всячески рекомендую либо записаться к нам на курсы, либо воспользоваться услугой &lt;a href="http://stocksharp.com/forum/2149/Novaia-uslugha---platnaia-poddierzhka-pol-zovatieliei/" title="http://stocksharp.com/forum/2149/Novaia-uslugha---platnaia-poddierzhka-pol-zovatieliei/"&gt;поддержки&lt;/a&gt;.&lt;br /&gt;А то так можно очень долго выяснять подобные мелочи, и в итоге на каком-то шаге сдаться, потратив слишком много времени и сил впустую.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17398/</id>
    <title type="text">Ошибка моя была в том, что я указывал путь до папки RIH2@RTS, а не той, в которой лежит RIH2@RTS... ...</title>
    <published>2012-03-19T11:12:01Z</published>
    <updated>2012-03-19T11:12:01Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.ru/users/6032/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Ошибка моя была в том, что я указывал путь до папки RIH2@RTS, а не той, в которой лежит RIH2@RTS... 2е недели пытался понять, что такое у меня с кодом...[biggrin] </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17387/</id>
    <title type="text">Смотрите примеры из архива</title>
    <published>2012-03-19T05:58:27Z</published>
    <updated>2012-03-19T05:58:27Z</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/17386/</id>
    <title type="text">_trader.QuotesChanged ни разу не срабатывает.. Стратегия даже не запускается и следовательно стакан ...</title>
    <published>2012-03-19T04:40:12Z</published>
    <updated>2012-03-19T05:16:00Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.ru/users/6032/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">_trader.QuotesChanged ни разу не срабатывает.. Стратегия даже не запускается и следовательно стакан = null.. Попробую на какой нить старой версии, может заработает&lt;br /&gt;&lt;br /&gt;Увы, но с QuotesChanged тоже самое на 3.1, похоже у меня руки кривые [biggrin] выложите кто нибудь рабочий пример со стаканом пожалуйста[blink]</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17250/</id>
    <title type="text">Сделал вот так.. Все равно не получается, стакан не появляется (((( Добавил событие появления новых ...</title>
    <published>2012-03-14T17:26:41Z</published>
    <updated>2012-03-14T17:26:41Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.ru/users/6032/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Сделал вот так.. Все равно не получается, стакан не появляется ((((&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;
            _trader.NewSecurities += sec =&amp;gt;
            {
                _trader.GetMarketDepth(security);
            };&lt;/pre&gt;
&lt;/div&gt;&lt;/div&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;
bool str = false;

            _trader.QuotesChanged += depths =&amp;gt;
            {
                if (str == false)
				{
                    str = true;
                    _strategy.Start();
                }
                _marketDepth = depths.FirstOrDefault(d =&amp;gt; d.Security == security);
            };&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&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;
namespace SampleHistoryTesting
{
	using System;
	using System.Collections.Generic;
	using System.Diagnostics;
	using System.IO;
	using System.Windows;
	using System.Windows.Forms;
	using System.Windows.Media;
	using MessageBox = System.Windows.MessageBox;

	using Ecng.Common;
	using Ecng.Serialization;
	using Ecng.Xaml;
	using Ecng.Collections;

	using StockSharp.Algo.Candles;
	using StockSharp.Algo.Reporting;
	using StockSharp.Algo.Storages;
	using StockSharp.Algo.Strategies;
	using StockSharp.Algo.Testing;
	using StockSharp.Algo.Logging;
	using StockSharp.Algo.Equity;
	using StockSharp.Algo.Indicators.Trend;
	using StockSharp.BusinessEntities;

    using System.Linq;

    using System.Threading;
	
	public partial class MainWindow
	{
		private Strategy _strategy;

		private ICollection&amp;lt;EquityData&amp;gt; _curveItems;
		private EmulationTrader _trader;

		private readonly LogManager _logManager = new LogManager();

		private DateTime _lastUpdateDate;
		private DateTime _startEmulationTime;
        public static MarketDepth _marketDepth;
        //public Security security;

		public MainWindow()
		{
			InitializeComponent();

			_logManager.Listeners.Add(new FileLogListener(&amp;quot;log.txt&amp;quot;));
		}

		private void FindPath_Click(object sender, RoutedEventArgs e)
		{
			var dlg = new FolderBrowserDialog();

			if (!HistoryPath.Text.IsEmpty())
				dlg.SelectedPath = HistoryPath.Text;

			if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
			{
				HistoryPath.Text = dlg.SelectedPath;
			}
		}

		private void StartBtn_Click(object sender, RoutedEventArgs e)
		{
			// если процесс был запущен, то его останавливаем
			if (_trader != null &amp;amp;&amp;amp; _trader.State != EmulationStates.Stopped)
			{
				StartBtn.IsEnabled = false;

				_strategy.Stop();
				_trader.Stop();
				_logManager.Sources.Clear();

				return;
			}

			if (HistoryPath.Text.IsEmpty() || !Directory.Exists(HistoryPath.Text))
			{
				MessageBox.Show(this, &amp;quot;Неправильный путь.&amp;quot;);
				return;
			}

			// создаем тестовый инструмент, на котором будет производится тестирование
            var security = new Security
			{
				Id = &amp;quot;RIH2@RTS&amp;quot;, // по идентификатору инструмента будет искаться папка с историческими маркет данными
                Code = &amp;quot;RIH2&amp;quot;,
				Name = &amp;quot;RTS-3.12&amp;quot;,
				MinStepSize = 5,
				MinStepPrice = 3,
				Exchange = Exchange.Rts,
			};

			// тестовый портфель
			var portfolio = new Portfolio { Name = &amp;quot;test account&amp;quot;, BeginAmount = 1000000m };

			// хранилище, через которое будет производиться доступ к тиковой и котировочной базе
			var storage = new TradingStorage(new InMemoryStorage())
			{
				BasePath = HistoryPath.Text
			};

			// в реальности период может быть другим, и это зависит от объема данных,
			// хранящихся по пути HistoryPath, 
            var startTime = new DateTime(2012, 2, 26);
            var stopTime = new DateTime(2012, 2, 27);
	
			_trader = new EmulationTrader(
				new[] { security },
				new[] { portfolio })
			{
				Storage = storage,
				WorkingTime = Exchange.Rts.WorkingTime,

				// параметр влияет на занимаемую память.
				// в случае достаточно количества памяти на компьютере рекомендуется его увеличить
				DaysInMemory = 6,
			};

            _trader.DepthGenerators[security] = new TrendMarketDepthGenerator(security);
            
			var candleManager = new CandleManager();
			var builder = new CandleBuilder(new TradeCandleBuilderSource(_trader) { IsSyncProcess = true });
			candleManager.Sources.Add(builder);

			// в целях оптимизации расходования памяти храним не более 100 последних свечек и 100000 последних сделок
			((CandleContainer)candleManager.Container).MaxCandleCount = 100;
			((CandleBuilderContainer)builder.Container).MaxCandleCount = 100;
			((CandleBuilderContainer)builder.Container).MaxValueCount = 100000;

			// создаем торговую стратегию, скользящие средние на 80 5-минуток и 10 5-минуток
			_strategy = new NewStrategy()
			{
				Volume = 1,
				Portfolio = portfolio,
				Security = security,
				Trader = _trader
			};

			// копируем параметры на визуальную панель
			ParametersPanel.Parameters.Clear();
			ParametersPanel.Parameters.AddRange(_strategy.EquityManager.Parameters);

			if (_curveItems == null)
				_curveItems = Curve.CreateCurve(_strategy.Name, Colors.DarkGreen);
			else
				_curveItems.Clear();

			_strategy.EquityManager.NewEquityData += data =&amp;gt; this.GuiAsync(() =&amp;gt; _curveItems.Add(data));

			_logManager.Sources.Add(_strategy);

			// и подписываемся на событие изменения времени, чтобы обновить ProgressBar
			_trader.MarketTimeChanged += () =&amp;gt;
			{
				// в целях оптимизации обновляем ProgressBar только при начале нового дня
				if (_trader.MarketTime.Date != _lastUpdateDate || _trader.MarketTime &amp;gt;= stopTime)
				{
					_lastUpdateDate = _trader.MarketTime.Date;
					this.GuiAsync(() =&amp;gt; TestingProcess.Value = (_trader.MarketTime - startTime).Ticks);
				}
			};

			_trader.StateChanged += () =&amp;gt;
			{
				if (_trader.State == EmulationStates.Stopped)
				{
					this.GuiAsync(() =&amp;gt;
					{
						StartBtn.IsEnabled = true;

						if (TestingProcess.Value == TestingProcess.Maximum)
							MessageBox.Show(&amp;quot;Закончено за &amp;quot; + (DateTime.Now - _startEmulationTime));
						else
							MessageBox.Show(&amp;quot;Отменено&amp;quot;);
					});
				}
				else if (_trader.State == EmulationStates.Started)
				{
					// запускаем стратегию когда эмулятор запустился
                    //_strategy.Start();
				}
			};

            bool str = false;

            _trader.QuotesChanged += depths =&amp;gt;
            {
                if (str == false)
				{
                    str = true;
                    _strategy.Start();
                }
                _marketDepth = depths.FirstOrDefault(d =&amp;gt; d.Security == security);
            };

            _trader.NewSecurities += sec =&amp;gt;
            {
                _trader.GetMarketDepth(security);
            };

			// устанавливаем в визуальный элемент ProgressBar максимальное количество итераций)
			TestingProcess.Maximum = (stopTime - startTime).Ticks;
			TestingProcess.Value = 0;
			Report.IsEnabled = true;

			_startEmulationTime = DateTime.Now;

			// соединяемся с трейдером и запускаем экспорт,
			// чтобы инициализировать переданными инструментами и портфелями необходимые свойства EmulationTrader
			_trader.Connect();
			_trader.StartExport();

            

			// запускаем эмуляцию, задавая период тестирования (startTime, stopTime).
			_trader.Start(startTime, stopTime);
		}

		private void Report_Click(object sender, RoutedEventArgs e)
		{
			// сгерерировать отчет по прошедшему тестированию
			// Внимание! сделок и заявок может быть большое количество,
			// поэтому Excel отчет может тормозить
			new ExcelStrategyReport(_strategy, &amp;quot;sma.xls&amp;quot;).Generate();

			// открыть отчет
			Process.Start(&amp;quot;sma.xls&amp;quot;);
		}
	}
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17210/</id>
    <title type="text">Экспорт стакана надо запустить перед запуском эмуляции или после? И если перед, то проверку перед за...</title>
    <published>2012-03-13T18:18:24Z</published>
    <updated>2012-03-13T18:18:24Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.ru/users/6032/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Экспорт стакана надо запустить перед запуском эмуляции или после?&lt;br /&gt;И если перед, то проверку перед запуском проводить? а после уже запускать.. или как?&lt;br /&gt;&lt;br /&gt;Ответьте пожалуйста, спасибо</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17207/</id>
    <title type="text">Вариант как сделать я вам написал выше. Выше дело принимать его или делать по-своему.</title>
    <published>2012-03-13T17:44:43Z</published>
    <updated>2012-03-13T17:44:43Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Вариант как сделать я вам написал выше.&lt;br /&gt;Выше дело принимать его или делать по-своему.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17204/</id>
    <title type="text">А экспорт успевает запуститься? Может стоит хотя бы проверку вставить да, к примеру, каждый вызов On...</title>
    <published>2012-03-13T17:32:17Z</published>
    <updated>2012-03-13T17:32:17Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.ru/users/6032/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Alexander Mukhanchikov &lt;a href="https://stocksharp.ru/posts/m/17203/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;А экспорт успевает запуститься?&lt;br /&gt;Может стоит хотя бы проверку вставить да, к примеру, каждый вызов OnProcess в TimeFrame стратегии проверять стакан?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;А как проверить, успевает или нет?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17203/</id>
    <title type="text">А экспорт успевает запуститься? Может стоит хотя бы проверку вставить да, к примеру, каждый вызов On...</title>
    <published>2012-03-13T16:07:51Z</published>
    <updated>2012-03-13T16:07:51Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">А экспорт успевает запуститься?&lt;br /&gt;Может стоит хотя бы проверку вставить да, к примеру, каждый вызов OnProcess в TimeFrame стратегии проверять стакан?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17202/</id>
    <title type="text"> _trader.Connect(); _trader.StartExport(); _trader.RegisterQuotes(security); Вот запуск экспорта ста...</title>
    <published>2012-03-13T15:41:23Z</published>
    <updated>2012-03-13T15:41:23Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.ru/users/6032/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
			_trader.Connect();
			_trader.StartExport();

            _trader.RegisterQuotes(security);&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Вот запуск экспорта стакана, после _trader.StartExport();</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17201/</id>
    <title type="text">Очевидно что ошибка из-за того что BestAsk = null ну это я понял, но что я не так делаю, что стакан ...</title>
    <published>2012-03-13T15:22:41Z</published>
    <updated>2012-03-13T15:22:41Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;tmt &lt;a href="https://stocksharp.ru/posts/m/17200/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Alexander Mukhanchikov &lt;a href="https://stocksharp.ru/posts/m/17199/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Очевидно что ошибка из-за того что BestAsk = null&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;ну это я понял, но что я не так делаю, что стакан получить не могу?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Не запускаете экспорт стакана.&lt;br /&gt;Читайте документацию внимательнее.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17200/</id>
    <title type="text">Очевидно что ошибка из-за того что BestAsk = null ну это я понял, но что я не так делаю, что стакан ...</title>
    <published>2012-03-13T15:14:00Z</published>
    <updated>2012-03-13T15:14:00Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.ru/users/6032/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Alexander Mukhanchikov &lt;a href="https://stocksharp.ru/posts/m/17199/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Очевидно что ошибка из-за того что BestAsk = null&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;ну это я понял, но что я не так делаю, что стакан получить не могу?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17199/</id>
    <title type="text">Очевидно что ошибка из-за того что BestAsk = null</title>
    <published>2012-03-13T14:44:02Z</published>
    <updated>2012-03-13T14:44:02Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Очевидно что ошибка из-за того что BestAsk = null</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17198/</id>
    <title type="text">Вторая картинка у меня не открывалась.</title>
    <published>2012-03-13T14:42:10Z</published>
    <updated>2012-03-13T14:42:10Z</updated>
    <author>
      <name>vader</name>
      <uri>https://stocksharp.ru/users/28223/</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/17197/</id>
    <title type="text">Сделал вот так namespace SampleHistoryTesting { using System; using StockSharp.Algo; using StockShar...</title>
    <published>2012-03-13T14:34:37Z</published>
    <updated>2012-03-13T14:34:37Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.ru/users/6032/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Сделал вот так&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;
namespace SampleHistoryTesting
{
	using System;

	using StockSharp.Algo;
	using StockSharp.Algo.Candles;
	using StockSharp.Algo.Indicators;
	using StockSharp.Algo.Indicators.Trend;
	using StockSharp.Algo.Strategies;
	using StockSharp.BusinessEntities;

    using MessageBox = System.Windows.MessageBox;

	class NewStrategy : Strategy
	{
		protected override void OnStarting()
		{
			sell();

			base.OnStarting();
		}

        public void sell()
		{
            MessageBox.Show(&amp;quot;цена &amp;quot; + Security.BestAsk.Price);
            
                // MessageBox.Show(Security.BestAsk.Price);
            /*var order = new Order
            {
                Portfolio = Portfolio,
                Price = Security.BestAsk.Price,
                Security = Security,
                Volume = 1,
                Direction = OrderDirections.Sell
            };
            RegisterOrder(order);*/
		}
	}
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Получаю вот это (скрин внизу)&lt;br /&gt;&lt;br /&gt;Как раз на MessageBox.Show(&amp;quot;цена &amp;quot; + Security.BestAsk.Price);</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17189/</id>
    <title type="text">Выведете, чему равна цена ,по которой ставите заявку. из второй картинки видно же, что значение null</title>
    <published>2012-03-13T11:39:22Z</published>
    <updated>2012-03-13T11:39:22Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.ru/users/6032/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;vader &lt;a href="https://stocksharp.ru/posts/m/17183/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Выведете, чему равна цена ,по которой ставите заявку.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;из второй картинки видно же, что значение null</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/17183/</id>
    <title type="text">Выведете, чему равна цена ,по которой ставите заявку.</title>
    <published>2012-03-13T08:18:53Z</published>
    <updated>2012-03-13T08:18:53Z</updated>
    <author>
      <name>vader</name>
      <uri>https://stocksharp.ru/users/28223/</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/17096/</id>
    <title type="text">Решил начать с малого, сначало просто добиться открытия позиции в 1 сторону в OnStarting() и получил...</title>
    <published>2012-03-11T17:04:23Z</published>
    <updated>2012-03-11T17:05:59Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.ru/users/6032/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Решил начать с малого, сначало просто добиться открытия позиции в 1 сторону в OnStarting()&lt;br /&gt;и получился у меня вот такой код&lt;br /&gt;&lt;br /&gt;MainWindow&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;
namespace SampleHistoryTesting
{
	using System;
	using System.Collections.Generic;
	using System.Diagnostics;
	using System.IO;
	using System.Windows;
	using System.Windows.Forms;
	using System.Windows.Media;
	using MessageBox = System.Windows.MessageBox;

	using Ecng.Common;
	using Ecng.Serialization;
	using Ecng.Xaml;
	using Ecng.Collections;

	using StockSharp.Algo.Candles;
	using StockSharp.Algo.Reporting;
	using StockSharp.Algo.Storages;
	using StockSharp.Algo.Strategies;
	using StockSharp.Algo.Testing;
	using StockSharp.Algo.Logging;
	using StockSharp.Algo.Equity;
	using StockSharp.Algo.Indicators.Trend;
	using StockSharp.BusinessEntities;
	
	public partial class MainWindow
	{
		private Strategy _strategy;

		private ICollection&amp;lt;EquityData&amp;gt; _curveItems;
		private EmulationTrader _trader;

		private readonly LogManager _logManager = new LogManager();

		private DateTime _lastUpdateDate;
		private DateTime _startEmulationTime;

		public MainWindow()
		{
			InitializeComponent();

			_logManager.Listeners.Add(new FileLogListener(&amp;quot;log.txt&amp;quot;));
		}

		private void FindPath_Click(object sender, RoutedEventArgs e)
		{
			var dlg = new FolderBrowserDialog();

			if (!HistoryPath.Text.IsEmpty())
				dlg.SelectedPath = HistoryPath.Text;

			if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
			{
				HistoryPath.Text = dlg.SelectedPath;
			}
		}

		private void StartBtn_Click(object sender, RoutedEventArgs e)
		{
			// если процесс был запущен, то его останавливаем
			if (_trader != null &amp;amp;&amp;amp; _trader.State != EmulationStates.Stopped)
			{
				StartBtn.IsEnabled = false;

				_strategy.Stop();
				_trader.Stop();
				_logManager.Sources.Clear();

				return;
			}

			if (HistoryPath.Text.IsEmpty() || !Directory.Exists(HistoryPath.Text))
			{
				MessageBox.Show(this, &amp;quot;Неправильный путь.&amp;quot;);
				return;
			}

			// создаем тестовый инструмент, на котором будет производится тестирование
			var security = new Security
			{
				Id = &amp;quot;RIH2@RTS&amp;quot;, // по идентификатору инструмента будет искаться папка с историческими маркет данными
                Code = &amp;quot;RIH2&amp;quot;,
				Name = &amp;quot;RTS-3.12&amp;quot;,
				MinStepSize = 5,
				MinStepPrice = 3,
				Exchange = Exchange.Test,
			};

			// тестовый портфель
			var portfolio = new Portfolio { Name = &amp;quot;test account&amp;quot;, BeginAmount = 1000000m };

			// хранилище, через которое будет производиться доступ к тиковой и котировочной базе
			var storage = new TradingStorage(new InMemoryStorage())
			{
				BasePath = HistoryPath.Text
			};

			// в реальности период может быть другим, и это зависит от объема данных,
			// хранящихся по пути HistoryPath, 
            var startTime = new DateTime(2012, 2, 26);
            var stopTime = new DateTime(2012, 2, 27);
	
			_trader = new EmulationTrader(
				new[] { security },
				new[] { portfolio })
			{
				Storage = storage,
				WorkingTime = Exchange.Rts.WorkingTime,

				// параметр влияет на занимаемую память.
				// в случае достаточно количества памяти на компьютере рекомендуется его увеличить
				DaysInMemory = 6,
			};
			
			_trader.DepthGenerators[security] = new TrendMarketDepthGenerator(security)
			{
				// стакан для инструмента в истории обновляется раз в секунду
				Interval = TimeSpan.FromSeconds(1),
			};
            
			var candleManager = new CandleManager();
			var builder = new CandleBuilder(new TradeCandleBuilderSource(_trader) { IsSyncProcess = true });
			candleManager.Sources.Add(builder);

			// в целях оптимизации расходования памяти храним не более 100 последних свечек и 100000 последних сделок
			((CandleContainer)candleManager.Container).MaxCandleCount = 100;
			((CandleBuilderContainer)builder.Container).MaxCandleCount = 100;
			((CandleBuilderContainer)builder.Container).MaxValueCount = 100000;

			// создаем торговую стратегию, скользящие средние на 80 5-минуток и 10 5-минуток
			_strategy = new NewStrategy()
			{
				Volume = 1,
				Portfolio = portfolio,
				Security = security,
				Trader = _trader
			};

			// копируем параметры на визуальную панель
			ParametersPanel.Parameters.Clear();
			ParametersPanel.Parameters.AddRange(_strategy.EquityManager.Parameters);

			if (_curveItems == null)
				_curveItems = Curve.CreateCurve(_strategy.Name, Colors.DarkGreen);
			else
				_curveItems.Clear();

			_strategy.EquityManager.NewEquityData += data =&amp;gt; this.GuiAsync(() =&amp;gt; _curveItems.Add(data));

			_logManager.Sources.Add(_strategy);

			// и подписываемся на событие изменения времени, чтобы обновить ProgressBar
			_trader.MarketTimeChanged += () =&amp;gt;
			{
				// в целях оптимизации обновляем ProgressBar только при начале нового дня
				if (_trader.MarketTime.Date != _lastUpdateDate || _trader.MarketTime &amp;gt;= stopTime)
				{
					_lastUpdateDate = _trader.MarketTime.Date;
					this.GuiAsync(() =&amp;gt; TestingProcess.Value = (_trader.MarketTime - startTime).Ticks);
				}
			};

			_trader.StateChanged += () =&amp;gt;
			{
				if (_trader.State == EmulationStates.Stopped)
				{
					this.GuiAsync(() =&amp;gt;
					{
						StartBtn.IsEnabled = true;

						if (TestingProcess.Value == TestingProcess.Maximum)
							MessageBox.Show(&amp;quot;Закончено за &amp;quot; + (DateTime.Now - _startEmulationTime));
						else
							MessageBox.Show(&amp;quot;Отменено&amp;quot;);
					});
				}
				else if (_trader.State == EmulationStates.Started)
				{
					// запускаем стратегию когда эмулятор запустился
					_strategy.Start();
				}
			};

			// устанавливаем в визуальный элемент ProgressBar максимальное количество итераций)
			TestingProcess.Maximum = (stopTime - startTime).Ticks;
			TestingProcess.Value = 0;
			Report.IsEnabled = true;

			_startEmulationTime = DateTime.Now;

			// соединяемся с трейдером и запускаем экспорт,
			// чтобы инициализировать переданными инструментами и портфелями необходимые свойства EmulationTrader
			_trader.Connect();
			_trader.StartExport();

			// запускаем эмуляцию, задавая период тестирования (startTime, stopTime).
			_trader.Start(startTime, stopTime);
		}

		private void Report_Click(object sender, RoutedEventArgs e)
		{
			// сгерерировать отчет по прошедшему тестированию
			// Внимание! сделок и заявок может быть большое количество,
			// поэтому Excel отчет может тормозить
			new ExcelStrategyReport(_strategy, &amp;quot;sma.xls&amp;quot;).Generate();

			// открыть отчет
			Process.Start(&amp;quot;sma.xls&amp;quot;);
		}
	}
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&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;
namespace SampleHistoryTesting
{
	using System;

	using StockSharp.Algo;
	using StockSharp.Algo.Candles;
	using StockSharp.Algo.Indicators;
	using StockSharp.Algo.Indicators.Trend;
	using StockSharp.Algo.Strategies;
	using StockSharp.BusinessEntities;

	class NewStrategy : Strategy
	{
		protected override void OnStarting()
		{
			sell();

			base.OnStarting();
		}

        public void sell()
		{
            var order = this.CreateOrder(OrderDirections.Sell, Security.GetMarketPrice(OrderDirections.Sell), Volume);
            RegisterOrder(order);
		}
	}
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Ну и в общем цена не может быть равна 0 у order.. Как я понял у меня вообще ни 1 цены нету.. Скрины ниже&lt;br /&gt;&lt;br /&gt;И кстати, это уже 4,0,21 версия (все что выше я пробовал на 20)</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>