﻿<?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">Событие MarketQuotingStrategy.NewMyTrades и QuikTrader</title>
  <id>~/topic/2297/sobytie-marketquotingstrategy_newmytrades-i-quiktrader/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-08T09:10:48Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=2297" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/15596/</id>
    <title type="text">Нет, документация как раз тоже не говорит о том что что-то куда-то копируется. У нас для ордера на S...</title>
    <published>2012-01-12T19:31:56Z</published>
    <updated>2012-01-12T19:31:56Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Нет, документация как раз тоже не говорит о том что что-то куда-то копируется.&lt;br /&gt;У нас для ордера на Sell легко могут проходить как Buy, так и Sell сделки.&lt;br /&gt;&lt;br /&gt;Хотя, наверное, можно было понять двояко.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15595/</id>
    <title type="text">OK, спасибо! Это очевидно, когда знаешь и видишь как заполняется объект, тут же, когда не видишь исх...</title>
    <published>2012-01-12T19:23:36Z</published>
    <updated>2012-01-12T19:23:36Z</updated>
    <author>
      <name>ak</name>
      <uri>https://stocksharp.ru/users/26845/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">OK, спасибо! &lt;br /&gt;&lt;br /&gt;Это очевидно, когда знаешь и видишь как заполняется объект, тут же, когда не видишь исходного кода, - просто ожидаешь наиболее очевидного варианта. Здесь я думал, что значение, в случае не передачи шлюзом, просто копируется из породившего сделку order&amp;#39;а.&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;br /&gt;&lt;a href="http://stocksharp.com/doc/html/P_StockSharp_BusinessEntities_Trade_OrderDirection.htm
" title="http://stocksharp.com/doc/html/P_StockSharp_BusinessEntities_Trade_OrderDirection.htm
"&gt;http://stocksharp.com/do...rade_OrderDirection.htm
&lt;/a&gt;&lt;br /&gt;Направление заявки (покупка или продажа), которая привела к сделке.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Спасибо за ваше время, ответы и ваш труд над S#.&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15594/</id>
    <title type="text">Поставьте бряку в начало функции, посмотрите - есть ли там OrderDirection у сделок в пришедшем масси...</title>
    <published>2012-01-12T18:59:02Z</published>
    <updated>2012-01-12T18:59:02Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;ak &lt;a href="https://stocksharp.ru/posts/m/15592/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Alexander Mukhanchikov &lt;a href="https://stocksharp.ru/posts/m/15590/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Поставьте бряку в начало функции, посмотрите - есть ли там OrderDirection у сделок в пришедшем массиве&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Вот как интересно:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
((StockSharp.BusinessEntities.MyTrade[])(trades))[0].Trade.OrderDirection = null
((StockSharp.BusinessEntities.MyTrade[])(trades))[0].Order.Direction = Buy
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Ничего интересного вроде нет&lt;br /&gt;&lt;br /&gt;у order направление есть всегда&lt;br /&gt;у сделки оно может отсутствовать если шлюз эту информацию не транслирует. смартком - не транслирует. (плаза - тоже не транслирует. квик - проставляет)</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15592/</id>
    <title type="text">Поставьте бряку в начало функции, посмотрите - есть ли там OrderDirection у сделок в пришедшем масси...</title>
    <published>2012-01-12T18:18:06Z</published>
    <updated>2012-01-12T18:18:06Z</updated>
    <author>
      <name>ak</name>
      <uri>https://stocksharp.ru/users/26845/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Alexander Mukhanchikov &lt;a href="https://stocksharp.ru/posts/m/15590/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Поставьте бряку в начало функции, посмотрите - есть ли там OrderDirection у сделок в пришедшем массиве&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Вот как интересно:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
