﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Вопрос по MarketQuotingStrategy и исполнению заявок по цене вне рынка</title>
  <id>~/topic/2932/vopros-po-marketquotingstrategy-i-ispolneniyu-zayavok-po-tsene-vne-rynka/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-04T16:08:07Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=2932" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/20883/</id>
    <title type="text">Добрый день. Попробовал работать со стоп заявками, до ума так и не получилось довести (уровень прогр...</title>
    <published>2012-08-16T23:32:32Z</published>
    <updated>2012-08-16T23:32:32Z</updated>
    <author>
      <name>Самунджян Артем</name>
      <uri>https://stocksharp.com/users/675/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Acuarus &lt;a href="https://stocksharp.com/posts/m/20840/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Добрый день.&lt;br /&gt;Попробовал работать со стоп заявками, до ума так и не получилось довести (уровень программирования оставляет желать намного лучшего), в связи с чем задам прямой вопрос:&lt;br /&gt;&lt;br /&gt;Есть конструкция:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
var order00 = this.CreateOrder(_orderDirections, Security.BestAsk.Price);
var orderB1 = this.CreateOrder(_orderDirections, order00.Price + 100);
var orderB2 = this.CreateOrder(_orderDirections, order00.Price + 200);

           order00.WhenMatched()
           .Do(()=&amp;gt;
                   {
                    RegisterOrder(orderB1);
                    })
          .Once()
          .Apply(this);

            orderB1. WhenMatched()
                .Do(() =&amp;gt;
                {
                    RegisterOrder(orderB2);
                })
          .Once()
          .Apply(this);

RegisterOrder(order00);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Как в данном случае красиво установить тейк профит и стоп лосс для:&lt;br /&gt;order00 - тейк на 100 пунктов выше order00.Price, стоп на 150 ниже order00.Price&lt;br /&gt;orderB1 - тейк на 200 пунктов выше order00.Price, стоп на 300 ниже order00.Price&lt;br /&gt;orderB2 - тейк на 400 пунктов выше order00.Price, стоп на 500 ниже order00.Price&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;В идеале для одной заявки защищать нужно все сделки , вот так . TakeProfitStoplossStrategy сразу работает с двумя стратегиями&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

 var order00 = new Order();
                order00.WhenNewTrades()
                .Do(trades =&amp;gt;
                    {
                        foreach (var myTrade in trades)
                        {
                             var tp = new TakeProfitStrategy(myTrade, new Unit(order00.Price+100,UnitTypes.Limit));
                            var sl = new StopLossStrategy(myTrade, new Unit(order00.Price - 150, UnitTypes.Limit));
                            var tpsl = new TakeProfitStopLossStrategy(tp, sl);
                            ChildStrategies.Add(tpsl);
                        }
                    })
               .Apply(this);

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/20840/</id>
    <title type="text">Добрый день. Попробовал работать со стоп заявками, до ума так и не получилось довести (уровень прогр...</title>
    <published>2012-08-15T14:08:05Z</published>
    <updated>2012-08-15T14:08:05Z</updated>
    <author>
      <name>Acuarus</name>
      <uri>https://stocksharp.com/users/5906/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <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;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
var order00 = this.CreateOrder(_orderDirections, Security.BestAsk.Price);
var orderB1 = this.CreateOrder(_orderDirections, order00.Price + 100);
var orderB2 = this.CreateOrder(_orderDirections, order00.Price + 200);

           order00.WhenMatched()
           .Do(()=&amp;gt;
                   {
                    RegisterOrder(orderB1);
                    })
          .Once()
          .Apply(this);

            orderB1. WhenMatched()
                .Do(() =&amp;gt;
                {
                    RegisterOrder(orderB2);
                })
          .Once()
          .Apply(this);

RegisterOrder(order00);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Как в данном случае красиво установить тейк профит и стоп лосс для:&lt;br /&gt;order00 - тейк на 100 пунктов выше order00.Price, стоп на 150 ниже order00.Price&lt;br /&gt;orderB1 - тейк на 200 пунктов выше order00.Price, стоп на 300 ниже order00.Price&lt;br /&gt;orderB2 - тейк на 400 пунктов выше order00.Price, стоп на 500 ниже order00.Price</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/20803/</id>
    <title type="text">Добрый день. Вопросы от новичка: 1. Есть конструкция: Как после этой конструкции получить цену по ко...</title>
    <published>2012-08-13T16:39:14Z</published>
    <updated>2012-08-13T16:39:14Z</updated>
    <author>
      <name>Самунджян Артем</name>
      <uri>https://stocksharp.com/users/675/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Acuarus &lt;a href="https://stocksharp.com/posts/m/20795/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Добрый день.&lt;br /&gt;Вопросы от новичка:&lt;br /&gt;&lt;br /&gt;1. Есть конструкция:&lt;br /&gt;&lt;br /&gt;Как после этой конструкции получить цену по которой реально исполнен order00, для того чтобы другие ордеры регистрировать опираясь от цены исполненного order00  ?&lt;br /&gt;&lt;br /&gt;2. Есть конструкция, смысл которой тупо купить по рынку 1 фьюч и поставить встречные ордера order00SL (стоплосс) и order00TP (тейкпрофит). После срабатывания какого то из них, оставшейся снимается. Собственно:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Добрый , советую вам перейти на новую версию библиотеки .&lt;br /&gt;&lt;br /&gt;1.Вот такой примерно алгоритм, основываясь на том , что позиция может быть набрана по разным ценам.&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

                    var order = this.BuyAtMarket();//только для акций
                    var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
                    strategy.WhenStopped()
                        .Do(() =&amp;gt;
                            {
                                var holesum = strategy.MyTrades.Sum(trade =&amp;gt; trade.Trade.Price*trade.Trade.Volume);
                                //средняя цена исполненной заявки
                               Debug.Print(&amp;quot;Средняя цена исполнения {0}&amp;quot;,holesum/strategy.MyTrades.Sum(t =&amp;gt; t.Trade.Volume));
                            })
                        .Once()
                        .Apply(this);
                    ChildStrategies.Add(strategy);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;2. Вы используете просто заявки , а не стратегии , которые отслеживают текущее состояние цены. В данном случае , вам нужно использовать либо стоп-заявки , либо дочерние &lt;a href="http://stocksharp.com/doc/?topic=html/63952fce-6e43-4427-985a-1654e8d9cfc1.htm" title="http://stocksharp.com/doc/?topic=html/63952fce-6e43-4427-985a-1654e8d9cfc1.htm"&gt;стратегии(стоплосс и тейкпрофит)&lt;/a&gt; &lt;br /&gt;А так ваш алгоритм работает , к примеру вы купили, затем выставляете сразу две продажи одну выше , другую ниже , в итоге такая которая ниже выполняется &amp;quot; как по рынку&amp;quot;, а та , что выше снимается.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/20795/</id>
    <title type="text">Добрый день. Вопросы от новичка: 1. Есть конструкция: var strategy = new MarketQuotingStrategy(order...</title>
    <published>2012-08-13T07:25:02Z</published>
    <updated>2012-08-13T07:25:02Z</updated>
    <author>
      <name>Acuarus</name>
      <uri>https://stocksharp.com/users/5906/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Добрый день.&lt;br /&gt;Вопросы от новичка:&lt;br /&gt;&lt;br /&gt;1. Есть конструкция:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
var strategy = new MarketQuotingStrategy(order00, 100, 40);
ChildStrategies.Add(strategy);&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Как после этой конструкции получить цену по которой реально исполнен order00, для того чтобы другие ордеры регистрировать опираясь от цены исполненного order00  ?&lt;br /&gt;&lt;br /&gt;2. Есть конструкция, смысл которой тупо купить по рынку 1 фьюч и поставить встречные ордера order00SL (стоплосс) и order00TP (тейкпрофит). После срабатывания какого то из них, оставшейся снимается. Собственно:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
var order00 = this.CreateOrder(_orderDirections,Security.GetMarketPrice(_orderDirections, 50));
          
  //создаём strategyRule по исполнению этой заявки
     this.When(order00.Matched())
     .Do(o =&amp;gt;
         {
          //как только эта заявка исполняется ,выставляем тейк и стоп (на step пунктов)
          var order00TP = this.CreateOrder(order00.Direction.Invert(), order00.Price + step);
          var order00SL = this.CreateOrder(order00.Direction.Invert(), order00.Price - step);

                              this.When(order00TP.Matched()) // если исполнился профит от order00 снимаем стоп
                              .Do(u =&amp;gt;
                               {
                                   Debug.WriteLine(&amp;quot;Исполнен профит order00TP&amp;quot;);
                                   Trader.CancelOrder(order00SL);
                                   Debug.WriteLine(&amp;quot;Отменен стоп order00SL&amp;quot;);
                               })
                               .Once();
                                                          
                               this.When(order00SL.Matched()) // если исполнился стоп от order0 снимаем профит
                               .Do(u1 =&amp;gt;
                               {
                                   Debug.WriteLine(&amp;quot;Исполнен стоп order00SL&amp;quot;);
                                   Trader.CancelOrder(order00TP);
                                   Debug.WriteLine(&amp;quot;Отменен профит order00TP&amp;quot;);
                               })
                               .Once();
                            RegisterOrder(order00TP);
                            RegisterOrder(order00SL);

                        })
                .Once();
   RegisterOrder(order00);&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;После запуска кода, по рынку исполняется order00 и сразу исполняется order00SL (стоп-лосс), отменяется order00TP (тейкпрофит). Все происходит моментально. Причем ордер order00SL исполняется по цене далеко от текущей. Ставлю стоп и профит на 2000 пунктов (фьючерс РТС) ниже и выше, все равно исполняется моментально, вне текущей цены. Трейдер - QUIK Junior. Демо доступ. Инструмент – RIU2.&lt;br /&gt;В чем может быть дело ? Или это издержки демо доступа ?&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>