﻿<?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">Как добится корректного отображения Strategy.Position?</title>
  <id>~/topic/3359/kak-dobitsya-korrektnogo-otobrazheniya-strategy_position/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-21T10:46:43Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=3359" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/23870/</id>
    <title type="text">Sergey Masyura: Если входите одним ордером, сделайте его членом класса _order. При входе в метод мож...</title>
    <published>2013-02-07T21:59:51Z</published>
    <updated>2013-02-07T21:59:51Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(23869)" rel="nofollow" target="_blank"&gt;Sergey Masyura&lt;/a&gt;:&lt;/strong&gt;
Если входите одним ордером, сделайте его членом класса _order. При входе в метод можно проверять его на null и остаток и только после этого перетирать.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Лучше вообще состояния не использовать. Или минимизировать эти места. Event based подход предполагает state less.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/23869/</id>
    <title type="text">yammm: Не совсем понимаю как дождаться корректного отображения Strategy.Position, простая проверка н...</title>
    <published>2013-02-07T20:31:51Z</published>
    <updated>2013-02-07T20:31:51Z</updated>
    <author>
      <name>Sergey Masyura</name>
      <uri>https://stocksharp.com/users/701/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(23867)" rel="nofollow" target="_blank"&gt;yammm&lt;/a&gt;:&lt;/strong&gt;
Не совсем понимаю как дождаться корректного отображения Strategy.Position, простая проверка не работает, иногда проскакивают лишние ордера.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;private void ProccesDepth(bool isDirectionBuy)
{
lock (_sync)
{
var order = new Order
{
Direction = isDirectionBuy ? OrderDirections.Buy : OrderDirections.Sell,
Price = isDirectionBuy ? _depth.BestBid.Price : _depth.BestAsk.Price,
Type = OrderTypes.Limit,
Volume = VolumeValue,
Comment = &amp;quot;Entry&amp;quot;,
};&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;            order
                .WhenActivated()
                .Do(() =&amp;gt;
                        {
                            if(!checkCondition)
                            {
                                CancelOrder(order);
                            }
                        })
                .Once()
                .Apply(this);
            

            order
                .WhenNewTrades()
                .Do(SetProtectedOrders)
                .Apply(this);

            // Узкое место
            if (checkCondition &amp;amp;&amp;amp; Position == 0)
                RegisterOrder(order);
        }
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;
Если ордер зарегистрирован, но еще не исолнился - очевидно позиция ноль. Соответсвенно, если зайти в этот метод с выставленным, но еще не исполненным ордером - выставится второй.

Если входите одним ордером, сделайте его членом класса _order. При входе в метод можно проверять его на null и остаток и только после этого перетирать.
&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/23868/</id>
    <title type="text"> // Узкое место if (checkCondition &amp;amp;&amp;amp; !_inPosition) { RegisterOrder(order); _inPosition = true; } Уд...</title>
    <published>2013-02-07T19:41:02Z</published>
    <updated>2013-02-07T19:42:26Z</updated>
    <author>
      <name>yammm</name>
      <uri>https://stocksharp.com/users/6162/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;pre&gt;&lt;code class="language-csharp"&gt; // Узкое место
                if (checkCondition &amp;amp;&amp;amp; !_inPosition)
                {
                    RegisterOrder(order);
                    _inPosition = true;
                }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Удалось решить глобальным булом который обнуляется при срабатывании тейка или стопа, но если есть какой-то более лаконичный вариант, буду признателен если поделитесь.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/23867/</id>
    <title type="text">Не совсем понимаю как дождаться корректного отображения Strategy.Position, простая проверка не работ...</title>
    <published>2013-02-07T16:45:21Z</published>
    <updated>2013-02-07T16:49:47Z</updated>
    <author>
      <name>yammm</name>
      <uri>https://stocksharp.com/users/6162/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Не совсем понимаю как дождаться корректного отображения Strategy.Position, простая проверка не работает, иногда проскакивают лишние ордера.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt; private void ProccesDepth(bool isDirectionBuy)
        {
            lock (_sync)
            {
                var order = new Order
                                {
                                    Direction = isDirectionBuy ? OrderDirections.Buy : OrderDirections.Sell,
                                    Price = isDirectionBuy ? _depth.BestBid.Price : _depth.BestAsk.Price,
                                    Type = OrderTypes.Limit,
                                    Volume = VolumeValue,
                                    Comment = &amp;quot;Entry&amp;quot;,
                                };

                order
                    .WhenActivated()
                    .Do(() =&amp;gt;
                            {
                                if(!checkCondition)
                                {
                                    CancelOrder(order);
                                }
                            })
                    .Once()
                    .Apply(this);
                

                order
                    .WhenNewTrades()
                    .Do(SetProtectedOrders)
                    .Apply(this);

                // Узкое место
                if (checkCondition &amp;amp;&amp;amp; Position == 0)
                    RegisterOrder(order);
            }
        }
&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>