﻿<?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=community&amp;page=251</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-17T06:22:12Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=community&amp;page=251" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/topic/1682/</id>
    <title type="text">Не работает StopLossStrategy - CurrentBestPrice = 0</title>
    <published>2011-06-22T13:30:12Z</published>
    <updated>2011-06-22T13:30:12Z</updated>
    <author>
      <name>InsiderHSE</name>
      <uri>https://stocksharp.ru/users/6099/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Никак не могу разобраться со стоп-лосс стратегией. Цена инструмента в стакане опускается ниже поога, а стратегия не срабаывает. Посмотрел дебаггером - метод GetNewPrice() все время возвращает 0,  CurrentBestPrice также всегда 0, хотя массив из 20 лучших оферов присутствует. У кого-нибудь стратегия работает? Прошу подсказать, в какую сторону копать, замучался уже(</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1681/</id>
    <title type="text">Изменения в версии 3.2.1</title>
    <published>2011-06-21T22:16:31Z</published>
    <updated>2011-06-21T22:16:31Z</updated>
    <author>
      <name>l-way</name>
      <uri>https://stocksharp.ru/users/16565/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Добрый день&lt;br /&gt;&lt;br /&gt;Подскажите, пожалуйста, есть ли где то описание всех изменений и когда будет обновление хелпа?&lt;br /&gt;&lt;br /&gt;Например, интересует - куда пропал strategymanager и как работать без него?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1680/</id>
    <title type="text">Фундаментальный вопрос по использованию</title>
    <published>2011-06-21T16:31:39Z</published>
    <updated>2011-06-21T16:31:39Z</updated>
    <author>
      <name>Den</name>
      <uri>https://stocksharp.ru/users/6003/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Михаил,&lt;br /&gt;&lt;br /&gt;почитав темы про стратегии, и в частности &lt;b&gt;ActionStrategy&lt;/b&gt;, я понял, что новичкам сложно понять use cases.&lt;br /&gt;&lt;br /&gt;Если использовать &lt;b&gt;TimeFrameStrategy&lt;/b&gt;, то &lt;b&gt;OnProcess()&lt;/b&gt; вызывается с частотой согласно значению &lt;b&gt;Interval&lt;/b&gt;.&lt;br /&gt;Если использовать &lt;b&gt;ActionStrategy&lt;/b&gt;, то условие &lt;b&gt;When()&lt;/b&gt;  проверяется  с частотой согласно значению &lt;b&gt;Interval&lt;/b&gt;.&lt;br /&gt;Т.о. в обоих случаях мы зависим от значения &lt;b&gt;Interval&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Допустим, я хочу совершать заявки по событию &lt;b&gt;ITrader.NewTrades&lt;/b&gt;. Но это событие никак не коррелирует с фиксированным &lt;b&gt;Interval&lt;/b&gt;&amp;#39;ом,&lt;br /&gt;и может возникать как каждую миллисекунду (напр. RI), так и раз в 5 мин. (второй эшелон)&lt;br /&gt;И получается, что мне не подходит ни &lt;b&gt;OnProcess()&lt;/b&gt;, ни &lt;b&gt;When()&lt;/b&gt;, и свои активности мне надо писать прямо в обработчике &lt;b&gt;ITrader.NewTrades&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Можно конечно &lt;b&gt;Interval &lt;/b&gt;выставить в одну миллисекунду, но это как-то не красиво...&lt;br /&gt;&lt;br /&gt;Правильно ли я все понимаю или где-то есть ошибки в моих рассуждениях?&lt;br /&gt;Или можно все-таки обернуть в &lt;b&gt;When()&lt;/b&gt; событие &lt;b&gt;ITrader.NewTrades&lt;/b&gt;, так чтобы время проверки не зависело от &lt;b&gt;Interval&lt;/b&gt;?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;P.S. еще раз спасибо за отличную библиотеку и великолепную поддержку!</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1679/</id>
    <title type="text">round trip подачи заявки через stock# + plaza2</title>
    <published>2011-06-20T11:43:53Z</published>
    <updated>2011-06-20T11:43:53Z</updated>
    <author>
      <name>vslaykovsky</name>
      <uri>https://stocksharp.ru/users/28159/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Plaza 2" />
    <content type="html">Здравствуйте. &lt;br /&gt;&lt;br /&gt;Подскажите, пожалуйста, какой средний round-trip подачи заявки стоит ожидать сейчас при использовании plaza2+stock# в течение дня на forts при торговле фьючерсом на индекс rts? &lt;br /&gt;Quik, подключенный через брокера, показывает ~500ms, что совершенно не устраивает</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1678/</id>
    <title type="text">Поменял урл у проекта на CodePlex</title>
    <published>2011-06-19T17:34:54Z</published>
    <updated>2011-06-19T17:34:54Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Новости" />
    <content type="html">&lt;a target="_blank" rel="nofollow" href="http://stocksharp.codeplex.com/ " title="http://stocksharp.codeplex.com/ "&gt;http://stocksharp.codeplex.com/ &lt;/a&gt;По-моему, проще набивать.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1677/</id>
    <title type="text">Проблема при тестировании примера SampleGUI</title>
    <published>2011-06-19T11:21:47Z</published>
    <updated>2011-06-19T11:21:47Z</updated>
    <author>
      <name>FiNick</name>
      <uri>https://stocksharp.ru/users/6053/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Plaza 2" />
    <content type="html">Тестирую пример SampleGUI, при нажатии кнопки подключится выдается следующая ошибка: &lt;br /&gt;{&amp;quot;Не удалось получить фабрику класса COM для компонента с CLSID {43FB494A-620B-4588-A9DD-DB0BE4B6694A} из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).&amp;quot;}&lt;br /&gt;&lt;br /&gt;Протрассировал, ошибка исходит из конструктора PlazaTrader, внутрь зайти не получается. Такое ощущение, что какая-то библиотечка должна была быть зарегана в GAC, но в исходниках никакая библиотека с таким CLSID не фигурирует. Что это может быть??&lt;br /&gt;&lt;br /&gt;З.Ы. Буду искать способ зайти в конструктор PlazaTrader, чтоб выудить доп информацию.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1676/</id>
    <title type="text">Стратегия работающая с несколькими инструментами и портфелями</title>
    <published>2011-06-18T19:46:17Z</published>
    <updated>2011-06-18T19:46:17Z</updated>
    <author>
      <name>President</name>
      <uri>https://stocksharp.ru/users/510/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Добрый день.&lt;br /&gt;&lt;br /&gt;Стратегия работает с несколькими инструментами и портфелями.&lt;br /&gt;Как иделологически это правильнее реализовывать на Stock#?&lt;br /&gt;&lt;br /&gt;Вижу два варианта:&lt;br /&gt;1.&lt;br /&gt;В MyStrategy добавляется нужное количество полей для содержания всех security и portfolio&lt;br /&gt;Вся логика в MyStrategy.OnProcess()&lt;br /&gt;При этом поля Strategy.Security и Strategy.Portfolio не используются.&lt;br /&gt;&lt;br /&gt;2.&lt;br /&gt;В MyStrategy добавляются child-стратегии - по одной на каждый инструмент.&lt;br /&gt;Вся логика по-прежнему в MyStrategy.OnProcess(), при этом если нужно что-то купить-продать - имплементация этого делается в ChildStrategy.СвойМетод(). А ChildStrategy.OnProcess() насколько я понимаю тут не используется.&lt;br /&gt;Алгоритм самой стратегии тут  усложняется (лишние сущности без которых можно обойтись) но преимуществом тут наверное может быть использование PnLManager и других классов до изучения которых я еще не добрался.&lt;br /&gt;&lt;br /&gt;Я пока пользуюсь первым вариантом - но наличие неиспользуемых полей Strategy.Security и Strategy.Portfolio смущает.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1675/</id>
    <title type="text">Важное изменение портфелей Stock# для биржи ММВБ</title>
    <published>2011-06-18T10:47:03Z</published>
    <updated>2011-06-18T10:47:03Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">Разбираясь с &lt;a href="http://stocksharp.com/forum/1633/Svoistvo-Portfolio-u-position-v-sobytiiakh/" title="http://stocksharp.com/forum/1633/Svoistvo-Portfolio-u-position-v-sobytiiakh/"&gt;этой проблемой&lt;/a&gt; наткнулся на следующее:&lt;br /&gt;у нас сейчас портфель на ММВБ характеризуется Фирмой (для портфеля по бумагам) и Счётом депо (для позициям по бумагам).&lt;br /&gt;&lt;br /&gt;Судя по документации квика:&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;span class="highlight"&gt;Фирма&lt;/span&gt; - Код участника торгов в торговой системе&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Сейчас загрузил 2 разных квика в Открытии - в обоих квиках фирма одинаковая - MC01396000000.&lt;br /&gt;Т.е. это действительно код брокера как участника, а не различный счёт клиентов.&lt;br /&gt;&lt;br /&gt;Портфели, как мне кажется, должны создаваться по коду клиента - именно они разные для каждого клиента.&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;span class="highlight"&gt;Код клиента&lt;/span&gt; - Идентификатор клиента в системе QUIK&lt;/div&gt;&lt;/div&gt; - говорится в документации Квика.&lt;br /&gt;Т.е. портфель по ссылке выше должен быть один - OPEN408.&lt;br /&gt;&lt;br /&gt;Именно по этому коду клиента можно сопоставить позицию с текущим портфелем, именно из-за этого приходят портфели, которые приходить не должны.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Собственно возникли вопросы:&lt;br /&gt;Вопрос к тем кто торгует на мамбе - правильно ли я понял сущность портфелей на бирже ММВБ в квике (сам не торговал акциями с 2008)?&lt;br /&gt;Если да, то кто-нибудь кроме Ивана сталкивался с этой проблемой?&lt;br /&gt;&lt;br /&gt;И если действительно необходимо надо будет создавать портфели по коду клиента, а не по фирме - нужны ли кому-нибудь поля Фирма в таблице Портфель по бумагам и поле Счёт депо в таблице Позиции по бумагам (они, повторюсь, судя по всему характеризуют именно код брокера)?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1674/</id>
    <title type="text">Предложение по таблице &amp;quot;Портфель по деривативам&amp;quot;</title>
    <published>2011-06-18T09:43:49Z</published>
    <updated>2011-06-18T09:43:49Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">В настоящее время у нас в Портфель по деривативам выводится предыдущий лимит открытых позиций (записывается в Portfolio.BeginAmount).&lt;br /&gt;По документации квика:&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;span class="highlight"&gt;Предыд. лимит откр. поз.&lt;/span&gt; - Лимит открытых позиций по всем инструментам &lt;b&gt;предыдущей торговой сессии&lt;/b&gt; в денежном выражении.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Portfolio.BeginAmount же:&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;Размер денежных средств &lt;b&gt;на начало торговой сессии&lt;/b&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;В результате одно получается - на начало предыдущей торговой сессии, другое - на начало текущей торговой сессии.&lt;br /&gt;В квике есть замечательный столбец лимит открытых позиций:&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;span class="highlight"&gt;Лимит откр. поз.&lt;/span&gt; - Текущий лимит открытых позиций по всем инструментам в денежном выражении. Для рынка RTS Standard отображается лимит на покупку спотовых активов.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;От себя добавлю - я с самой первой версии у себя заменил пред. лимит откр. поз. на просто лими откр. поз.&lt;br /&gt;Он действительно показывает средства на начало текущей сессии - то что и надо.&lt;br /&gt;Правда за исключением одного - если на начало текущей сессии было X, а потом с данного счёта вывели или добавили Y, то лимит откр. поз. изменится до &lt;span class="highlight"&gt;X +(-) Y&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Что тоже, на мой взгляд, не далеко от истины. К примеру, у вас на начало сессии было 0 рублей, но в течение сессии поступило переведённые вами 100 тысяч рублей - лимит откр. поз. изменится на 100 тысяч.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Поэтому у меня предложение - заменить столбец по умолчанию в Портфеле по деривативам с Пред. лимит откр. поз. на Лимит откр. поз.&lt;br /&gt;Деньги на начало предыдущей сессии, если они действительно нужны, могут быть выведены в отдельном столбце и получены через ExtensionInfo - всё согласно документации.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Как? Возражающих нет?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1673/</id>
    <title type="text">Не приходит событие NewMyTrades в MarketQuotingStrategy</title>
    <published>2011-06-17T13:40:23Z</published>
    <updated>2011-06-17T13:40:23Z</updated>
    <author>
      <name>InsiderHSE</name>
      <uri>https://stocksharp.ru/users/6099/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">сабж. Причем по родительской стратегии событие приходит. Я так понимаю, стратегия успевает остановиться перед вызовом этого события. Это так задумано или баг?&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 strategy = new MyStrategy(Security)
            {
            	Volume = 1,
            	Portfolio = Portfolio_FORTS,
            	Trader = this.Trader,
            };

			strategy.NewMyTrades += t =&amp;gt;
			{
				MyTrade tr = t.FirstOrDefault();
				Debug.WriteLine(&amp;quot;Родительская стратегия: Пришла новая сделка - &amp;quot; + DateTime.Now.ToLongTimeString() + &amp;quot;   &amp;quot; + tr.ToString());
			};
