﻿<?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">Форум. StockSharp</title>
  <id>https://stocksharp.ru/handlers/atom.ashx?category=forum&amp;page=143</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-19T15:33:13Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=forum&amp;page=143" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/topic/3306/</id>
    <title type="text">Колонка &amp;quot;статус&amp;quot; у инструмента.</title>
    <published>2013-01-15T11:26:30Z</published>
    <updated>2013-01-15T11:26:30Z</updated>
    <author>
      <name>destr</name>
      <uri>https://stocksharp.ru/users/6306/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;В QUIK подключена трансляция иностранных котировок, и после обновления S# на 4.1.6 c 4.0.22 перестали приходить свечи по S&amp;amp;P500. Сделки в таблице &lt;strong&gt;Все сделки&lt;/strong&gt; идут. А вот в колонке &lt;strong&gt;Статус&lt;/strong&gt; в таблице &lt;strong&gt;инструменты&lt;/strong&gt; для S&amp;amp;P500 пусто, и есть подозрение, что из-за этого не приходят свечи.&lt;/p&gt;
&lt;p&gt;Если поставить российский инструмент, то всё ок.&lt;/p&gt;
&lt;p&gt;Поэтому возник вопрос, влияет ли на формирование свеч поле &lt;strong&gt;Статус&lt;/strong&gt; и если влияет, то как это решается?&lt;/p&gt;
&lt;p&gt;В версии S# 4.0.22 всё работало.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3305/</id>
    <title type="text">В очередной раз про нулевой transactionId</title>
    <published>2013-01-15T10:44:54Z</published>
    <updated>2013-01-15T10:44:54Z</updated>
    <author>
      <name>rtDen</name>
      <uri>https://stocksharp.ru/users/733/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Приветствую всех!
В очередной раз подниму проблему с нулевым transactionId.
В торгующем роботе появились баги, которых раньше не наблюдалось.
Стал разбираться, добавил отладочной информации в логи, выяснил, что баг пояляется из-за того, что в trader.NewMyTrades в
trade.Order не заполнен ExtensionInfo (появляется далеко не во всех сделках).
Заявки подавались только через S# (не руками). Перед вызовом trader.RegisterOrder() заполняется order.ExtensionInfo с нужной информацией.
Лог из события trader.NewMyTrades:
12:31:58:978M NewMyTrade по ордеру id: 9733300629 transId: 0
и соответственно trade.Order.ExtensionInfo - оказывается незаполнен и из-за этого сделка неправильно обрабатывается.&lt;/p&gt;
&lt;p&gt;При этом TransactionId в квиковской таблице заполнен (см. скриншот). Воспроизвести баг на демо счете БКС не удалось, на реальном счете сегодня воспроизвелся несколько раз.&lt;/p&gt;
&lt;p&gt;Предивижу ответ с советом перейти на 4.1, но очень не хочется менять библиотеку в работающем роботе, без уверенности, что баг пропадет.
Хотелось бы узнать, это баг квика либо S#?&lt;/p&gt;
&lt;p&gt;S#: 4.0.23
isAsyncMode = false;
isSupportManualOrders = true;
Брокер: БКС, счет склеенный.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3304/</id>
    <title type="text">matlab в папке sample</title>
    <published>2013-01-15T09:38:07Z</published>
    <updated>2013-01-15T09:38:07Z</updated>
    <author>
      <name>spook</name>
      <uri>https://stocksharp.ru/users/16732/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="wealth-lab" />
    <content type="html">&lt;p&gt;В хелпе написано &amp;quot;В качестве демонстрации в дистрибутиве находится скрипт в папке Samples\MatLab ...&amp;quot;, но в скачанном дистрибутиве такого нет, в старых версиях тоже не нашел.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3303/</id>
    <title type="text">Как узнать что экспорт работает и все данные получены?</title>
    <published>2013-01-15T06:33:27Z</published>
    <updated>2013-01-15T06:33:27Z</updated>
    <author>
      <name>MenDel</name>
      <uri>https://stocksharp.ru/users/6356/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Как узнать что экспорт работает и все данные получены и можно запускать стратегию.
IsExportStarted не помогает.
Я нашел выход для себя, как только я получаю новые позиции, значит можно запускать стратегию,
но когда позиций нет.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3302/</id>
    <title type="text">Запаздывание получения биржевых данных в коде одного из примеров</title>
    <published>2013-01-14T20:20:26Z</published>
    <updated>2013-01-14T20:20:26Z</updated>
    <author>
      <name>developer_29</name>
      <uri>https://stocksharp.ru/users/16728/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Здравствуйте.
Недавно начал ознакамливаться с документацией S# (для Quik), в основном осталось положительное впечатление.
Но в примере SampleSMA из документации я дописал к стратегии код, который перед каждой проверкой на пересечение
(строчка if (_isShortLessThenLong != isShortLessThenLong)) должен записывать в файл значения Bid и Ask. Свечи используются 5-минутные, но запись ведётся с запозданием примерно в полторы минуты. Соединение нормальное, время на компьютере и время на бирже совпадают, в Quik данные приходят вовремя, запаздывание одинаковое от свечки к свечке. С чем это связано и как это исправить?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3301/</id>
    <title type="text">Импорт таблицы перестал работать</title>
    <published>2013-01-14T18:26:58Z</published>
    <updated>2013-01-14T18:26:58Z</updated>
    <author>
      <name>Творог</name>
      <uri>https://stocksharp.ru/users/6511/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Код состоит из следующих элементов:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
private QuikTrader _trader;
private readonly MyTradesWindow _myTradesWindow = new MyTradesWindow();
_trader.NewMyTrades += trades =&amp;gt; this.GuiAsync(() =&amp;gt; _myTradesWindow.Trades.AddRange(trades));

