﻿<?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=134</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-19T20:19:03Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=forum&amp;page=134" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/topic/3507/</id>
    <title type="text">Заявки без портфеля (Quik, Частный случай)</title>
    <published>2013-03-26T14:28:52Z</published>
    <updated>2013-03-26T14:28:52Z</updated>
    <author>
      <name>dec99</name>
      <uri>https://stocksharp.ru/users/26939/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Обучение" />
    <content type="html">&lt;p&gt;Помогите с проблемкой.&lt;/p&gt;
&lt;p&gt;Покупка , продажа происходит через Quik без портфеля.
CLIENT_CODE= - пустой&lt;/p&gt;
&lt;p&gt;Это уходит на TRANS2QUIK
ACCOUNT=S01-00000F00;CLIENT_CODE=;TYPE=L;TRANS_ID=59258283;CLASSCODE=EQBR;SECCODE=SBER;ACTION=NEW_ORDER;OPERATION=S;PRICE=97.19;QUANTITY=1;&lt;/p&gt;
&lt;p&gt;Что нужно поменять в портфеле перед созданием заявок, что бы пропускало? И работали дочерние стратегии.&lt;/p&gt;
&lt;p&gt;С уважением Олег&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3505/</id>
    <title type="text">Гидра формирует кривые свечки?</title>
    <published>2013-03-26T12:48:49Z</published>
    <updated>2013-03-26T12:48:49Z</updated>
    <author>
      <name>profts</name>
      <uri>https://stocksharp.ru/users/6174/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">&lt;p&gt;или я чего-то не понимаю...&lt;/p&gt;
&lt;p&gt;15 минутные:
&lt;a href="http://gyazo.com/e23af51eede79c2930b9e5270edd389e" rel="nofollow" target="_blank"&gt;15min&lt;/a&gt;
лишняя свечка в конце дня.&lt;/p&gt;
&lt;p&gt;часовые:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gyazo.com/a03214f5b1d75f8352ac28d4851159ce" rel="nofollow" target="_blank"&gt;час&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;лишняя в конце дня, плюс свечка с окончанием в 18.45 отображается с временем окончания 18  и OHLC одинаковые...&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3504/</id>
    <title type="text">Как узнать цену закрытия предыдущего дня</title>
    <published>2013-03-26T09:58:04Z</published>
    <updated>2013-03-26T09:58:04Z</updated>
    <author>
      <name>Lipot</name>
      <uri>https://stocksharp.ru/users/16767/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Хочется отслеживать изменение текущей цены от закрытия последнего дня, т. е. Close свечки в 23:45.
Есть ли удобный инструмент для данной операции. Или единственный нормальный способ - это вводить переменную, которая будет забирать Close свечи каждый раз в 23:45 и на следующий день от нее искать разницу?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3503/</id>
    <title type="text">Пропуски свечек в SciChart</title>
    <published>2013-03-26T09:22:20Z</published>
    <updated>2013-03-26T09:22:20Z</updated>
    <author>
      <name>akoz</name>
      <uri>https://stocksharp.ru/users/26817/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Алготрейдинг" />
    <content type="html">&lt;p&gt;Добрый день.&lt;/p&gt;
&lt;p&gt;Как можно сделать в SciChart пропуски для свечек, если их действительно не было в некоторые периоды?
По умолчанию рисуются все свечки одна за другой без пропусков, даже если между ними был временной разрыв. Из-за этого в одном окне невозможно 2 графика строить, т.к. они по времени не синхронизируются из-за пропусков свечек.&lt;/p&gt;
&lt;p&gt;В Chart есть свойство IsIndexed, а в SciChart ничего такого нет.
Подскажите как быть, плз.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3502/</id>
    <title type="text">Корректная работа с событийной моделью на примере простого алгоритма</title>
    <published>2013-03-25T19:31:50Z</published>
    <updated>2013-03-25T19:31:50Z</updated>
    <author>
      <name>Андрей Шабанов</name>
      <uri>https://stocksharp.ru/users/16691/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Доброго времени суток. Начал знакомиться с событийной моделью в S#.