&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;

var order = base.BuyAt(Security.LastTrade.Price);
var qstr = new MyMarketQuotingStrategy(order, 0m.Pips(order.Security), 0m.Pips(order.Security)) { PriceType = MarketPriceTypes.Middle, MaxErrorCount = 1 };
	qstr.NewMyTrades += t =&amp;gt;
	{
		MyTrade tr = t.FirstOrDefault();
		Debug.WriteLine(&amp;quot;Котирование: Пришла новая сделка - &amp;quot; + DateTime.Now.ToLongTimeString() + &amp;quot;   &amp;quot; + tr.ToString());
	};
base.ChildStrategies.Add(qstr);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Получаю:&lt;br /&gt;Родительская стратегия: Пришла новая сделка - 17:07:56   StockSharp.BusinessEntities.MyTrade&lt;br /&gt;Родительская стратегия: Пришла новая сделка - 17:08:17   StockSharp.BusinessEntities.MyTrade&lt;br /&gt;&lt;br /&gt;Причем иногда сделка по котированию все-таки приходит, иногда с третьего раза, бывает позже.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1672/</id>
    <title type="text">Полезные функции</title>
    <published>2011-06-17T13:36:23Z</published>
    <updated>2011-06-17T13:36:23Z</updated>
    <author>
      <name>Артем_2</name>
      <uri>https://stocksharp.ru/users/27723/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">Всем доброго времени суток! &lt;br /&gt;Ради интереса и для обмена опытом написания роботов/приводов под Stock# решил открыть небольшую темку на форуме. Сюда  выложу некоторые процедуры и функции, которые использую в своем приводе. Возможно, кто-то почерпнет для себя нечто интересное или готов предложить свои варианты. Программирую на C# не так давно, поэтому код не претендует на нобелевскую премию...&lt;br /&gt;&lt;br /&gt;1) Процедура для запска Квика с последующей автризацией StartQuikConnection()&lt;br /&gt;2) Функция для проверки настроек таблиц&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;