string tstr = &amp;quot;А вот и мои сделочки: \n&amp;quot;;
foreach (var myTrade in _myTradesWindow.Trades)
{
    var trade = myTrade.Trade;
    tstr = tstr + string.Format(&amp;quot;Сделка {0} по цене {1} по бумаге {2} по объему {3} в {4}.\n&amp;quot;, trade.Id, trade.Price, trade.Security.Code, trade.Volume, trade.Time);
}
tradestb.Text = tstr;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;В итоге в TextBox выводится только инициализированная строка tstr, без сделок. Весь день ушёл на поиск причины, хотя ещё в пятницу табличка выводилась. Код не менял. В то же время стакан, например, выводится как надо. В чём может быть проблема?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3300/</id>
    <title type="text">Не срабатывает правило WhenRegisterFailed</title>
    <published>2013-01-14T17:47:37Z</published>
    <updated>2013-01-14T17:47:37Z</updated>
    <author>
      <name>NewMan</name>
      <uri>https://stocksharp.ru/users/6449/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Plaza 2" />
    <content type="html">&lt;p&gt;S# 4.1.7(21699)&lt;/p&gt;
&lt;p&gt;Формируется MoveOrder и отсылается на биржу, однако oldOrder успевает исполниться.
Приходит об этом сообщение, срабатывает правило WhenMatched.
Приходят сообщения о том, что newOrder не был принят, а oldOrder не был отменен.
Правило WhenRegisterFailed для newOrder не срабатывает, а надо бы :(&lt;/p&gt;
&lt;p&gt;11:01:11.835|       |Strategy1 |Перерегистрация заявки 39364813 с ценой 158450 на цену 158440.
11:01:11.835|       |Strategy1 |Перерегистрация проскальзывания заявки 39364813 (0xA41CCE) на заявку (0x834A80).
11:01:11.835|       |Strategy1 |   &amp;lt;ReRegisterOrder&amp;gt; oldORDER: 39364813/3159890173 Покупка Цена=158450 Объем=1 Сост=Active Бал=1; newORDER: TrId=39364815, Price=158440
11:01:11.846|       |Strategy1 |Новая Buy сделка 8268175 по цене 158450 на 1 заявки 39364813.
11:01:11.846|       |Strategy1 |Новая позиция: FZ000ff-RIH3@RTS=-1.
11:01:11.847|       |Strategy1 |Заявка 39364813 больше не активна.
11:01:11.847|       |Strategy1 |   WhenMatched: 39364813/3159890173 Покупка Цена=158450 Объем=1 Сост=Done Бал=0
11:01:11.850|       |Strategy1 |Регистрация новой Limit (0x115B647) заявки на Buy с ценой 158440 и объемом 1.
11:01:11.850|       |Strategy1 |   &amp;lt;RegisterOrder&amp;gt;: 39364816/0 Покупка Цена=158440 Объем=1 Сост=None Бал=1
11:01:11.952|Error  |Strategy1 |Заявка 39364815 (0x834A80) не была принята по причине StockSharp.Plaza.PlazaException: Произошла ошибка. Код 50, описание 'Не найдена заявка для перестановки.'..
11:01:11.978|Error  |Strategy1 |Заявка 39364813 не была отменена по причине StockSharp.Plaza.PlazaException: Произошла ошибка. Код 50, описание 'Не найдена заявка для перестановки.'..&lt;/p&gt;
&lt;p&gt;var ruleRegisterFailed = order.WhenRegisterFailed();
ruleRegisterFailed
.Do(_orderFail =&amp;gt;
{
this.AddOrderInfoLog(_orderFail.Order, &amp;quot;   WhenRegisterFailed:&amp;quot;);
})
.Once()
.Apply(this);&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3299/</id>
    <title type="text">Quik: newStopOrders не ходят</title>
    <published>2013-01-14T16:46:59Z</published>
    <updated>2013-01-14T16:46:59Z</updated>
    <author>
      <name>Den</name>
      <uri>https://stocksharp.ru/users/6003/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Уважаемые разработчики!&lt;/p&gt;
&lt;p&gt;S# 4.1.7 (trunk), Quik 6.4&lt;/p&gt;
&lt;p&gt;События &lt;strong&gt;newStopOrders&lt;/strong&gt; не ходят.
При этом события &lt;strong&gt;stopOrdersChanged&lt;/strong&gt; исправно прилетают.&lt;/p&gt;
&lt;p&gt;Посмотрите, пожалуйста, в чем дело.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3298/</id>
    <title type="text">Ошибка базы данных</title>
    <published>2013-01-14T13:32:26Z</published>
    <updated>2013-01-14T13:32:26Z</updated>
    <author>
      <name>anothar</name>
      <uri>https://stocksharp.ru/users/6089/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">&lt;p&gt;Скачал последнюю гидру. Снес базу скулайта.
Возникла ошибка:
17:26:24.219|Error  |StockSharp|System.Data.SqlClient.SqlException (0x80131904): При установлении соединения с SQL Server произошла ошибка, связанная с сетью или с определенным экземпляром. Сервер не найден или недоступен. Убедитесь, что имя экземпляра указано правильно и что на SQL Server разрешены удаленные соединения. (provider: SQL Network Interfaces, error: 26 - Ошибка при обнаружении указанного сервера или экземпляра)
в System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
в System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity)
в System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, SqlConnection owningObject)
в System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout)
в System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
в System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
в System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
в System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
в System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
в System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
в System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
в System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
в System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
в System.Data.SqlClient.SqlConnection.Open()
в StockSharp.Hydra.MainWindow.CheckDatabase()
в StockSharp.Hydra.MainWindow.InitializeDataSource()
в StockSharp.Hydra.MainWindow.&amp;lt;MainWindowLoaded&amp;gt;b__5()
в System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)
в System.Threading.Tasks.Task.InnerInvoke()
в System.Threading.Tasks.Task.Execute()&lt;/p&gt;
&lt;p&gt;Причем нигде коннекта к SqlServer у меня нету и никогда не было.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3297/</id>
    <title type="text">Торговые роботы на PLAZA2</title>
    <published>2013-01-14T12:43:31Z</published>
    <updated>2013-01-14T12:43:31Z</updated>
    <author>
      <name>esper</name>
      <uri>https://stocksharp.ru/users/5990/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Статьи" />
    <content type="html">&lt;p&gt;Код проекта из второго вебинара в прикрепленном архиве. Статья будет в ближайшее время по мере готовности.&lt;/p&gt;