((StockSharp.BusinessEntities.MyTrade[])(trades))[0].Trade.OrderDirection = null
((StockSharp.BusinessEntities.MyTrade[])(trades))[0].Order.Direction = Buy
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15590/</id>
    <title type="text">Поставьте бряку в начало функции, посмотрите - есть ли там OrderDirection у сделок в пришедшем масси...</title>
    <published>2012-01-12T17:31:00Z</published>
    <updated>2012-01-12T17:31:00Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Поставьте бряку в начало функции, посмотрите - есть ли там OrderDirection у сделок в пришедшем массиве</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15589/</id>
    <title type="text">Ни разу не вызывается? Подпишитесь на Trader.NewMyTrades и посмотрите приходят ли там сделки, равные...</title>
    <published>2012-01-12T17:12:01Z</published>
    <updated>2012-01-12T17:12:01Z</updated>
    <author>
      <name>ak</name>
      <uri>https://stocksharp.ru/users/26845/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Alexander Mukhanchikov &lt;a href="https://stocksharp.ru/posts/m/15580/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Ни разу не вызывается?&lt;br /&gt;&lt;br /&gt;Подпишитесь на Trader.NewMyTrades и посмотрите приходят ли там сделки, равные qOrder.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Прошу игнорировать последний мой вопрос, приведенная выше конструкция работает стабильно (насколько мне удалось потестировать) с QuikTrader&amp;#39;ом (при RemoveChildStrategies == true). Проблема, мешавшая вызываться обработчику, заключалась в том, что поток прерывался Exception&amp;#39;ом в другом обработчике (в логи, к сожалению, ничего не попадало):  &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;

...
_strategy.NewMyTrades += OnNewTrades;
...