Чтобы разобраться как все работает решил реализовать простой алгоритм, который выглядит следующим образом.
На вход дается два параметра CurrentMidPrice и Step.
Робот выставляет две заявки на куплю и на продажу (по цене CurrentPrice+Step и СurrentPrice-Step)
Далее если произошла сделка на покупку то оставшаяся заявка снимается, CurrentPrice-=Step и алгоритм повторяется. Если произошла сделка на продажу то CurrentPrice+=Step соответственно.&lt;/p&gt;
&lt;p&gt;В моем понимании код стратегии выглядит примерно так:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
 class Mesh:Strategy
    {
        public decimal Step;
        public decimal CurrentMidPrice;
    
        protected override void OnStarted()
        {
           Security.WhenMarketDepthChanged()
               .Do(() =&amp;gt; SetBidAskOrders(CurrentMidPrice))
                    .Once().Apply(this);
            base.OnStarted();
        }

        public void SetBidAskOrders(decimal price)//выставляем спред шириной 2*Step вокруг цены price
        {
            var h = new SyncObject();
            CancelActiveOrders();
            var sellOrder = this.CreateOrder(OrderDirections.Sell, price + Step);
            var buyOrder = this.CreateOrder(OrderDirections.Buy, price - Step);
            sellOrder.WhenNewTrades()
                     .Sync(h)
                     .Do(t =&amp;gt;
                         {
                             CurrentMidPrice += Step;
                             SetBidAskOrders(CurrentMidPrice);
                         })
                     .Once().Apply(this);

            buyOrder.WhenNewTrades()
                    .Sync(h)
                    .Do(t =&amp;gt;
                        {
                            CurrentMidPrice -= Step;
                            SetBidAskOrders(CurrentMidPrice);
                        })
                    .Once().Apply(this);
            lock (h)
            {
                RegisterOrder(sellOrder);
                RegisterOrder(buyOrder);
            }
        }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Теперь суть вопроса. В целом алгоритм работает  как ему и положено но если выставить Step=минимальный шаг цены то из-за задержек. В какой-то момент он начинает множить заявки выставлять по 2-3 спреда и не отменять те заявки которые висят в терминале. Хотя CancelOrders ему полагается делать на каждую сделку.&lt;/p&gt;
&lt;p&gt;Очевидно можно вводить флаги и останавливать работу всего алгоритма пока мы на каждый чих не получим возвратный чих от биржи, но я хотел бы в столь простом учебном примере обойтись без лишних костылей. вопрос какие вообще существуют пути решения проблемы транзакционости и синхронизации в такого рода роботах. Надо усложнять код или может я что-то проглядел в документации/подходах.&lt;/p&gt;
&lt;p&gt;Спасибо.
(проверял на тестовом квике, есть плаза и это первое решение естественно но она не решает проблему устойчивости событийного алгоритма к задержкам)&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3501/</id>
    <title type="text">Как выставлять заявки сразу по нескольким инструментам</title>
    <published>2013-03-25T19:20:01Z</published>
    <updated>2013-03-25T19:20:01Z</updated>
    <author>
      <name>Lipot</name>
      <uri>https://stocksharp.ru/users/16767/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Где можно прочитать, - каким образом работать в рамках одной стратегии с несколькими инструментами?
Слышал, что делается это через BasketSecurity, но какой-либо другой информации не нашел.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3500/</id>
    <title type="text">MarketRule1.And(MarketRule2) как работает?</title>
    <published>2013-03-25T18:24:37Z</published>
    <updated>2013-03-25T18:24:37Z</updated>
    <author>
      <name>FlashPlayer</name>
      <uri>https://stocksharp.ru/users/16669/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Как работает комбинация правил MarketRule1.And(MarketRule2).Do(smth)? Она сработает сразу как только выполнятся оба правила? Не важно в каком порядке? И теоретически может быть, что к моменту срабатывания комбинации одно из двух правил может сработать несколько раз? Если да, то лечится так: MarketRule1.Once().And(MarketRule2.Once()).Do(smth)? Спасибо.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3499/</id>
    <title type="text">В RealTimeEmulationTrader не происходят сделки</title>
    <published>2013-03-25T13:00:59Z</published>
    <updated>2013-03-25T13:00:59Z</updated>
    <author>
      <name>Lipot</name>
      <uri>https://stocksharp.ru/users/16767/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">&lt;p&gt;Специально для проверки StopLossStrategy кидаю лимитки близко к спреду. Но сделки, судя по логу, не происходят.
Что-то делаю не так?&lt;/p&gt;
&lt;p&gt;Лог файл&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:59:00.104 |            | Правило 'Интервал 00:01:00 (0x1C4D180)'. Активация.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:54:53.440 |            | Переход из состояния Stopped в Started.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:54:53.442 |            | Стратегия запущена. [0,-1]. Позиция при старте 0.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:56:00.039 |            | Правило 'Интервал 00:01:00 (0x1C4D180)'. Активация.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:56:00.064 |            | Регистрация новой Limit (0x31AE540) заявки на Buy с ценой 9847 и объемом 1. 
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:56:00.112 |            | Правило 'Полное исполнение  60886354/0 (0x36B20B7)'. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:56:00.113 |            | Правило 'Отмена заявки  60886354/0 (0x283D6C)'. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:56:00.113 |            | Правило 'Ошибка регистрации заявки  60886354/0 (0x271D65F)'. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:57:00.062 |            | Правило 'Интервал 00:01:00 (0x1C4D180)'. Активация.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:57:00.063 |            | Регистрация новой Limit (0xEB7DE3) заявки на Buy с ценой 9841 и объемом 1. 
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:57:00.064 |            | Правило 'Полное исполнение  60886355/0 (0x4D82E1)'. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:57:00.064 |            | Правило 'Отмена заявки  60886355/0 (0x86693B)'. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:57:00.064 |            | Правило 'Ошибка регистрации заявки  60886355/0 (0x2874BB6)'. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:58:00.085 |            | Правило 'Интервал 00:01:00 (0x1C4D180)'. Активация.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:58:00.085 |            | Регистрация новой Limit (0x3F13BE6) заявки на Buy с ценой 9845 и объемом 1. 
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:58:00.085 |            | Правило 'Полное исполнение  60886356/0 (0xCEF4B6)'. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:58:00.085 |            | Правило 'Отмена заявки  60886356/0 (0x17B6DE0)'. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 25.03.2013 16:58:00.085 |            | Правило 'Ошибка регистрации заявки  60886356/0 (0xDC417)'. Подписалось на события.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Код стратегии&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
using System;
using System.Globalization;
using System.Windows;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Ecng.Collections;
using Ecng.Xaml;

using StockSharp.Algo;
using StockSharp.Algo.Strategies;
using StockSharp.Algo.Candles;
using System.Threading;
using StockSharp.BusinessEntities;


namespace Spikes_Test_it
{
    internal class RobotStrategy : TimeFrameStrategy
    {
        private readonly CandleManager _candleManager;  //Менеджер свечей

        private readonly CandleSeries _candleSeries;    //Свечи

        private DateTime _nextTime;                     

        private decimal _delta;

        private readonly decimal _deltaPercent;

        private decimal _stopLoss;

        private readonly decimal _stopLossPercent;

        public RobotStrategy(CandleManager candleManager, CandleSeries candleSeries, decimal deltaPercent, decimal stopLossPercent, TimeSpan timeFrame)
            : base(timeFrame)
        {
            _candleManager = candleManager;

            _candleSeries = candleSeries;

            _deltaPercent = deltaPercent;

            _stopLossPercent = stopLossPercent;
            
        }


        /// &amp;lt;summary&amp;gt;
        /// Метод вызывается тогда, когда вызвался метод &amp;lt;see cref=&amp;quot;M:StockSharp.Algo.Strategies.Strategy.Start&amp;quot;/&amp;gt;, и состояние &amp;lt;see cref=&amp;quot;P:StockSharp.Algo.Strategies.Strategy.ProcessState&amp;quot;/&amp;gt; перешло в значение &amp;lt;see cref=&amp;quot;F:StockSharp.Algo.ProcessStates.Started&amp;quot;/&amp;gt;.
        /// &amp;lt;/summary&amp;gt;
        protected override void OnStarted()
        {

            //Вычисляем время окончания текущей свечки
            _nextTime = Interval.GetCandleBounds(base.Trader.GetMarketTime(Exchange.Me)).Max;
            
            Thread.Sleep(_nextTime - base.Trader.GetMarketTime(Exchange.Me));

            base.OnStarted();
        }


        protected override ProcessResults OnProcess()
        {
            //Если наша стратегия в процессе остановки 
            if (base.ProcessState == ProcessStates.Stopping)
            {
                //Отменяем активные заявки 
                CancelActiveOrders();

                //Так как все активные заявки гарантированно были отменены, то возвращаем ProcessResults.Stop 
                return ProcessResults.Stop;
            }
            
            
            //Событие обработки торговой стратегии вызвалось в первый раз, что раньше, чем окончания текущей свечки 
            if (Trader.GetMarketTime(Exchange.Me) &amp;lt; _nextTime)
            {
                
                //Возвращаем ProcessResults.Continue, так как наш алгоритм еще не закончил свою работу, а просто ожидает следующего вызова. 
                return ProcessResults.Continue;
                
            }
             
            //Получаем сформированную свечку
            var candle = _candleSeries.GetTimeFrameCandle(_nextTime-TimeFrame);
            
            //если свечки не существует (не было ни одной сделке в тайм-фрейме), то ждем окончания следующей свечки. 
            if (candle == null)
            {
                // если прошло больше 10 секунд с момента окончания свечки, а она так и не появилась, 
                // значит сделок в прошедшей 5-минутке не было, и переходим на следующую свечку 
                if ((this.GetMarketTime() - _nextTime) &amp;gt; TimeSpan.FromSeconds(10))
                    _nextTime = TimeFrame.GetCandleBounds(Trader.GetMarketTime(Exchange.Me)).Max;
                
                return ProcessResults.Continue;
            }
            
            _nextTime += TimeFrame;

            //Создаем заявку
            var order = this.CreateOrder(OrderDirections.Buy, candle.ClosePrice - 3, Volume);

            //Регистрируем правило, отслеживающее появление новых сделок, осуществленных трейдером
            Trader
                .WhenNewMyTrades()
                .Do(OnNewMyTrades)
                .Apply(this);

            RegisterOrder(order);

            return ProcessResults.Continue;
        }

        protected override void OnNewMyTrades(IEnumerable&amp;lt;MyTrade&amp;gt; trades)
        {
            //Для каждой сделки добавляем защитную стоп-лосс стратегию
            var protectiveStrategies = trades.Select(t =&amp;gt;
                                                         {
                                                             MessageBox.Show(&amp;quot;Идентификатор сделки: &amp;quot; +
                                                                             t.Trade.Id.ToString(
                                                                                 CultureInfo.InvariantCulture));
                _stopLoss = t.Trade.Price * _stopLossPercent/100;
                //Выставляем стоп-лосс 2% от цены входа
                var stopLossStrategy = new AutoProtectiveStrategy
                                           {
                                               StopLossLevel = _stopLoss,
                                               //TakeProfitTimeOut = TimeSpan.FromMinutes(TimeFrame.Minutes*2)
                                               TakeProfitTimeOut = TimeSpan.FromSeconds((_nextTime+TimeFrame+TimeFrame).Second-t.Trade.Time.Second)
                                           };
                MessageBox.Show(stopLossStrategy.TakeProfitTimeOut.ToString());
                return stopLossStrategy;
            });

            ChildStrategies.AddRange(protectiveStrategies);
            
            base.OnNewMyTrades(trades);
        }


    }
}
&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3498/</id>
    <title type="text">Как заставить TimeFrameStrategy стартовать с начала свечки</title>
    <published>2013-03-25T09:48:31Z</published>
    <updated>2013-03-25T09:48:31Z</updated>
    <author>
      <name>Lipot</name>
      <uri>https://stocksharp.ru/users/16767/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Есть TimeFrameStrategy. Хочется, чтобы как в WealthLab'е обработка входящей информации происходила после формирования соответствующей таймфрейму свечи.
Но, если запускать стратегию в любой момент времени, то, она начинает обрабатывать информацию исходя и этого времени.
Т. е., если запустили в 12:45:30, то следующая итерация пойдет с 12:46:30(для минуток).
А хочется, чтобы, следующая итерация началась именно в 12:46:00 и последующие стартовали соответственно в 12:47:00, 12:48:00 итд.
Подскажите, пожалуйста, как это реализовать?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3497/</id>
    <title type="text">Чат. Реинкарнируем идею?</title>
    <published>2013-03-24T22:41:13Z</published>
    <updated>2013-03-24T22:41:13Z</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;p&gt;И так, прошла неделя с того времени, как чат алго трейдеров умер. Собственно, помер он еще пол года назад, когда его перестали модерировать, и ушел костяк.&lt;/p&gt;
&lt;p&gt;Я по своей природе не могу сдаться, и хочу все таки восстановить идею совместного, пусть не ко-воркинга, но обсуждения алго идей. Но в начале приведу некоторые пункты, которые должны быть сделаны (и которые были не сделаны в первом чате, из-за чего тот и скоропостижно скончался).&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Нужно четко разделить тематику. Потому что в чате писали на разные темы. Есть темы связанные с реализацией роботов. Есть темы связанные с анализом торговых идей. Есть темы связанные больше с математикой (квант анализ), который по сути не так уж близок к алго трейдингу. Это все нужно разделять.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Нужна модерация. Причем жесткая. Троллинг недопустим. Понятно, что все мы люди и хотим показать свое острословие, но чат должен содержать только ту инфомрацию, ради которой он был создан. Личное мое мнение - пускай лучше в чате пишут несколько раз в неделю, чем флудят без остановки каждую минуту.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Оффтоп нужен. Пусть это и покажется противоположным пункту 2, но он действительно нужен. Хотя бы поделиться своей радостью. Не всегда друзья-родственники-соседи смогут понять рыночный успех (если, конечно, им с этого ничего не переподает [wink]).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Нужно рецензирование контекста с целью сохранения идей на постоянный носитель. В чате все быстро уходит в никуда.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Скажем так, это пункты своеобразного требования. Предлагаю из обсудить и подумать, как это можно воплотить в жизнь организационно и технически.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3496/</id>
    <title type="text">Не работает стратегия Stoploss при тестировании на истории.</title>
    <published>2013-03-24T20:01:31Z</published>
    <updated>2013-03-24T20:01:31Z</updated>
    <author>
      <name>Gii</name>
      <uri>https://stocksharp.ru/users/5912/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">&lt;p&gt;Добрый день!
Столкнулся с проблемой, не работает Protective стратегия Stoploss, при тестировании на истории. Проверял с библиотеками &amp;quot;Stock Sharp&amp;quot;  4.1.6, 4.1.8,4.1.9.
Хотелось бы узнать, кто-нибудь использовал &amp;quot;Stoploss&amp;quot; с &amp;quot;EmulationTrader&amp;quot;, если да, то в какой версии &amp;quot;Stock Sharp&amp;quot; &amp;quot;Stoploss&amp;quot; работает?&lt;/p&gt;
&lt;p&gt;Прилагается:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Тест &amp;quot;Stoploss&amp;quot; стратегии - &amp;quot;Stock Sharp v4.1.9&amp;quot;.&lt;/li&gt;
&lt;li&gt;Лог стратегии.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;С уважением Игорь.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3494/</id>
    <title type="text">Во время переподключения к квику вылетает ошибка</title>
    <published>2013-03-23T23:06:36Z</published>
    <updated>2013-03-23T23:06:36Z</updated>
    <author>
      <name>Yegor Hi And</name>
      <uri>https://stocksharp.ru/users/6061/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">&lt;p&gt;Когда переподключается коннектор возникает сообщение об ошибке что колонки таблиц уже добавлены
и действительно при первом подключении добавляются дополнительные колонки :
_trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.BestAskPrice);
_trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.BestBidPrice);&lt;/p&gt;
&lt;p&gt;Как сделать так что-бы не вылетало это
Вся процедура подключения ниже в коде.
Заранее благодарен&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;        {

            var guiListener = new GuiLogListener();

            _logManager.Listeners.Add(guiListener);


            if (_trader == null &amp;amp;&amp;amp; terminals.cbTerminals.Text != &amp;quot;&amp;quot;)
            {

                _trader = new QuikTrader(terminals.cbTerminals.Text) { SupportManualOrders = true };
                _trader.ReConnectionSettings.ExportTimeOutInterval = TimeSpan.FromSeconds(10);
                
                _trader.ReConnectionSettings.WorkingTime = _trader.ReConnectionSettings.WorkingTime = Exchange.Rts.WorkingTime; //.Test.WorkingTime;//

                _trader.ReConnectionSettings.ConnectionRestored += () =&amp;gt; this.GuiAsync(() =&amp;gt; 
                    {
                        //MessageBox.Show(this, &amp;quot;Соединение восстановлено&amp;quot;);
                        connect_disconect(&amp;quot;connected&amp;quot;);
                        start_copy();
                    }
                    );
                _trader.ReConnectionSettings.IsReStartExport = true;
                _trader.ConnectionError += error =&amp;gt; this.GuiAsync(() =&amp;gt; MessageBox.Show(this, error.ToString()));

                //_trader.Disconnected += new Action(_trader_Disconnected);

                Q_path = terminals.cbTerminals.Text;

                _trader.Connected += () =&amp;gt;
                {

                    try
                    {

                        _trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.BestAskPrice);
                        _trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.BestBidPrice);

                        //lbConn.Content = &amp;quot;1&amp;quot;;

                        _trader.StartExport();

                        if (SelectedPortfolio != null &amp;amp;&amp;amp; SelectedSecurity != null)//SelectedPortfolio
                        {
                            var myposition = _trader.GetPosition(SelectedPortfolio, SelectedSecurity).CurrentValue;
                           
                            this.GuiAsync(() =&amp;gt;
                            {
                                lbCPose2.Content = myposition;
                                
                            });

                        }

                    }//try
                    catch (Exception ee)
                    {

                        MessageBox.Show(&amp;quot;Произошла ошибка связи и Квиком 1 &amp;quot; + ee.ToString());

                    }

                };

                

                
                _trader.NewSecurities += securities =&amp;gt; this.GuiAsync(() =&amp;gt;
                {
                    try
                    {
                        cbSecuritites.ItemsSource = _trader.Securities;
                        cbSecuritites.SelectedIndex = 0;
                       
                    }//try
                    catch (Exception ee)
                    {
                        MessageBox.Show(&amp;quot;Произошла ошибка связи и Квиком 2 &amp;quot; + ee.ToString());
                       

                        connect_disconect(&amp;quot;0&amp;quot;);

                    }

                });


                _trader.SecuritiesChanged += security =&amp;gt; this.GuiAsync(() =&amp;gt;
                {
                    try
                    {
                        if (_trader != null)
                        {
                            cbSecuritites.ItemsSource = _trader.Securities;

                            if (SelectedSecurity != null)
                            {

                                label2.Content = SelectedSecurity.BestBid.Price.ToString();
                                lbBestAsk.Content = SelectedSecurity.BestAsk.Price.ToString();
                            }
                        }
                    }//try
                    catch (Exception ee)
                    {

                        if (_trader != null)
                        {
                            MessageBox.Show(&amp;quot;Произошла ошибка связи и Квиком 2.1 &amp;quot; + ee.ToString());

                            connect_disconect(&amp;quot;0&amp;quot;);

                        }
                    }

                });

                _trader.NewPortfolios += portfolios =&amp;gt; this.GuiAsync(() =&amp;gt;
                {
                    try
                    {
                        Portfolios.ItemsSource = _trader.Portfolios; //cbSecuritites.ItemsSource = _trader.Securities;//  _trader.StartExport();
                        Portfolios.SelectedIndex = 1;
                        if (SelectedPortfolio != null)// &amp;amp;&amp;amp; SelectedSecurity != null)//SelectedPortfolio SelectedSecurity);//
                        {
                            //  _trader.RegisterMarketDepth(SelectedSecurity);
                        }
                        //lbConnected.Content = &amp;quot;Connected&amp;quot;;
                        connect_disconect(&amp;quot;connected&amp;quot;);
                        tbVolume.Text = &amp;quot;1&amp;quot;;
                        //tbDelta.Text = &amp;quot;0&amp;quot;;
                        btConnect.Background = default_but_color;
                        // Connect_.Background = default();//    System.Windows.Media.LinearGradientBrush;// Brushes.LightPink;
                        // register_MDs();
                    }//try
                    catch (Exception ee)
                    {
                        MessageBox.Show(&amp;quot;Произошла ошибка связи и Квиком 3 &amp;quot; + ee.ToString());
                    }

                });


                _trader.PositionsChanged += positions =&amp;gt; this.GuiAsync(() =&amp;gt;
                {
                    //конркетная позиция по конкретному портфелю инструменту
                    if (SelectedPortfolio != null &amp;amp;&amp;amp; SelectedSecurity != null)//SelectedPortfolio
                    {
                        var myposition = positions.FirstOrDefault(p =&amp;gt; p.Portfolio == SelectedPortfolio &amp;amp;&amp;amp; p.Security == SelectedSecurity);//SelectedPortfolio
                        if (myposition != null)
                        {
                            lbCPose2.Content = myposition.CurrentValue;
                            //on_change_pose();
                        }

                    }

                });

                try
                {
                    _trader.Connect();
                }//try
                catch (Exception ee)
                {
                    MessageBox.Show(&amp;quot;Произошла ошибка связи и Квиком 5&amp;quot; + ee.ToString());
                    // return;
                }

                _trader.ConnectionError += errror =&amp;gt; this.GuiAsync(() =&amp;gt;
                {
                    if (_trader != null)
                    {
                       // _trader.Dispose();
                        connect_disconect(&amp;quot;0&amp;quot;);
                        //_trader = null;
                        //clear_all();
                    }
                });

            }
            else
            {
                if (_trader != null &amp;amp;&amp;amp; _trader.IsConnected)
                {
                   // if (_trader != null)  _trader.Dispose();
                    connect_disconect(&amp;quot;0&amp;quot;);
                   // _trader = null;
                    clear_all();
                }
            }
           

        }