&lt;p&gt;Запись вебинара можно посмотреть &lt;a href="http://smart-lab.ru/r.php?u=http%3A%2F%2Fconnect1.webinar.ru%2Fplay%2Fvalez%2F27224-kino%26nbsp%3B" rel="nofollow" target="_blank"&gt;здесь&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3296/</id>
    <title type="text">Не работает ExtensionInfo</title>
    <published>2013-01-14T12:33:22Z</published>
    <updated>2013-01-14T12:33:22Z</updated>
    <author>
      <name>Den</name>
      <uri>https://stocksharp.ru/users/6003/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Уважаемые разработчики!&lt;/p&gt;
&lt;p&gt;Пытаюсь переехать с S# 4.1.1 на 4.1.7 (codeplex trunk)&lt;/p&gt;
&lt;p&gt;Летят эксепшены &lt;strong&gt;&amp;quot;The given key was not present in the dictionary&amp;quot;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Код банальный, при переезде никак не менялся:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;var columns = this.Trader.SecuritiesTable.Columns;
columns.Add(DdeSecurityColumns.Yield);

var ecolumns = this.Trader.EquityPortfoliosTable.Columns;
ecolumns.Add(DdeEquityPortfolioColumns.BlockedCurrency);

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;При данных обращениях к этим данным получаю исключения:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
sec.ExtensionInfo[DdeSecurityColumns.Yield]
portfolio.ExtensionInfo[DdeEquityPortfolioColumns.BlockedCurrency]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Стек-трейсов нет, т.к. это обращение непосредственно в сам словарь...&lt;/p&gt;
&lt;p&gt;Посмотрел содержимое словаря для &lt;strong&gt;sec&lt;/strong&gt;- в нем нет ключа &lt;strong&gt;Yield&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Аналогично для &lt;strong&gt;portfolio&lt;/strong&gt; c &lt;strong&gt;BlockedCurrency&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Есть ли какие-либо новые ограничения по использованию дополнительных полей в таблицах?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3295/</id>
    <title type="text">Почему свечи импортируются только за текущий день</title>
    <published>2013-01-13T18:46:34Z</published>
    <updated>2013-01-13T18:46:34Z</updated>
    <author>
      <name>RoboKrolik</name>
      <uri>https://stocksharp.ru/users/16730/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;При построении торгового робота возник вопрос - почему свечи импортируются только за текущий день?&lt;/p&gt;
&lt;p&gt;Свечи делаю так&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
private TimeSpan _timeFrame = TimeSpan.FromMinutes(60);  // таймфрейм
private Security _security; // инструмент
private Portfolio _portfolio; // портфель
private CandleManager _candleManager; // менеджер свечек
public CandleSeries _series; // поток свечей
private ChartArea _area; // область графика
private ChartCandleElement _candlesElem;  // элемент области графика
readonly DateTime _starttime = new DateTime(2013, 1, 1);
readonly DateTime _endtime = new DateTime(2013, 1, 10);

// Создание области графика и добавление ее в _chart
_area = new ChartArea();
_chart.Areas.Add(_area);

// Создание элемента графика представляющего свечки и добавление его в область графика
_candlesElem = new ChartCandleElement();
_area.Elements.Add(_candlesElem);

_candleManager = new CandleManager(_trader); // создаем менеджер свечек

_candleManager.Processing += DrawCandle; // подписываемся на событие отрисовки свечей

// метод отрисовки свечей
private void DrawCandle(CandleSeries series, Candle candle)
{
if (series == _series)
{
this.GuiAsync(() =&amp;gt;
{
_chart.ProcessCandle(_candlesElem, candle);
});
}
}

_candleManager.Start(_series, _starttime, _endtime);  // запускаем CandleManager

_strategy = new DartWeiderStretegy(_candleManager, _timeFrame, _series) // создаем стратегию

&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3294/</id>
    <title type="text">RawConvertableCandleBuilderSource</title>
    <published>2013-01-13T17:39:24Z</published>
    <updated>2013-01-13T17:39:24Z</updated>
    <author>
      <name>Иван З.</name>
      <uri>https://stocksharp.ru/users/6502/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Подскажите, пожалуйста!