#region QUIK CONNECTION

        public static Ecng.Trading.Quik.QuikTrader Trader;

        private static Ecng.Trading.Algo.Strategies.StrategyManager StrategyManager;

        public delegate void Connected_EventHandler(Boolean IsOK);
        public static event Connected_EventHandler Connected;

        public static Boolean IsTraderConnected
        {
            get
            {
                if (Trader == null || !Trader.IsConnected)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
        }


        private static System.Threading.AutoResetEvent _OnTerminalConnectedWaitHandle;
        public static void StartQuikConnection()
        {
            if (IsTraderConnected)
            {
                Globals.Сообщить(&amp;quot;Подключение уже активно!&amp;quot;, Globals.СтатусСообщения.Инфо);
            }
            else
            {
                //System.Threading.ManualResetEvent waitHandle_ЗапускТерминала = new System.Threading.ManualResetEvent(false);

                if (!StartTerminal())
                { return; }

                //waitHandle_ЗапускТерминала.WaitOne(60000);
                /////////////////////////////////////////////////
                try
                {
                    if (!IsTraderConnected)
                    {
                        _OnTerminalConnectedWaitHandle = new System.Threading.AutoResetEvent(false);

                        if (Trader == null) //Если null, регистрируем новый trader
                        {
                            Trader = new Ecng.Trading.Quik.QuikTrader(_QuikPath);
                            Trader.IsAsyncMode = false;

                            Trader.ConnectionError += OnTraderConnectionError;

                            //подписываемся на событие успешного подключения
                            //все действия необходимо производить только после подключения
                            Trader.Connected += OnTraderConnected;

                            Trader.Connect();

                        }
                        else
                        {
                            Trader.Reconnect();

                        }

                        _OnTerminalConnectedWaitHandle.WaitOne(10000);
                    }

                }
                catch (Exception e)
                {
                    OnConnect(false);

                    if (Trader != null)
                    {
                        Trader.Dispose();
                        Trader = null;
                    }
                    MessageBox.Show(&amp;quot;Ошибка при подключении к Quik: &amp;quot; + &amp;#39;\n&amp;#39; + e.Message, &amp;quot;Подключение к QUIK!&amp;quot;, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
        private static Boolean StartTerminal()
        {
            try
            {
                Ecng.Trading.Quik.QuikTerminal terminal = QuikTerminal.DefaultTerminal;

                if (terminal == null || !terminal.IsConnected)
                {
                    Globals.Состояние(&amp;quot;Подключение к Quik...&amp;quot;);

                    terminal = QuikTerminal.Get(_QuikPath);

                    if (!terminal.IsLaunched)
                    {
                        Globals.Сообщить(&amp;quot;Запускаем Quik &amp;lt;&amp;quot; + DateTime.Now.ToString(&amp;quot;dd.MM.yyyy HH:mm:ss&amp;quot;) + &amp;quot;&amp;gt;&amp;quot;, Globals.СтатусСообщения.Инфо);

                        terminal.Launch();

                        Globals.Сообщить(&amp;quot;Quik запущен &amp;lt;&amp;quot; + DateTime.Now.ToString(&amp;quot;dd.MM.yyyy HH:mm:ss&amp;quot;) + &amp;quot;&amp;gt;&amp;quot;, Globals.СтатусСообщения.Инфо);
                    }

                }
                else
                {
                    Globals.Сообщить(&amp;quot;Найден запущенный Quik&amp;quot;, Globals.СтатусСообщения.Инфо);
                }

                if (terminal == null)
                {
                    return false;
                }

                if (!terminal.IsConnected)
                {
                    terminal.Login(_QuikLogin, _QuikPassword);

                    Globals.Сообщить(&amp;quot;Авторизация произведена&amp;quot;, Globals.СтатусСообщения.Инфо);
                }

                Globals.Состояние(&amp;quot;&amp;quot;);

                return true;

            }
            catch (Exception e)
            {
                Globals.Состояние(&amp;quot;&amp;quot;);

                Globals.Сообщить(&amp;quot;Ошибка запуска QUIK: &amp;quot; + e.Message, Globals.СтатусСообщения.Важное);

                return false;
            }
        }

        private static void OnConnect(Boolean IsOK)
        {
            if (Connected != null) Connected(IsOK);

        }

        public static Boolean CheckDDE()
        {
            StartQuikConnection();
            if (IsTraderConnected)
            {
                return CheckDDE_OnConnected();
            }
            else
            {
                return false;
            }
        }
        private static Boolean CheckDDE_OnConnected()
        {
            Boolean _resault = true;
            Trader.ProcessDataError += OnTraderProcessDataError;
            try
            {
                var _errors = Trader.Terminal.GetTableSettings();

                foreach (var _err in _errors)
                {
                    Globals.СтатусСообщения _статус = Globals.СтатусСообщения.Обычное;

                    if (_err.IsCritical)
                    {
                        _статус = Globals.СтатусСообщения.Важное;
                        _resault = false;
                    }

                    Globals.Сообщить(_err.Error.Message, _статус);
                }
            }
            catch
            {
                _resault = false;
            }
            finally
            {
                Trader.ProcessDataError -= OnTraderProcessDataError;
            }

            return _resault;
        }

        #region STATIC ОБРАБОТЧИНИК СОБЫТИЙ

        private static void OnTraderConnected()
        {
            _OnTerminalConnectedWaitHandle.Set();
            Globals.Сообщить(&amp;quot;Подключение было произведено успешно!&amp;quot;, Globals.СтатусСообщения.Инфо);
            OnConnect(true);
        }

        private static void OnTraderConnectionError(Exception e)
        {
            Globals.Сообщить(&amp;quot;Ошибка при подключении к Quik: &amp;quot; + e.Message, Globals.СтатусСообщения.Важное);
            OnConnect(false);
        }

        private static void OnTraderProcessDataError(Exception e)
        {
            Globals.Сообщить(&amp;quot;Ошибка при получении/обработке данных с сервера Quik: &amp;quot; + e.Message, Globals.СтатусСообщения.Важное);
        }&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1671/</id>
    <title type="text">вывод через dde не стартует для таблицы &amp;quot;портфель по деривативам&amp;quot;</title>
    <published>2011-06-16T07:23:54Z</published>
    <updated>2011-06-16T07:23:54Z</updated>
    <author>
      <name>Greene-nsk</name>
      <uri>https://stocksharp.ru/users/27932/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">Вызываю StartExport. Для всех остальных таблиц экспорт стартует, для &amp;quot;Портфель по деривативам&amp;quot; не хочет. Для того, чтобы пришел портфель приходится стартовать вывод руками.&lt;br /&gt;S# 3.1.10.0</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1670/</id>
    <title type="text">3.2 и сериализация свечей</title>
    <published>2011-06-15T22:17:12Z</published>
    <updated>2011-06-15T22:17:12Z</updated>
    <author>
      <name>InsiderHSE</name>
      <uri>https://stocksharp.ru/users/6099/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Не получается сериализовать свечи, пишет что CandleToken не помечен соответствующим атрибутом. Может, в 3.2 реализован штатный способ сохранения свечей на диск?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1669/</id>
    <title type="text">Индикатор - рефакторинг</title>
    <published>2011-06-15T20:02:44Z</published>
    <updated>2011-06-15T20:02:44Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Первый существенный рефакторинг. Произвести нужно, различий уже много в каждом из индюков. Что бросилось в глаза:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Класса нужно объявлять public. Иначе их не будет видно с наружи (в роботе).&lt;br /&gt;&lt;li&gt;Предлагаю все воспользоваться R# и применить выложенные настройки (применять через аддон к R# - rsm.codeplex.com). Файл должен быть &amp;quot;зеленым&amp;quot;, в идеале вообще без меток.&lt;br /&gt;&lt;li&gt;Давайте разнесем индюки по разным папкам. Я создал 2 - для тренд и волатильность. Подозреваю, что их недостаточно. При переносе файла так же нужно менять и namespace чтобы было правильнее с точки зрения C#.&lt;br /&gt;&lt;li&gt;Есть 2 класса - SingleValueIndicator и LengthIndicator. Предлагаю свои индюки отнаследовать именно от них (какой именно подойдет можно понять по коду).&lt;br /&gt;&lt;li&gt;Имена. Будем делать длинными? Посмотрите как получилось со скользящими. Нормально? Если да, то давайте и свои так же переделаем.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1668/</id>
    <title type="text">TakeProfitStrategy - Объем заявки не может быть нулевым.</title>
    <published>2011-06-15T19:42:24Z</published>
    <updated>2011-06-15T19:42:24Z</updated>
    <author>
      <name>InsiderHSE</name>
      <uri>https://stocksharp.ru/users/6099/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">Версия 3.2.&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;

        private void Action1()
        {
            var order = _signalDirection == OrderDirections.Buy ? base.BuyAt(Security.LastTrade.Price) : base.SellAt(Security.LastTrade.Price);
            var qstr = new MyMarketQuotingStrategy(order, 0m.Pips(order.Security), 0m.Pips(order.Security)) { PriceType = MarketPriceTypes.Middle, MaxErrorCount = 2 };
            base.ChildStrategies.Add(qstr);
            SecureTrades(qstr);
        }
        private void SecureTrades(Strategy str)
        {
            str.NewMyTrades += trades =&amp;gt;
                {
                    // создаем пакетную стратегию, которая будет объединять все защитные пары стратегий по каждой из пришедших по родительской стратегии сделок
                    var batch = new BatchStrategy(BatchFinishModes.All);

                    // для каждой сделки добавляем для защиты по пакетной стратегии
					foreach (var t in trades)
					{
						var s = new BatchStrategy(BatchFinishModes.First);

						// выставляет тейк-профит в пунктах
						var takeProfit = new MyTakeProfitStrategy(t, TakeProfit);
						takeProfit.BestPriceOffset = 0m.Pips(t.Order.Security);
						takeProfit.PriceOffset = 0m.Pips(t.Order.Security);
						takeProfit.MaxErrorCount = 2;
						takeProfit.UseMarketQuoting = true;


						// выставляет стоп-лосс в пунктах
						var stopLoss = new MyStopLossStrategy(t, StopLoss);
						stopLoss.BestPriceOffset = 0m.Pips(t.Order.Security);
						stopLoss.PriceOffset = 0m.Pips(t.Order.Security);
						stopLoss.MaxErrorCount = 2;
						stopLoss.UseMarketQuoting = true;

						s.ChildStrategies.Add(takeProfit);
						s.ChildStrategies.Add(stopLoss);
						batch.ChildStrategies.Add(s);
					}

                    base.ChildStrategies.Add(batch);
                };
        }
&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:plain"&gt;

VDS 15.06.2011 23:18:19 Стратегия запущена.
VDS 15.06.2011 23:20:01 [MMQS] Стратегия запущена.
VDS 15.06.2011 23:20:01 [MMQS] Регистрация новой заявки на Buy с ценой 9763 и объемом 1.
VDS 15.06.2011 23:20:01 [MMQS] Заявка 83837918 на Buy отправлена с ценой 9763 объемом 1.
VDS 15.06.2011 23:20:17 [MMQS] Позиция изменилась на 1.
VDS 15.06.2011 23:20:17 [MMQS] Заканчиваем котирование с неисполненным объемом равный 0.
VDS 15.06.2011 23:20:17 [MMQS] Стратегия останавливается.
VDS 15.06.2011 23:20:17 [MMQS] Стратегия остановлена.
VDS 15.06.2011 23:21:02 [MMQS] Стратегия запущена.
VDS 15.06.2011 23:21:09 [MMQS] Регистрация новой заявки на Buy с ценой 9763 и объемом 1.
VDS 15.06.2011 23:21:11 [MMQS] Заявка 83837919 на Buy отправлена с ценой 9763 объемом 1.
VDS 15.06.2011 23:21:11 [MMQS] Позиция изменилась на 1.
VDS 15.06.2011 23:21:11 [MMQS] Заканчиваем котирование с неисполненным объемом равный 0.
VDS 15.06.2011 23:21:11 [MMQS] Стратегия останавливается.
VDS 15.06.2011 23:21:11 [BS] Стратегия запущена.
VDS 15.06.2011 23:21:11 [MMQS] Стратегия остановлена.
VDS 15.06.2011 23:21:11 [BS] [BS] Стратегия запущена.
VDS 15.06.2011 23:21:17 [BS] [BS] [MTPS] Стратегия запущена.
VDS 15.06.2011 23:21:17 [BS] [BS] [MTPS] Цена текущей 1 и лучшей 9783.
VDS 15.06.2011 23:21:17 [BS] [BS] [MTPS] Котирование заявки 0 на Sell с ценой 1 объемом 0.
VDS 15.06.2011 23:21:19 [BS] [BS] [MSLS] Стратегия запущена.
VDS 15.06.2011 23:21:19 [BS] [BS] [MTPS] System.ArgumentException: Объем заявки не может быть нулевым.
Parameter name: order
   at StockSharp.Algo.TraderHelper.#=qLXaN0algzgDBsw6fL5g3xaIlhhTYVQnmzcQDJXxFOrU=(Order #=qWXq3jB6jTZ2iF22oDzWvHw==)
   at StockSharp.Algo.TraderHelper.#=qDFpU1YoTr3fblYauaHBvMg==(Order #=q1610m$u1mmPjgA6udOcZdQ==)
   at StockSharp.Algo.BaseTrader.ReRegisterOrder(Order oldOrder, Order newOrder)
   at StockSharp.Algo.Strategies.Strategy.ReRegisterOrder(Order oldOrder, Order newOrder)
   at StockSharp.Algo.Strategies.QuotingStrategy.#=qMEPRc8S0wl31v01gtQybow==()
   at StockSharp.Algo.Strategies.QuotingStrategy.#=qrUj$Ns0mMAxxqh0k0FFJLBiPs_ZjpLzGs4nD7HMEB2Y=.#=qT87pKfV2SNITwCrVPXClEg==()
   at StockSharp.Algo.Strategies.StrategyRule.#=qDYUeDT$gBHBaiAb$fAwEix6EMBQFWfxRkrpaRMiTmvs=()
   at StockSharp.Algo.Strategies.Strategy.#=qOhBmTMx_CuyhB9VHemT_UQ==(StrategyRule #=qInhSYRIpOjVVx7xao$LOvA==, Action #=qIIVK4c4QTCW6iU5TC2n_LA==)
VDS 15.06.2011 23:21:19 [BS] [BS] [MTPS] Цена текущей 1 и лучшей 9783.
VDS 15.06.2011 23:21:19 [BS] [BS] [MTPS] Котирование заявки 0 на Sell с ценой 1 объемом 0.
VDS 15.06.2011 23:21:19 [BS] [BS] [MTPS] System.ArgumentException: Объем заявки не может быть нулевым.
Parameter name: order
   at StockSharp.Algo.TraderHelper.#=qLXaN0algzgDBsw6fL5g3xaIlhhTYVQnmzcQDJXxFOrU=(Order #=qWXq3jB6jTZ2iF22oDzWvHw==)
   at StockSharp.Algo.TraderHelper.#=qDFpU1YoTr3fblYauaHBvMg==(Order #=q1610m$u1mmPjgA6udOcZdQ==)
   at StockSharp.Algo.BaseTrader.ReRegisterOrder(Order oldOrder, Order newOrder)
   at StockSharp.Algo.Strategies.Strategy.ReRegisterOrder(Order oldOrder, Order newOrder)
   at StockSharp.Algo.Strategies.QuotingStrategy.#=qMEPRc8S0wl31v01gtQybow==()
   at StockSharp.Algo.Strategies.QuotingStrategy.#=qrUj$Ns0mMAxxqh0k0FFJLBiPs_ZjpLzGs4nD7HMEB2Y=.#=qT87pKfV2SNITwCrVPXClEg==()
   at StockSharp.Algo.Strategies.StrategyRule.#=qDYUeDT$gBHBaiAb$fAwEix6EMBQFWfxRkrpaRMiTmvs=()
   at StockSharp.Algo.Strategies.Strategy.#=qOhBmTMx_CuyhB9VHemT_UQ==(StrategyRule #=qInhSYRIpOjVVx7xao$LOvA==, Action #=qIIVK4c4QTCW6iU5TC2n_LA==)
VDS 15.06.2011 23:21:19 [BS] [BS] Стратегия останавливается.
VDS 15.06.2011 23:21:19 [BS] [BS] [MSLS] Стратегия останавливается.
VDS 15.06.2011 23:21:19 [BS] [BS] Стратегия остановлена.
VDS 15.06.2011 23:21:19 [BS] [BS] [MTPS] Стратегия остановлена.
VDS 15.06.2011 23:21:19 [BS] [BS] [MSLS] Стратегия остановлена.
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Баг или я что-то делаю не так?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1667/</id>
    <title type="text">[SOLVED] (инфа устарела!) Quik: RegisterOrder для маркет-ордера кидает исключение</title>
    <published>2011-06-15T09:23:34Z</published>
    <updated>2011-06-15T09:23:34Z</updated>
    <author>
      <name>President</name>
      <uri>https://stocksharp.ru/users/510/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">добрый день.&lt;br /&gt;вот такая конструкция у меня валится с ошибкой:&lt;br /&gt;&lt;br /&gt;            Order buyOrder = new Order&lt;br /&gt;            {&lt;br /&gt;                Portfolio = this.Portfolio,&lt;br /&gt;                Price = buySecurity.GetMarketPrice(OrderDirections.Buy),&lt;br /&gt;                Security = buySecurity,&lt;br /&gt;                Volume = buyVolume,&lt;br /&gt;                Direction = OrderDirections.Buy,&lt;br /&gt;                Type = OrderTypes.Market&lt;br /&gt;            };&lt;br /&gt;            this.Trader.RegisterOrder(buyOrder);&lt;br /&gt;&lt;br /&gt;Код ошибки WrongSyntax Сообщение ACCOUNT=тут правильный аккаунт; CLIENT_CODE=S#; TRANS_ID=47229994; CLASSCODE=EQBR; SECCODE=SBER03; QUANTITY=2; OPERATION=B; TYPE=M; ACTION=NEW_ORDER; PRICE=97,91; EXECUTION_CONDITION=PUT_IN_QUEUE;&lt;br /&gt;&lt;br /&gt;пробовал не указывать Price (как это делается в GUI QUIK для маркет-ордеров) - ошибка повторяется.&lt;br /&gt;&lt;br /&gt;не подскажите в чем тут может быть дело?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1666/</id>
    <title type="text">Форум: Ошибка в подписке на темы</title>
    <published>2011-06-14T12:51:55Z</published>
    <updated>2011-06-14T12:51:55Z</updated>
    <author>
      <name>valenock</name>
      <uri>https://stocksharp.ru/users/167/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="клуб алготрейдеров" />
    <content type="html">Уведомления об обновлении подписанных тем приходят по нескольку раз, бессистемно. &lt;br /&gt;Например, сегодня пришло обновление на тему, в которой я сам же и писал 10 дней назад - т.е. мало того, что обновление опоздало на 10 дней, так оно ещё и среагировало на меня.&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1665/</id>
    <title type="text">[FIXED] RandomEmulationTrader не генерит данные</title>
    <published>2011-06-14T10:27:55Z</published>
    <updated>2011-06-14T10:27:55Z</updated>
    <author>
      <name>President</name>
      <uri>https://stocksharp.ru/users/510/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">Исторические данные проигрываются.&lt;br /&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;

            var storage = new TradingStorage(new InMemoryStorage())
            {
                BasePath = @&amp;quot;C:\MyProjects\HistoryData&amp;quot;,
            };

            var trader = new HistoryEmulationTrader(
                new Dictionary&amp;lt;Security, TimeSpan&amp;gt; { 
                    { securityA, TimeSpan.FromSeconds(1) }, 
                    { securityB, TimeSpan.FromSeconds(1) }},
                new[] { portfolio },
                storage);
&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;

            var trader = new RandomEmulationTrader(
                new Dictionary&amp;lt;Security, TimeSpan&amp;gt; { 
                    { securityA, TimeSpan.FromSeconds(1) }, 
                    { securityB, TimeSpan.FromSeconds(1) }},
                new[] { portfolio });
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;при этом все остальное оставив без изменений.&lt;br /&gt;&lt;br /&gt;Нужно ли еще что-то менять чтобы заработал генератор случайных данных?&lt;br /&gt;&lt;br /&gt;PS. вместо ((( и ))) должны быть угловые скобки -  форум не переваривает их что очень неудобно для вставки кода.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1664/</id>
    <title type="text">Стоп заявка</title>
    <published>2011-06-13T17:25:04Z</published>
    <updated>2011-06-13T17:25:04Z</updated>
    <author>
      <name>patermind</name>
      <uri>https://stocksharp.ru/users/28000/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">Добрый день. Сейчас фиксирую прибыль вот таким образом, просто выставляя лимитную заяку выше текущей цены цены на 30 рублей:&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;var order3 = new Order&lt;br /&gt;                                {&lt;br /&gt;                                    Portfolio = _portfolio,&lt;br /&gt;                                    Price = _instrument0.ShrinkPrice(_instrument0.BestAsk.Price+30),&lt;br /&gt;                                    Security = _instrument0,&lt;br /&gt;                                    Volume = 5,&lt;br /&gt;                                    Direction = OrderDirections.Buy,&lt;br /&gt;                                };&lt;br /&gt;                                trader.RegisterOrder(order3);&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Но бывает так, что нужно в районе 30-ти рублей начать следить за ценой. Далее, например, при достижении 35 рублей при откате назад более чем на 3 рубля(до 32 рублей) выбросить лимитированную заявку с ценой 31,8. Т.е. эдакий трейлинг-стоп. Как это можно реализовать? Стратегии не используются.&lt;br /&gt;&lt;br /&gt;Заранее спасибо!</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/1663/</id>
    <title type="text">ActionStrategy() и свечи</title>
    <published>2011-06-13T09:44:44Z</published>
    <updated>2011-06-13T09:44:44Z</updated>
    <author>
      <name>valenock</name>
      <uri>https://stocksharp.ru/users/167/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Для работы со свечками в ActionStrategy доступны &lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;NewCandle(CandleToken) &lt;br /&gt;Changed(Candle, ICandleManager) &lt;br /&gt;Finished(Candle, ICandleManager)&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;А как получить доступ к _candleManager.CandlesFinished() ? т.е. как вызывать Action каждый раз по окончанию свечи ?&lt;br /&gt;Я делаю так:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;When(_candleToken.NewCandle()).Do(delegate() &lt;br /&gt;{ &lt;br /&gt;     var finishedCandle = _candleManager.GetTimeFrameCandles(Security, _timeFrame, 2).FirstOrDefault(); &lt;br /&gt;}).MakePeriodical();&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Но это явно не джедайский подход, хотелось бы что-то поэлегатнее, в идеале в духе _candleManager.CandlesFinished() - чтобы сразу получать список законченных свечек и работать с ними как-то так:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;When(_candleToken.NewCandleFinished()).Do(Action(Candle newCandle); &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;</content>
  </entry>
</feed>