&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3492/</id>
    <title type="text">У кого-нибудь получалось в Quik&amp;apos;е изменить заявку?</title>
    <published>2013-03-23T09:37:12Z</published>
    <updated>2013-03-23T09:37:12Z</updated>
    <author>
      <name>Lipot</name>
      <uri>https://stocksharp.ru/users/16767/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Изменяю заявку через метод ReRegisterOrder.
Почему-то ничего не происходит.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3491/</id>
    <title type="text">Как в Strategy задать количество контрактов по инструенту</title>
    <published>2013-03-22T08:23:30Z</published>
    <updated>2013-03-22T08:23:30Z</updated>
    <author>
      <name>Lipot</name>
      <uri>https://stocksharp.ru/users/16767/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Указывая Strategy.Volume = 2, стратегия выставляет заявки на 1 контракт.
Я правильно понимаю, что Volume это количество денег используемых под заявку? Тогда понятно почему 1 контракт.&lt;/p&gt;
&lt;p&gt;Но как задавать тогда конкретно количество контрактов?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3490/</id>
    <title type="text">Как узнать ГО по инструменту</title>
    <published>2013-03-21T21:02:41Z</published>
    <updated>2013-03-21T21:02:41Z</updated>
    <author>
      <name>Lipot</name>
      <uri>https://stocksharp.ru/users/16767/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Возможно ли, используя средства S#, узнать ГО по фьючерсу, а также количество доступных денежных средств по портфелю?