У меня есть готовая коллекция IEnumerable&amp;lt;Candle&amp;gt; Candles, содержащая свечи 10мин. Я хочу их запихнуть в источник.
Как я понимаю это можно сделать через RawConvertableCandleBuilderSource&amp;lt;TSourceValue&amp;gt;. Но как именно это сделать ни где не нашел, ни в документации, ни на форуме. Везде пишут про сделки RawConvertableCandleBuilderSource&amp;lt;Trade&amp;gt;. А что в моем случае писать вместо TSourceValue?&lt;/p&gt;
&lt;p&gt;Пробовал&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;var cbs = new RawConvertableCandleBuilderSource&amp;lt;Candle&amp;gt;(security, startTime, endTime, Candles);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Выдает исключение:
Вызвано: &amp;quot;Объект должен реализовывать интерфейс IConvertible.&amp;quot; (System.InvalidCastException)	Сообщение об исключении = &amp;quot;Объект должен реализовывать интерфейс IConvertible.&amp;quot;, Тип исключения = &amp;quot;System.InvalidCastException&amp;quot;, Данные среды выполнения Windows для исключения = &amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;Может кто сталкивался подскажите!&lt;/p&gt;
&lt;p&gt;P.S. С наступающим Старым Новым годом! [biggrin]&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3293/</id>
    <title type="text">Как устроено тестирование стратегии?</title>
    <published>2013-01-12T22:55:44Z</published>
    <updated>2013-01-12T22:55:44Z</updated>
    <author>
      <name>FlashPlayer</name>
      <uri>https://stocksharp.ru/users/16669/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">&lt;p&gt;Подскажите пожалуйста такой момент:&lt;/p&gt;
&lt;p&gt;Предположим, я хочу протестировать какую-то стратегию на исторических данных. Создаю эмулятор трейдер, подсасываюсь к сохраненной истории. Запускаю эмулятор трейдер. Если просто его запустить - он пробежится от старт тайма до стоп тайма, отреагировав на все подписанные события (сделки, заявки итп итд) ну и остановится. А теперь, я дополнительно создам стратегию (пусть даже пустую), и в настройках стратегии скажу ей - используй этот же эмулятор трейдер. Запускаю стратегию. Что в этот момент технически происходит? В дополнительном потоке заново запускается эмулятор трейдер от времени старта до стопа, но теперь исполняя стратегию? То есть вопрос больше вот в чем - эмулятор запустить все равно нужно, но важно ли когда я запускаю стратегию? Не получится ли так, что я запускаю стратегию почти одновременно с эмулятором, но чуть позже и она не с старт тайма начинает работать, а с того времени, которое было в эмуляторе на момент запуска стратегии?&lt;/p&gt;
&lt;p&gt;И еще один вопрос. При тестировании на исторических данных тестер всегда тестирует на стаканах? То есть если я имею из истории - только трейды - он из них постарается сделать стаканы и на них тестировать? Ведь как тестировать на трейдах - непонятно. А если есть ордерлог и трейды - чтобы тестер тестил на стаканах, построенных на ордерлоге, я должен это дополнительно указать - в противном случае он будет стараться строить стаканы по трейдам, так? То есть интересует - как устроены умолчания. Что по умолчанию берется для тестинга - какой тип сохраненной истории.&lt;/p&gt;
&lt;p&gt;Заранее спасибо за ответ.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3292/</id>
    <title type="text">SampleHistoryTestingParallel - как запустить?</title>
    <published>2013-01-11T18:04:06Z</published>
    <updated>2013-01-11T18:04:06Z</updated>
    <author>
      <name>Геннадий Ванин (Gennady Vanin)</name>
      <uri>https://stocksharp.ru/users/6413/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">&lt;p&gt;На всех версиях, начиная с 4.1.5, StockSharp при попытке открыть SampleHistoryTestingParallel выдаются ошибка в MainWindow.xaml  на линии:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-css"&gt;&amp;lt;my:EquityCurveChart x:Name=&amp;quot;Curve&amp;quot; Grid.Row=&amp;quot;4&amp;quot; Grid.ColumnSpan=&amp;quot;3&amp;quot;  /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)
При этом, на версиях 4.1.5-4.1.6 картинка ваще не показывается на Design surface&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="http://i.imgur.com/F0fx1.jpg" alt="S# 4.1.5 bug" /&gt;&lt;/p&gt;
&lt;p&gt;на последней версии 22122 уже показывается,
с уже более открытой информацией об ошибке:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Could not load file or assembly 'Microsoft.Practices.Unity, Version=2.1.505.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
at &lt;strong&gt;Ecng.Configuration.ConfigManager..cctor()&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="http://i.imgur.com/sBLK9.jpg" alt="StockSharp 22122 error" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://i.imgur.com/Z1mxv.jpg" alt="StockSharp 22122 error" /&gt;&lt;/p&gt;
&lt;p&gt;Самое весёленькое - на скрипте XAML показывается зелёная галочка
&lt;strong&gt;&amp;quot;No errors or warnings&amp;quot;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Как бы мне запустить проект, не потеряв ту самую историческую кривую?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3291/</id>
    <title type="text">При тестировании выдает исключение  ContextSwitchDeadlock was detected</title>
    <published>2013-01-11T09:35:33Z</published>
    <updated>2013-01-11T09:35:33Z</updated>
    <author>
      <name>profts</name>
      <uri>https://stocksharp.ru/users/6174/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">&lt;p&gt;С тестирование на тиках так и не разобрался из-за переполнения индикаторов...  Пришлось тестировать на реале.&lt;/p&gt;