private void OnNewTrades(IEnumerable&amp;lt;MyTrade&amp;gt; trades)
{
    TradesGrid.Trades.AddRange(trades);

    var newTradeLogMessage = &amp;quot;I&amp;#39;ve {0} {1} future contracts at {2}&amp;quot;;
    trades.ForEach(t =&amp;gt; this._log.AddLog(
        new ExtendedLogMessage(this._log, DateTime.Now, ErrorTypes.Warning, ExtendedLogMessage.ImportanceLevel.High,
            newTradeLogMessage,
            (t.Trade.OrderDirection.Value == OrderDirections.Buy) ? &amp;quot;bought&amp;quot; : &amp;quot;sold&amp;quot;,
            t.Trade.Volume,
            t.Trade.Price)));
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;t.Trade.OrderDirection есть Nullable enum и в нем регулярно был null вместо значения, чего я не ожидал (хотя должен был). Александр, подскажите, почему в сформированном trade OrderDirection может быть null (все остальные поля объекта были заполнены верными значениями)? И самое интересное TradeGrid подобные трейды отображал нормально, с верным направлением - что необходимо вызвать дополнительно чтобы OrderDirection заполнился верным значением?&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15580/</id>
    <title type="text">Ни разу не вызывается? Подпишитесь на Trader.NewMyTrades и посмотрите приходят ли там сделки, равные...</title>
    <published>2012-01-12T11:10:20Z</published>
    <updated>2012-01-12T11:10:20Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Ни разу не вызывается?&lt;br /&gt;&lt;br /&gt;Подпишитесь на Trader.NewMyTrades и посмотрите приходят ли там сделки, равные qOrder.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15572/</id>
    <title type="text">Гораздо, но не полностью, к сожалению. Александр, подскажите пожалуйста, почему подобная конструкция...</title>
    <published>2012-01-11T21:13:33Z</published>
    <updated>2012-01-11T21:13:33Z</updated>
    <author>
      <name>ak</name>
      <uri>https://stocksharp.ru/users/26845/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Гораздо, но не полностью, к сожалению. &lt;br /&gt;&lt;br /&gt;Александр, подскажите пожалуйста, почему подобная конструкция также не работает с QuikTrader&amp;#39;ом:&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;
this
    .When(marketQuotingStrategy.StrategyNewOrder())
    .Do((qOrder) =&amp;gt;
    {
        this
            .When(qOrder.NewTrades())
            .Do(ProtectMyNewTrades)
            .Periodical(() =&amp;gt; qOrder.IsMatched());
    });&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Симптомы те же: ProtectMyNewTrades вызывается в RealTimeEmulationTrader и не вызывается в QuikTrader. Как же правильно защитить сделки после котирования?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15571/</id>
    <title type="text">Думаю мой вопрос примерно в эту тему. Заранее прошу сильно не ругаться т.к. только начинаю осваивать...</title>
    <published>2012-01-11T20:32:34Z</published>
    <updated>2012-01-11T20:32:34Z</updated>
    <author>
      <name>risty</name>
      <uri>https://stocksharp.ru/users/6257/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Думаю мой вопрос примерно в эту тему.&lt;br /&gt;Заранее прошу сильно не ругаться т.к. только начинаю осваивать C# и S# (4.0.14.0)&lt;br /&gt;&lt;br /&gt;Есть некая событийная стратегия FirstStrategy. По замыслу она должна торговать не более чем одним контрактом(RIH2)&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 int CurrentPosition;

public FirstStrategy() 
        {
            this.RemoveChildStrategies = false;
            this.CurrentPosition = 0;
        }

protected override void OnStarting()
        {
            
            this
                .When(base.Security.SecurityNewTrades())
                .Do(base.PositionManager.Init)
                .Once();
         

            this
                 .When(base.Security.SecurityNewTrades())
                 .Do(UpOrDown);

            this
                .When(this.Stopping())
                .ClosePosition();

            base.OnStarting();
        }

private void UpOrDown()
        {
            // если наша стратегия в процессе остановки
            if (ProcessState == ProcessStates.Stopping)
            {
                // отменяем активные заявки
                CancelActiveOrders();
                return;
            }

            //свежие сделки ?
            if ((base.Security.LastTrade != null) &amp;amp;&amp;amp; ((base.Trader.MarketTime - base.Security.LastTrade.Time).Duration() &amp;gt; new TimeSpan(0, 0, 5))) return;
            

            if ((base.Security.LastTrade.Price != 0) &amp;amp;&amp;amp; (this.LevelUP != null) &amp;amp;&amp;amp; (this.LevelDown != null))
            {

                //UpMoving
                if ((new Unit(base.Security.LastTrade.Price)) &amp;gt; this.LevelUP)
                {
                    if ((this.CurrentPosition == 0) | (this.CurrentPosition == -1))
                    {
                        _orderDirection = OrderDirections.Buy;
                        var order = this.CreateOrder(_orderDirection, Security.GetMarketPrice(_orderDirection), Volume);
                        CurrentPosition++;
                        var strategyUp = new MarketQuotingStrategy(order, new Unit(0), new Unit(0));
                        ChildStrategies.Add(strategyUp);
                        return;
                    }
                }

                //DownMoving
                if ((new Unit(base.Security.LastTrade.Price)) &amp;lt; this.LevelDown)
                {
                    if ((this.CurrentPosition == 0) | (this.CurrentPosition == 1))
                    {
                        _orderDirection = OrderDirections.Sell;
                        var order = this.CreateOrder(_orderDirection, Security.GetMarketPrice(_orderDirection), Volume);
                        CurrentPosition--;
                        var strategyDown = new MarketQuotingStrategy(order, new Unit(0), new Unit(0));
                        ChildStrategies.Add(strategyDown);
                        return;
                    }
                }
                        
            }
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;В связи с тем, что this.PositionManager.Position основной стратегии запаздывает относительно Котировния, для учета позиции использую this.CurrentPosition.&lt;br /&gt;При тестировании SampleHistoryTesting поля CurrentPosition и this.PositionManager.Position ведут себя изменяются в диапазоне -1,0,1, что и требуется.&lt;br /&gt;А при тестировании SampleRealTimeTesting this.PositionManager.Position вылетает далеко за рамки одного контракта.&lt;br /&gt;В связи с этим вопрос - как правильно учитывать позицию основной стратегии в тестах и в бою?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15503/</id>
    <title type="text">Спасибо, теперь стало все гораздо яснее. Первичность ордеров перед сделками в принятии решения на ос...</title>
    <published>2012-01-09T22:12:53Z</published>
    <updated>2012-01-09T22:12:53Z</updated>
    <author>
      <name>ak</name>
      <uri>https://stocksharp.ru/users/26845/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Спасибо, теперь стало все гораздо яснее. Первичность ордеров перед сделками в принятии решения на остановку было ключевым моментом. </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15502/</id>
    <title type="text">Какое условие уничтожения дочерней стратегии/изменения MQS.ProcessState на Stopped? Приход в MQS стр...</title>
    <published>2012-01-09T22:03:21Z</published>
    <updated>2012-01-09T22:03:21Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;Какое условие уничтожения дочерней стратегии/изменения MQS.ProcessState на Stopped? Приход в MQS стратегию события от ITrader о новой сделке (в самом простом случае), так? Так почему же MQS.NewMyTrade не появляется мгновенно после этого и только потом в том же потоке не происходит изменение ProcessState на Stopped и генерация ProcessStateChanged? Как тут вообще может возникнуть состояние гонок? &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Нет, не так.&lt;br /&gt;MQS останавливается следующим образом:&lt;br /&gt;- у стратегии меняется позиция (по заявкам(!), не по сделкам). По умолчанию мониторим изменение позиции стратегии именно по ордерам, а не сделкам.&lt;br /&gt;- проверяется условие можем ли окончить&lt;br /&gt;- если да - заканчиваем&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;либо - по TimeOut.&lt;br /&gt;&lt;br /&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;Спасибо, понял. Но если событие MQS.NewMyTrades может не успеть выполниться до уничтожения объекта стратегии, где гарантия, что события на порожденные ею orders успеют выполниться? Или эти orders никак не затрагиваются при dispose стратегии?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Стратегия останавливается либо по таймауту, либо по позиции. Позиция меняется по ордерам.&lt;br /&gt;Следовательно ордеры придут.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15501/</id>
    <title type="text">У MQS есть событие NewOrders для этих новых ордеров можно создавать любые правила которые угодны Спа...</title>
    <published>2012-01-09T21:54:15Z</published>
    <updated>2012-01-09T21:54:15Z</updated>
    <author>
      <name>ak</name>
      <uri>https://stocksharp.ru/users/26845/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Alexander Mukhanchikov &lt;a href="https://stocksharp.ru/posts/m/15499/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;У MQS есть событие NewOrders&lt;br /&gt;для этих новых ордеров можно создавать любые правила которые угодны&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Спасибо, понял. Но если событие MQS.NewMyTrades может не успеть выполниться до уничтожения объекта стратегии, где гарантия, что события на порожденные ею orders успеют выполниться? Или эти orders никак не затрагиваются при dispose стратегии?&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15500/</id>
    <title type="text">И да, вариант с RemoveChildStrategies намного проще. Безусловно, но подобные сообщения в логе напряг...</title>
    <published>2012-01-09T21:49:01Z</published>
    <updated>2012-01-09T21:49:01Z</updated>
    <author>
      <name>ak</name>
      <uri>https://stocksharp.ru/users/26845/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;И да, вариант с RemoveChildStrategies намного проще.&lt;/div&gt;&lt;/div&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;SLS             | 05.01.2012 20:40:30.000 | Внимание   | Котирование в состоянии Stopped.&lt;/div&gt;&lt;/div&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;События из QuikTrader, да и из любого трейдера не синхронны - нам событие о новой сделке может придти до \ после события о новом ордере.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Какое условие уничтожения дочерней стратегии/изменения MQS.ProcessState на Stopped? Приход в MQS стратегию события от ITrader о новой сделке (в самом простом случае), так? Так почему же MQS.NewMyTrade не появляется мгновенно после этого и только потом в том же потоке не происходит изменение ProcessState на Stopped и генерация ProcessStateChanged? Как тут вообще может возникнуть состояние гонок? &lt;br /&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15499/</id>
    <title type="text">Нет, внутрях MQS не будет ничего меняться. События из QuikTrader, да и из любого трейдера не синхрон...</title>
    <published>2012-01-09T21:28:33Z</published>
    <updated>2012-01-09T21:28:33Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Нет, внутрях MQS не будет ничего меняться.&lt;br /&gt;События из QuikTrader, да и из любого трейдера не синхронны - нам событие о новой сделке может придти до \ после события о новом ордере.&lt;br /&gt;&lt;br /&gt;У MQS есть событие NewOrders&lt;br /&gt;для этих новых ордеров можно создавать любые правила которые угодны&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;И да, вариант с RemoveChildStrategies намного проще.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15498/</id>
    <title type="text">Большое спасибо за ответ, Александр. Сразу возникает вопрос, не видите ли вы способа внутри MQS синх...</title>
    <published>2012-01-09T21:20:02Z</published>
    <updated>2012-01-09T21:20:02Z</updated>
    <author>
      <name>ak</name>
      <uri>https://stocksharp.ru/users/26845/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Большое спасибо за ответ, Александр. &lt;br /&gt;&lt;br /&gt;Сразу возникает вопрос, не видите ли вы способа внутри MQS синхронизировать генерацию события NewMyTrade и смены ProcessState стратегии (и генерации ProcessStateChanged соответственно), чтобы событие нового трейда гарантированно файрилось до того, как стратегия отрапортует о своем завершении? Сложно что-то предполагать не видя реализации, но судя по всему метод генерирующий NewMyTrade (что-нибудь вроде OnNewMyTrade) слишком долго ждет какого-то ресурса (шлюза ITrader, например, пока другие события успешно генерируются), может его можно пересмотреть? Или, например, заставить Strategy.DisposeManaged() (если именно этот метод вызывается для уничтожения родительской стратегии - дочерней) как-то подождать завершения генерации всех событий. &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;/div&gt;&lt;/div&gt;&lt;br /&gt;Вы имеете ввиду order переданный в конструктор MQS? Так ведь он не имеет ничего общего с ордером, который будет на самом деле создан и исполнен в ходе котирования.&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;
this.
When(order.Changed())
.Do(() =&amp;gt; {
    int i = 1;
});&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Или я неправильно вас понял?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15462/</id>
    <title type="text">Дело в том, что порой стратегия MQS может завершится раньше чем придёт событие о новой сделки (NewMy...</title>
    <published>2012-01-08T21:55:32Z</published>
    <updated>2012-01-08T21:55:32Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Дело в том, что порой стратегия MQS может завершится раньше чем придёт событие о новой сделки (NewMyTrades)&lt;br /&gt;Что у вас и происходит.&lt;br /&gt;&lt;br /&gt;Есть 2 выхода:&lt;br /&gt;1) Поставить флаг RemoveChildStrategies у дочерней стратегии в false - тогда стратегия MQS после завершения не будет удаляться и события должны придти;&lt;br /&gt;2) Реагировать не на событие новых сделок, а на событие изменения отправленного ордера.&lt;br /&gt;&lt;br /&gt;P.S. Доступ на codeplex даём тем, кто готов вносить изменения в исходный код, выложенный там.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15446/</id>
    <title type="text">как понимаете что не вызывается обработчик? В хронологическом порядке как обнаруживал проблему: Не с...</title>
    <published>2012-01-06T19:13:43Z</published>
    <updated>2012-01-06T19:13:43Z</updated>
    <author>
      <name>ak</name>
      <uri>https://stocksharp.ru/users/26845/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Alexander Mukhanchikov &lt;a href="https://stocksharp.ru/posts/m/15445/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;как понимаете что не вызывается обработчик? &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;В хронологическом порядке как обнаруживал проблему:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Не создаются защитные стратегии для совершенных сделок&lt;br /&gt;&lt;li&gt;Breakpoint на первой строчке внутри цикла foreach (MyTrade trade in trades) не срабатывает при отладке&lt;br /&gt;&lt;li&gt;Тестовое сообщение в лог, вставленное первой строчкой в метод ProtectMyNewTrades, не появляется в логе&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Alexander Mukhanchikov &lt;a href="https://stocksharp.ru/posts/m/15445/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;а сделки-то у MQS проходят? &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Да. Более того, событие ITrader.NewMyTrades вызывается нормально, подписавшись на него, я, например, нормально заполняю TradeGrid новыми сделками.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15445/</id>
    <title type="text">как понимаете что не вызывается обработчик? а сделки-то у MQS проходят?</title>
    <published>2012-01-06T18:33:57Z</published>
    <updated>2012-01-06T18:33:57Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">как понимаете что не вызывается обработчик? а сделки-то у MQS проходят?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/15444/</id>
    <title type="text">Здравствуйте, коллеги. Столкнулся с проблемой: в боевом режиме, т.е. при использовании объекта QuikT...</title>
    <published>2012-01-06T18:00:09Z</published>
    <updated>2012-01-06T18:00:09Z</updated>
    <author>
      <name>ak</name>
      <uri>https://stocksharp.ru/users/26845/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Здравствуйте, коллеги.&lt;br /&gt;&lt;br /&gt;Столкнулся с проблемой: в боевом режиме, т.е. при использовании объекта QuikTrader, не вызывается событие NewMyTrades у MarketQuotingStrategy, однако в демо режиме, т.е. при использовании new RealTimeEmulationTrader&amp;lt;QuikTrader&amp;gt;, событие вызывается как положено. В обоих случаях событие ITrader.NewMyTrades вызывается нормально.&lt;br /&gt;&lt;br /&gt;Важный момент, проблема наблюдается в последних версиях, проверял в 13417, 12460. Однако все работает в версии 12366. К сожалению, точнее определить версию в которой начала наблюдаться ошибка не могу. Из-за неудобного способа получения новых версий (codeplex download archive) обновляюсь не часто. Пользуясь моментом, хочу попросить доступ на чтение к репозиторию (мой id на codeplex: akramarev).&lt;br /&gt;&lt;br /&gt;Спасибо за помощь.&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;Значимые на мой взгляд детали.&lt;br /&gt;&lt;br /&gt;Инициализация объекта типа ITrader:&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;
if (rbFightMode.IsChecked.Value)
{
    _trader = new QuikTrader(this.Path.Text);
}
else
{
    _trader = new RealTimeEmulationTrader&amp;lt;QuikTrader&amp;gt;(new QuikTrader(this.Path.Text));
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Выставление order&amp;#39;а внутри стратегии:&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;
if (UseQuoting)
{
    MarketQuotingStrategy marketQuotingStrategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
    marketQuotingStrategy.NewMyTrades += ProtectMyNewTrades;
    base.ChildStrategies.Add(marketQuotingStrategy);
}
else
{
    base.RegisterOrder(order);
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Обработчик события marketQuotingStrategy.NewMyTrades (именно этот обработчик не вызвается в боевом режиме):&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 ProtectMyNewTrades(IEnumerable&amp;lt;MyTrade&amp;gt; trades)
{
    var basket = new BasketStrategy(BasketStrategyFinishModes.All);

    foreach (MyTrade trade in trades)
    {
        var s = new BasketStrategy(BasketStrategyFinishModes.First) { Name = &amp;quot;ProtectStrategy&amp;quot; };

        var takeProfit = new TakeProfitStrategy(trade, this.TakeProfitUnit)
        {
            Name = &amp;quot;TakeProfitStrategy&amp;quot;,
            BestPriceOffset = 15,
            PriceOffset = 3,
            UseQuoting = this.UseQuoting
        };

        var stopLoss = new StopLossStrategy(trade, this.StopLossUnit)
        {
            Name = &amp;quot;StopLossStrategy&amp;quot;,
            PriceOffset = 3
        };

        s.ChildStrategies.Add(takeProfit);
        s.ChildStrategies.Add(stopLoss);

        basket.ChildStrategies.Add(s);
    }

    base.ChildStrategies.Add(basket);
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Лог работы при использовании RealTimeEmulationTrader&amp;lt;QuikTrader&amp;gt;:&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;MQS             | 05.01.2012 12:30:05.081 |            | Заканчиваем котирование.&lt;br /&gt;MQS             | 05.01.2012 12:30:05.097 |            | Стратегия остановлена.&lt;br /&gt;MQS             | 05.01.2012 12:30:05.081 |            | Стратегия останавливается.&lt;br /&gt;MQS             | 05.01.2012 12:30:05.081 |            | Позиция изменилась на -2. Оставшийся объем 0.&lt;br /&gt;StopLossStrategy | 05.01.2012 12:30:05.081 |            | Котирование на Buy объема 2.&lt;br /&gt;StopLossStrategy | 05.01.2012 12:30:05.081 |            | Защита сделки 1 заявки 43787560.&lt;br /&gt;StopLossStrategy | 05.01.2012 12:30:05.081 |            | Стратегия запущена.&lt;br /&gt;TakeProfitStrategy | 05.01.2012 12:30:05.081 |            | Котирование на Buy объема 2.&lt;br /&gt;TakeProfitStrategy | 05.01.2012 12:30:05.081 |            | Защита сделки 1 заявки 43787560.&lt;br /&gt;TakeProfitStrategy | 05.01.2012 12:30:05.081 |            | Стратегия запущена.&lt;br /&gt;ProtectStrategy | 05.01.2012 12:30:05.081 |            | Стратегия запущена.&lt;br /&gt;BS              | 05.01.2012 12:30:05.081 |            | Стратегия запущена.&lt;br /&gt;MQS             | 05.01.2012 12:30:05.065 |            | Новая Sell сделка 1 по цене 8449 на 2 заявки 43787560.&lt;br /&gt;EmaEventModelStrategy | 05.01.2012 12:30:05.065 |            | Новая Sell сделка 1 по цене 8449 на 2 заявки 43787560.&lt;br /&gt;MQS             | 05.01.2012 12:30:05.065 |            | Перекотирование зарегистрировано для заявки 43787561 на Sell с ценой 8450 объемом 2.&lt;br /&gt;MQS             | 05.01.2012 12:30:05.065 |            | Котирование заявки 43787560 на Sell с ценой 8449 объемом 2.&lt;br /&gt;MQS             | 05.01.2012 12:30:05.065 |            | Лучший бид 8449 и лучший аск 8450.&lt;br /&gt;MQS             | 05.01.2012 12:30:05.065 |            | Цена текущей 8449 и лучшей 8450.&lt;br /&gt;MQS             | 05.01.2012 12:30:04.063 |            | Заявка 43787560 принята биржей.&lt;br /&gt;MQS             | 05.01.2012 12:30:04.063 |            | Перекотирование зарегистрировано для заявки 43787560 на Sell с ценой 8449 объемом 2.&lt;br /&gt;MQS             | 05.01.2012 12:30:04.063 |            | Котирование заявки 43787559 на Sell с ценой 8450 объемом 2.&lt;br /&gt;MQS             | 05.01.2012 12:30:04.063 |            | Лучший бид 8448 и лучший аск 8449.&lt;br /&gt;MQS             | 05.01.2012 12:30:04.063 |            | Цена текущей 8450 и лучшей 8449.&lt;br /&gt;MQS             | 05.01.2012 12:30:03.061 |            | Заявка 43787559 принята биржей.&lt;br /&gt;MQS             | 05.01.2012 12:30:03.061 |            | Перекотирование зарегистрировано для заявки 43787559 на Sell с ценой 8450 объемом 2.&lt;br /&gt;MQS             | 05.01.2012 12:30:03.061 |            | Котирование заявки 43787558 на Sell с ценой 8454 объемом 2.&lt;br /&gt;MQS             | 05.01.2012 12:30:03.061 |            | Лучший бид 8449 и лучший аск 8450.&lt;br /&gt;MQS             | 05.01.2012 12:30:03.061 |            | Цена текущей 8454 и лучшей 8450.&lt;br /&gt;MQS             | 05.01.2012 12:30:02.059 |            | Заявка 43787558 принята биржей.&lt;br /&gt;MQS             | 05.01.2012 12:30:02.059 |            | Перекотирование зарегистрировано для заявки 43787558 на Sell с ценой 8454 объемом 2.&lt;br /&gt;MQS             | 05.01.2012 12:30:02.059 |            | Котирование заявки 43787557 на Sell с ценой 8455 объемом 2.&lt;br /&gt;MQS             | 05.01.2012 12:30:02.059 |            | Лучший бид 8451 и лучший аск 8454.&lt;br /&gt;MQS             | 05.01.2012 12:30:02.059 |            | Цена текущей 8455 и лучшей 8454.&lt;br /&gt;MQS             | 05.01.2012 12:30:01.057 |            | Заявка 43787557 принята биржей.&lt;br /&gt;MQS             | 05.01.2012 12:30:01.057 |            | Перекотирование зарегистрировано для заявки 43787557 на Sell с ценой 8455 объемом 2.&lt;br /&gt;MQS             | 05.01.2012 12:30:01.057 |            | Котирование заявки 43787556 на Sell с ценой 8456 объемом 2.&lt;br /&gt;MQS             | 05.01.2012 12:30:01.057 |            | Лучший бид 8454 и лучший аск 8455.&lt;br /&gt;MQS             | 05.01.2012 12:30:01.057 |            | Цена текущей 8456 и лучшей 8455.&lt;br /&gt;MQS             | 05.01.2012 12:30:00.383 |            | Заявка 43787556 принята биржей.&lt;br /&gt;MQS             | 05.01.2012 12:30:00.368 |            | Заявка 43787556 на Sell отправлена с ценой 8456 объемом 2.&lt;br /&gt;MQS             | 05.01.2012 12:30:00.352 |            | Регистрация новой заявки на Sell с ценой 8456 и объемом 2.&lt;br /&gt;MQS             | 05.01.2012 12:30:00.352 |            | Лучший бид 8455 и лучший аск 8456.&lt;br /&gt;MQS             | 05.01.2012 12:30:00.352 |            | Цена текущей NULL и лучшей 8456.&lt;br /&gt;MQS             | 05.01.2012 12:30:00.321 |            | Котирование на Sell объема 2.&lt;br /&gt;MQS             | 05.01.2012 12:30:00.321 |            | Стратегия запущена.&lt;br /&gt;EmaEventModelStrategy | 05.01.2012 12:30:00.305 |            | Xing Down appeared (CandleTime: 05.01.2012 12:25:00), and filter allowed the deal.&lt;br /&gt;EmaEventModelStrategy | 05.01.2012 12:09:50.704 |            | Стратегия запущена.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Лог работы при использовании QuikTrader:&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;MQS             | 06.01.2012 15:10:47.107 |            | Позиция изменилась на -2. Оставшийся объем 0.&lt;br /&gt;EmaEventModelStrategy | 06.01.2012 10:35:57.031 |            | Стратегия запущена.&lt;br /&gt;EmaEventModelStrategy | 06.01.2012 12:15:01.821 |            | Xing Up appeared (CandleTime: 06.01.2012 12:10:00), but filter blocked the deal.&lt;br /&gt;EmaEventModelStrategy | 06.01.2012 15:10:18.733 |            | Xing Down appeared (CandleTime: 06.01.2012 15:05:00), and filter allowed the deal.&lt;br /&gt;MQS             | 06.01.2012 15:10:18.765 |            | Стратегия запущена.&lt;br /&gt;MQS             | 06.01.2012 15:10:18.765 |            | Котирование на Sell объема 2.&lt;br /&gt;MQS             | 06.01.2012 15:10:18.796 |            | Цена текущей NULL и лучшей 8332.&lt;br /&gt;MQS             | 06.01.2012 15:10:18.796 |            | Лучший бид 8330 и лучший аск 8332.&lt;br /&gt;MQS             | 06.01.2012 15:10:18.796 |            | Регистрация новой заявки на Sell с ценой 8332 и объемом 2.&lt;br /&gt;MQS             | 06.01.2012 15:10:18.812 |            | Заявка 38153494 на Sell отправлена с ценой 8332 объемом 2.&lt;br /&gt;MQS             | 06.01.2012 15:10:18.984 |            | Заявка 38153494 принята биржей.&lt;br /&gt;MQS             | 06.01.2012 15:10:26.788 |            | Цена текущей 8332 и лучшей 8331.&lt;br /&gt;MQS             | 06.01.2012 15:10:26.788 |            | Лучший бид 8330 и лучший аск 8331.&lt;br /&gt;MQS             | 06.01.2012 15:10:26.788 |            | Котирование заявки 38153494 на Sell с ценой 8332 объемом 2.&lt;br /&gt;MQS             | 06.01.2012 15:10:26.788 |            | Перекотирование зарегистрировано для заявки 38153495 на Sell с ценой 8331 объемом 2.&lt;br /&gt;MQS             | 06.01.2012 15:10:26.977 |            | Заявка 38153495 принята биржей.&lt;br /&gt;MQS             | 06.01.2012 15:10:42.867 |            | Цена текущей 8331 и лучшей 8330.&lt;br /&gt;MQS             | 06.01.2012 15:10:42.867 |            | Лучший бид 8329 и лучший аск 8330.&lt;br /&gt;MQS             | 06.01.2012 15:10:42.867 |            | Котирование заявки 38153495 на Sell с ценой 8331 объемом 2.&lt;br /&gt;MQS             | 06.01.2012 15:10:42.867 |            | Перекотирование зарегистрировано для заявки 38153496 на Sell с ценой 8330 объемом 2.&lt;br /&gt;MQS             | 06.01.2012 15:10:43.134 |            | Заявка 38153496 принята биржей.&lt;br /&gt;EmaEventModelStrategy | 06.01.2012 15:10:47.107 |            | Новая позиция -2.&lt;br /&gt;MQS             | 06.01.2012 15:10:47.107 |            | Новая позиция -2.&lt;br /&gt;MQS             | 06.01.2012 15:10:47.107 |            | Заканчиваем котирование.&lt;br /&gt;MQS             | 06.01.2012 15:10:47.107 |            | Стратегия останавливается.&lt;br /&gt;MQS             | 06.01.2012 15:10:47.122 |            | Стратегия остановлена.&lt;br /&gt;EmaEventModelStrategy | 06.01.2012 15:10:47.154 |            | Новая Sell сделка 485257991 по цене 8330 на 2 заявки 38153496.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>