Можно ли это сделать в Quik и SmartCom?
Ткните носом, пожалуйста, если не сложно. ^^
Спасибо.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3489/</id>
    <title type="text">Стиль отрисовки индикатора DrawStyle не меняется</title>
    <published>2013-03-21T19:46:49Z</published>
    <updated>2013-03-21T19:46:49Z</updated>
    <author>
      <name>GigaMike</name>
      <uri>https://stocksharp.ru/users/26778/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Алготрейдинг" />
    <content type="html">&lt;p&gt;Здравствуйте.
Не могу отобразить объем свечей в виде гистограммы - он рисуется просто линией, любой другой индикатор тоже. DrawStyle указал. А вот к примеру цвет меняется нормально. Использую Chart.
Подскажите, пожалуйста, в чем может быть проблема.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;private readonly ChartArea _area2;
private ChartIndicatorElement _volumeElem;

// ...

_area2 = new ChartArea();
_chart.Areas.Add(_area2);

// ...

_volumeElem = new ChartIndicatorElement
       {
         Title = &amp;quot;Объем&amp;quot;,
         DrawStyle = ChartIndicatorDrawStyles.Histogram,
         Indicator = new VolumeIndicator(),
       };

_area2.Elements.Add(_volumeElem);

// ...

private void ProcessCandle(Candle candle)
{
    var volumeValue = new ChartIndicatorValue(_volumeElem.Indicator, _volumeElem.Indicator.Process(candle));

    _chart.ProcessValues(candle.OpenTime, new Dictionary&amp;lt;IChartElement, object&amp;gt;
    {
        { _candlesElem, candle },
        { _volumeElem, volumeValue },
    });
}
&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3488/</id>
    <title type="text">Время в виртуальной машине</title>
    <published>2013-03-21T14:54:53Z</published>
    <updated>2013-03-21T14:54:53Z</updated>
    <author>
      <name>Eskra</name>
      <uri>https://stocksharp.ru/users/711/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="клуб алготрейдеров" />
    <content type="html">&lt;p&gt;Кто-нить сталкивался с такой проблемой - роботы работают на виртуальных машинах (vmware, windows xp). В начале дня синхронизируем время в xp, к концу торгов часы отстают минуты на 2-3 от реального времени, притом что если выходной и робот не работает - то отставания никакого нет. В чем может быть причина?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3487/</id>
    <title type="text">Как узнать время сделки в событийной модели</title>
    <published>2013-03-21T12:36:19Z</published>
    <updated>2013-03-21T12:36:19Z</updated>
    <author>
      <name>Lipot</name>
      <uri>https://stocksharp.ru/users/16767/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Собственно, сабж.