&lt;p&gt;Теперь к проблеме )))
Тестировал свои стратегии на старых версиях S#.  Все было отлично.  Решил полностью перейти на 4.1.6. Набросал простенькую стратегию на 15мин свечках. Шаблон взял полностью из SampleHistoryTesting. Свечки не рисую.
Начинается тест, первые два дня эквити рисуется достаточно быстро, потом начинает обновляться с интервалом секунд в 5 и в итоге форма вообще зависает, через минуту выскакивает это исключение:
&lt;img src="http://gyazo.com/33487bf9f0488b3202765aa81a7b97c0" alt="Ошибка" /&gt;&lt;/p&gt;
&lt;p&gt;Код:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;

 protected override void OnStarted()
        {
            //vcon.Open();
            CommissionRule commissionRule = new CommissionRule { Type = CommissionTypes.PerTradeVolume, Value = new Unit(3m) };
            _commissionManager.Rules.Add(commissionRule);
           
            Sostoyanie = &amp;quot;кэш&amp;quot;;
           
            takeprofit  = decimal.Parse(MainWindow.Instance.takeprofit_form.Text);
            proskalz = decimal.Parse(MainWindow.Instance.proskalz.Text);
            vol_kontr = decimal.Parse(MainWindow.Instance.vol_lotov.Text);
            vcon.Open();
           
            // Создание элемента графика представляющего свечки
            _candlesElem = new ChartCandleElement();
            MainWindow.Instance._area.Elements.Add(_candlesElem);

            //MainWindow.Instance._area_ind.Elements.Add(_longMaElem);
            //MainWindow.Instance._area_ind.Elements.Add(_shortMaElem);

         
            this
                .WhenNewMyTrades()
                .Do(ProcessNewTrades)
                .Apply(this);

            _series
                .WhenCandlesFinished()
                .Do(ProcessCandle)
                .Apply(this);
            
            base.OnStarted();
        }

             
        private void ProcessCandle(Candle candle)
        {

          //  if (candle.State == CandleStates.Finished) MainWindow.Instance.GuiAsync(() =&amp;gt; MainWindow.Instance.Chart.ProcessCandle(_candlesElem, candle));
            Indicator.Process(candle.ClosePrice);
            
            MainWindow.Instance.GuiAsync(() =&amp;gt;
            {
                MainWindow.Instance.trades_time.Text = Security.LastTrade.Time.ToString();
                MainWindow.Instance.pos2_form.Text = Sostoyanie;
                MainWindow.Instance.position_form.Text = Position.ToString();
            });

         
            if (!START)
            {
                if (Indicator.Container.Count &amp;gt; 2)
                {
                    START = true;
                    Security
               .WhenNewTrades()
               .Do(ProcessNewTrade)
               .Apply(this);

                }
            }

        }

        private void Comission_raschet()
        {
            comission = 0;
            foreach (MyTrade trade in MyTrades)
            {
                comission = comission + _commissionManager.ProcessMyTrade(trade);
            }
            //MainWindow.Instance.GuiAsync(() =&amp;gt;
            //{
            //    MainWindow.Instance.comission_form.Text = comission.ToString();
            //});
        }
       
        private void ProcessNewTrade()
        {
            if (Security.LastTrade == null)
            { goto propusk2; }

            if (Security.LastTrade.Time.Hour == 19 &amp;amp;&amp;amp; Security.LastTrade.Time.Minute == 0 &amp;amp;&amp;amp; Security.LastTrade.Time.Second &amp;lt; 10)
            { goto propusk2; }

            switch (Sostoyanie)
            {
                case &amp;quot;кэш&amp;quot;:
                    {
                        if (...)
                        {
                            Sostoyanie = &amp;quot;Long&amp;quot;;
                            Buy_Order(vol_kontr);
                        }
                        else if (...)
                        {
                            Sostoyanie = &amp;quot;Short&amp;quot;;
                            Sell_Order(vol_kontr);
                        }
                    }
                    break;
                case &amp;quot;Long&amp;quot;:
                    {
                        if (...)
                        {
                            Sostoyanie = &amp;quot;кэш&amp;quot;;
                            Sell_Order(vol_kontr);
                        }
                    }
                    break;
                case &amp;quot;Short&amp;quot;:
                    {
                        if (...)
                        {
                            Sostoyanie = &amp;quot;кэш&amp;quot;;
                            Buy_Order(vol_kontr);
                        }
                    }
                    break;
            }

        propusk2:
    
            //MainWindow.Instance.GuiAsync(() =&amp;gt;
            //{

            //    MainWindow.Instance.trades_time.Text = Security.LastTrade.Time.ToString();
            //    //MainWindow.Instance.now_time.Text = DateTime.Now.ToString();
            //    MainWindow.Instance.pos2_form.Text = pos;
            //    MainWindow.Instance.position_form.Text = Position.ToString();
            //    MainWindow.Instance.komiss_form.Text = comission.ToString();
               
            //});

        }

        private void Buy_Order(decimal volume)
        {

            EntryPrice = Security.LastTrade.Price; ;

            this.AddInfoLog(&amp;quot;Сигнал на покупку&amp;quot;);
            nomersdelki++;
            order_open_long = this.CreateOrder(OrderDirections.Buy, Security.LastTrade.Price + proskalz, volume);
            order_open_long.Security = Security;
            this.RegisterOrder(order_open_long);
            order_open_long
                                .WhenMatched()
                                .Do(pos_change_long)
                                .Apply(this);

            this.AddInfoLog(PnLManager.PnL.ToString());
            //string vsql = string.Format(&amp;quot;insert into Rez2 (nomer_sdelki, data_vxoda,vremya_vxoda, cena_vxoda, High, Low,stop_price) Values ({0}, {1}, {2}, {3}, {4}, {5}, {6})&amp;quot;,
            //          (nomersdelki), (Security.LastTrade.Time.ToString(&amp;quot;dd.MM&amp;quot;)), (Security.LastTrade.Time.ToString(&amp;quot;HH.mmss&amp;quot;)), (order_open_long.Price.ToString()), (candle_high),(candle_low),(stop_price));


            //OleDbCommand vcom = new OleDbCommand(vsql, vcon);
            //vcom.ExecuteNonQuery();
        }


        private void Sell_Order(decimal volume)
        {
            EntryPrice = Security.LastTrade.Price;
            this.AddInfoLog(&amp;quot;Сигнал на продажу&amp;quot;);
            nomersdelki++;
            order_open_short = this.CreateOrder(OrderDirections.Sell, Security.LastTrade.Price - proskalz, volume);
            order_open_short.Security = Security;

            this.RegisterOrder(order_open_short);
            order_open_short
                                .WhenMatched()
                                .Do(pos_change_short)
                                .Apply(this);
            //string vsql = string.Format(&amp;quot;insert into Rez2 (nomer_sdelki, data_vxoda,vremya_vxoda, cena_vxoda, High, Low,stop_price) Values ({0}, {1}, {2}, {3}, {4}, {5}, {6})&amp;quot;,
            //          (nomersdelki), (Security.LastTrade.Time.ToString(&amp;quot;dd.MM&amp;quot;)), (Security.LastTrade.Time.ToString(&amp;quot;HH.mmss&amp;quot;)), (order_open_long.Price.ToString()), (candle_high), (candle_low), (stop_price));
            //OleDbCommand vcom = new OleDbCommand(vsql, vcon);
            //vcom.ExecuteNonQuery();
        }



&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3290/</id>
    <title type="text">HistoryTesting-что нужно инициализировать, чтобы не соединяться к терминалу?</title>
    <published>2013-01-11T06:48:13Z</published>
    <updated>2013-01-11T06:48:13Z</updated>
    <author>
      <name>Геннадий Ванин (Gennady Vanin)</name>
      <uri>https://stocksharp.ru/users/6413/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">&lt;p&gt;Только начал разбираться с тестированием на исторических данных&lt;/p&gt;
&lt;p&gt;Пока не нашёл примера - можно ли провести тестирование без соединения к терминалу
И, если можно то, что нужно инициализировать?&lt;/p&gt;
&lt;p&gt;Имеется SampleHistoryTesting, в котором устанавливается соединение с терминалом КВИК и экспортируются все таблицы из КВИК.
Почему нельзя обойтись EmulationTrader - без соединения и экспорта?&lt;/p&gt;
&lt;p&gt;Даже если использовать соединение и экспорт - то, какой минимум таблиц нужен для работы SampleHistoryTesting, чтобы не перегружать компьютер ненужными загрузками?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3289/</id>
    <title type="text">GuiDispatcher.AddPeriodicalAction</title>
    <published>2013-01-10T18:04:14Z</published>
    <updated>2013-01-10T18:04:14Z</updated>
    <author>
      <name>FlashPlayer</name>
      <uri>https://stocksharp.ru/users/16669/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Алготрейдинг" />
    <content type="html">&lt;p&gt;Подскажите пожалуйста - как работает GuiDispatcher.AddPeriodicalAction? Судя из названия метода - действие вызывается периодически - но с какой частотой. Пример использования встречается в SampleGui, где с помощью этого метода обновляется информация в открытых стаканах. Логика там, как я понимаю, следующая - ведется два синхронизированных словаря ключ-значение: один - инструмент/окно стакана, другой - рыночный стакан/окно стакана.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;	private readonly SynchronizedDictionary&amp;lt;Security, QuotesWindow&amp;gt; _quotesWindows = new SynchronizedDictionary&amp;lt;Security, QuotesWindow&amp;gt;();
            private readonly SynchronizedDictionary&amp;lt;MarketDepth, QuotesWindow&amp;gt; _changedDepths = new SynchronizedDictionary&amp;lt;MarketDepth, QuotesWindow&amp;gt;(); 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Далее происходит подписка на обновление стаканов trader.MarketDepthsChanged += TraderOnMarketDepthsChanged, и вот совсем мне непонятно, что делается в TraderOnMarketDepthsChanged:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;            private void TraderOnMarketDepthsChanged(IEnumerable&amp;lt;MarketDepth&amp;gt; depths)
	{
		foreach (var depth in depths)
		{
			var wnd = _quotesWindows.TryGetValue(depth.Security);

			if (wnd != null)
				_changedDepths[depth] = wnd;
		}
	}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Что тут происходит, как я понимаю: рассматриваем каждый обновившийся стакан и ищем соответствующее ему окно стакана в _quotesWindows:
var wnd = _quotesWindows.TryGetValue(depth.Security);&lt;/p&gt;
&lt;p&gt;Далее что происходит в этой строчке: _changedDepths[depth] = wnd; ? Откуда мы знаем, что в словаре _changedDepths есть элемент с ключом depth? И зачем на каждом обновлении стакана depth мы переприсваиваем значение wnd в словаре? Ну и самый главные вопрос - как потом в wnd появляются новые котировки с обновленного depth? Как работает .AddPeriodicalAction?&lt;/p&gt;
&lt;p&gt;Просто я думал логика должна была быть примерно такая - достаточно держать лишь один словарь - _quotesWindows и при получении обновленного MarketDepth - найти соответствующий ему элемент в _quotesWindows и обновить _quotesWindows.Value. Разве не так?&lt;/p&gt;
&lt;p&gt;Я еще только начинаю разбираться в программировании такого уровня, так что сильно не бейте и спасибо за помощь.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3288/</id>
    <title type="text">Не могу понять почему не видно свечей</title>
    <published>2013-01-08T15:49:09Z</published>
    <updated>2013-01-08T15:49:09Z</updated>
    <author>
      <name>RoboKrolik</name>
      <uri>https://stocksharp.ru/users/16730/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Пишу каркас для торговой стратегии.&lt;/p&gt;