Хочется реализовать стратегию с выходом через конкретное время. К примеру, через 5 минут. Как это реализовать в событийной модели?
Спасибо.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3486/</id>
    <title type="text">как получить заявки в стакане по краям спрэда?</title>
    <published>2013-03-20T18:19:42Z</published>
    <updated>2013-03-20T18:19:42Z</updated>
    <author>
      <name>yar1k0v</name>
      <uri>https://stocksharp.ru/users/6437/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Не могу получить близжайшие заявки от спрэда...
BestBid и BestAsk дают заявки с максимальной и минимальной ценой в стакане.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3485/</id>
    <title type="text">Конфликт Гидры и  Студии</title>
    <published>2013-03-20T08:33:01Z</published>
    <updated>2013-03-20T08:33:01Z</updated>
    <author>
      <name>Konsta</name>
      <uri>https://stocksharp.ru/users/6361/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">&lt;p&gt;При одновременной работе Студии и Гидры на одном и том же инструменте, ДДЕ экспорт из Квика  работает только в ту программу которая запущена последней, например сначала запустить Гидру, она сохраняет сделки и стаканы по RIM3, а потом запустить Студию, Студия начинает работать нормально, а в  Гидру по RIM3 сделки и стаканы перестают приходить. В это же время по другим инструментам Гидра и сделки и стаканы сохраняет нормально&lt;/p&gt;
</content>
  </entry>
</feed>