&lt;p&gt;Вот так создаю свечи:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
public partial class MainWindow : Window
    {

        // Объявление переменных
       
        private CandleManager _candleManager; // менеджер свечек

private void Connect_Click(object sender, RoutedEventArgs e)   // жму на кнопку подключения
        {

                _candleManager = new CandleManager(_trader); // создаем менеджер свечек для Трейдера

                _candleManager.Processing += DrawCandle; // подписываемся на событие

private void StartRobo_Click(object sender, RoutedEventArgs e)  // жму на кнопку запуска страты
        {

               CandleSeries series;

                series = new CandleSeries(typeof(TimeFrameCandle), _security, _timeFrame);

                _candleManager.Start(series);
                
                Label3.Content = Convert.ToString(series.GetCandle&amp;lt;TimeFrameCandle&amp;gt;(1).ClosePrice);

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;При запуске стратегии выскакивает вот такая ошибка&lt;/p&gt;
&lt;p&gt;**An unhandled exception of type 'System.NullReferenceException' occurred in WpfApplication1.exe&lt;/p&gt;
&lt;p&gt;Additional information: Ссылка на объект не указывает на экземпляр объекта.**&lt;/p&gt;
&lt;p&gt;Не знаю что и делать. Я так понял что свечи не экспортируются.&lt;/p&gt;
&lt;p&gt;Какой экземпляр я не создал?&lt;/p&gt;
&lt;p&gt;Что делать?&lt;/p&gt;
&lt;p&gt;Код основного окна&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Configuration;&lt;/summary&gt;
&lt;p&gt;// using S#
using Ecng.Common;
using Ecng.ComponentModel;
using Ecng.Xaml;
using Ecng.Serialization;
using Ecng.Collections;
using StockSharp.Algo;
using StockSharp.Algo.Indicators;
using StockSharp.Algo.Indicators.Trend;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Strategies;
using StockSharp.BusinessEntities;
using StockSharp.Quik;
using StockSharp.Logging;
using StockSharp.Xaml;&lt;/p&gt;
&lt;p&gt;namespace WpfApplication1
{&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;public partial class MainWindow : Window
{

    // Объявление переменных

    private QuikTrader _trader;   // квик трейдер

    private TimeSpan _timeFrame = TimeSpan.FromMinutes(1);  // таймфрейм
    private TimeSpan _timeRefreshStrategy = TimeSpan.FromSeconds(1);  // частота обновления стратегии
    
    int _sharecount; // количество торгуемых контрактов
    private DartWeiderStretegy _strategy; // обявляем стратегию
    
    private Security _security; // инструмент
    private Portfolio _portfolio; // портфель

    private CandleManager _candleManager; // менеджер свечек
                          

    public MainWindow()
    {
        InitializeComponent();
      

    }

    // Кнопка &amp;quot;Подключение&amp;quot; - Метод подключения к квику
    private void Connect_Click(object sender, RoutedEventArgs e)
    {
        if (_trader == null)
        {
            _trader = new QuikTrader(QuikTerminal.GetDefaultPath());

            //Подписываемся на событие появления новых портфелей
            _trader.NewPortfolios += portfolios =&amp;gt; this.GuiAsync(() =&amp;gt; {Portfolios.ItemsSource = _trader.Portfolios;});

            //Подписываемся на событие появления новых инстументов
            _trader.NewSecurities += securities =&amp;gt; this.GuiAsync(() =&amp;gt; {Securities.ItemsSource = _trader.Securities;});
           
        }

        try
        {
            // подключаем квик
            _trader.Connect();
        }
        catch (System.IO.IOException err)
        {
            MessageBox.Show(&amp;quot;Не удается подключиться к квику&amp;quot; + err.Message);
        }

        //Начинаем Экспорт данных

            _trader.StartExport(); //получение он-лайн данных из квика Инструменты,Заявки , Портфели и так далее

            _candleManager = new CandleManager(_trader); // создаем менеджер свечек для Трейдера

            _candleManager.Processing += DrawCandle; // подписываемся на событие


    }


    private void DrawCandle(CandleSeries series, Candle candle)
    {
        this.GuiAsync(() =&amp;gt;
        {

          //  _chart.ProcessCandle((ChartCandleElement)_chart.Areas[0].Elements[0], candle);

        });
    }

    // Кнопка &amp;quot;Остановка&amp;quot; - Метод остановки робота
    private void StopRobot_Click(object sender, RoutedEventArgs e)
    {
        if (_trader != null)
        {
            //отключаем экспорт со стакана и останавливаем стратегию
            _trader.UnRegisterMarketDepth(_security);
            if (_strategy.ProcessState == ProcessStates.Started) _strategy.Stop();
            if (_trader.Orders != null) _trader.CancelOrders();
            _trader.StopExport();              
        }
    }

    // Метод на случай закрытия окна робота
    private void ProgramWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        if (_trader != null)
        {
            //отключаем экспорт со стакана и останавливаем стратегию
            _trader.UnRegisterMarketDepth(_security);
            if (_strategy.ProcessState == ProcessStates.Started) _strategy.Stop();
            if (_trader.Orders != null) _trader.CancelOrders();
            _trader.StopExport();
        }
    }

    // Кнопка &amp;quot;Запуск робота&amp;quot; - метод запуск робота
    private void StartRobo_Click(object sender, RoutedEventArgs e)
    {
        // проверяем подключен ли квик трейдер, задан ли портфель, инструмент
        if (_trader == null)
        {
            MessageBox.Show(&amp;quot;Терминал не задан&amp;quot;);
            return;
        }

        if (_trader.Portfolios == null)
        {
            MessageBox.Show(&amp;quot;Портфель не задан&amp;quot;);
            return;
        }

        if (_trader.Securities == null)
        {
            MessageBox.Show(&amp;quot;Инструмент не задан&amp;quot;);
            return;
        }

        // код запуска стратегии

        if (_strategy == null)
        {

            CandleSeries series;

            series = new CandleSeries(typeof(TimeFrameCandle), _security, _timeFrame);

            _candleManager.Start(series);


            Label3.Content = Convert.ToString(series.GetCandle&amp;lt;TimeFrameCandle&amp;gt;(1).ClosePrice);
            
            this.GuiAsync(() =&amp;gt;
            {



            _strategy = new DartWeiderStretegy(_candleManager, _timeFrame)
            {
                Volume = _sharecount,
                Security = _security,
                Portfolio = _portfolio,
                Trader = _trader,
                Interval = _timeRefreshStrategy
            };



                
            });

       

        }


        if (_strategy.ProcessState == ProcessStates.Stopped)
        {
            // запускаем процесс получения стакана, необходимый для работы алгоритма котирования
            //_trader.RegisterQuotes(_strategy.Security);
            _trader.RegisterMarketDepth(_security);
            _strategy.Start();
        }

    }


    private void Securities_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        string sec = Convert.ToString(Securities.SelectedItem);
        sec = sec.Replace(&amp;quot;@RTS&amp;quot;, string.Empty);
        _security = _trader.Securities.First(s =&amp;gt; s.Code == sec &amp;amp;&amp;amp; s.Type == SecurityTypes.Future);
    }

    private void Portfolios_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        _portfolio = _trader.Portfolios.FirstOrDefault(p =&amp;gt; p.Name == Convert.ToString(Portfolios.SelectedItem));
    }

    private void PositionSize_TextChanged(object sender, TextChangedEventArgs e)
    {
        try
        {
            _sharecount = Convert.ToInt32(PositionSize.Text);
        }
        catch
        {
        MessageBox.Show(&amp;quot;Неправильный размер позиции&amp;quot;);
        }
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        


    }

}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;Код стратегии&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;&lt;/summary&gt;
&lt;p&gt;using StockSharp.Algo;
using StockSharp.Algo.Strategies;
using StockSharp.Algo.Candles;
using Ecng.Xaml;
using StockSharp.Quik;
using StockSharp.BusinessEntities;&lt;/p&gt;
&lt;p&gt;namespace WpfApplication1
{
class DartWeiderStretegy : TimeFrameStrategy
{&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    decimal openPrice; // цена открытия свечи
    decimal lastPrice; // цена предПРЕДпоследней свечи

    private Order _order;   // текущая заявка

    private TimeSpan _timeFrame;  // таймфрейм

    private CandleManager _candleManager;

    // конструктор для работы стратегии
    public DartWeiderStretegy(CandleManager candleManager, TimeSpan timeFrame) : base(timeFrame)
    {
        _candleManager = candleManager;

        _timeFrame = TimeFrame;
    }

    /// &amp;lt;summary&amp;gt;
    /// Запуск стратегии
    /// &amp;lt;/summary&amp;gt;
    protected void OnStarting()
    {
        base.OnStarted();
    }

    // Выполнение стратегии
    protected override ProcessResults OnProcess()
    {

      

        /*

        //Определяем количество открытых позиций по инструменту
        int openPos = Convert.ToInt32(this.MyTrades.GetPosition());
        
        //Получаем цену открытия этой свечи
        openPrice = _lastCandle1.ClosePrice;

        //Получаем цену открытия предПРЕДпоследней свечи
        lastPrice = _lastCandle2.ClosePrice;

        //Если есть 2 свечи и нет открытых позиций
        if (_lastCandle1!=null &amp;amp;&amp;amp; _lastCandle2!=null &amp;amp;&amp;amp; openPos == 0)
        {
            // Если свеча выше предыдущей открываем лонг
            if (openPrice &amp;gt; lastPrice)
            {
                // создаем заявку на покупку
                _order = this.CreateOrder(OrderDirections.Buy, base.Security.GetMarketPrice(OrderDirections.Buy), base.Volume);
                
                // регистрируем ее
                base.RegisterOrder(_order);

                if (_order.IsMatched() == true)
                {

                    //Выставляем стоп-лосс и тейкпрофит через метод
                    _order = this.CreateStopLimitAndTakeProfit(openPrice);

                    // регистрируем его
                    base.RegisterOrder(_order);
                }
            }
        }
         * 
         * */


        return ProcessResults.Continue;
    }


    private Order CreateStopLimitAndTakeProfit(decimal openPrice2)
    {
        decimal stopPrice = Convert.ToDecimal(openPrice2) - 20;
        decimal tpPrice = Convert.ToDecimal(openPrice2) + 20;

        return new Order
        {
            Type = OrderTypes.Conditional,
            Volume = base.Volume,
            Price = Convert.ToDecimal(stopPrice),
            Security = base.Security,
            Portfolio = base.Portfolio,
            Direction = OrderDirections.Sell,
            StopCondition = new QuikStopCondition
            {
                Type = QuikStopConditionTypes.LinkedOrder,
                LinkedOrderPrice = tpPrice,
            },
        };
    }


     
     
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;/details&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3287/</id>
    <title type="text">TRANStoQUIK.dll и WIN 7 64 бита</title>
    <published>2013-01-08T11:17:11Z</published>
    <updated>2013-01-08T11:17:11Z</updated>
    <author>
      <name>qpile</name>
      <uri>https://stocksharp.ru/users/6397/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Здравствуйте!
Торговый робот без проблем работает на 32 битах, а на 64 то не находит библиотеку, то отказано в доступе. В чем может быть проблема?&lt;/p&gt;
</content>
  </entry>
</feed>