﻿<?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">Как подхватить в стратегии текущий размер позиции</title>
  <id>~/topic/1312/kak-podhvatit-v-strategii-tekushshii-razmer-pozitsii/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-05T22:23:12Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=1312" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/5368/</id>
    <title type="text"> Можно, наверное, MyTrade создать и добавить в Trades, но что-то не пойму как, да и способ это криво...</title>
    <published>2011-01-09T23:22:46Z</published>
    <updated>2011-01-09T23:22:46Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;aerv &lt;a href="https://stocksharp.ru/posts/m/5364/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Можно, наверное, MyTrade создать и добавить в Trades, но что-то не пойму как, да и способ это кривой.&lt;br /&gt;Вариант со _strategy.PositionManager.StartPosition мне кажется наиболее правильным. Для вычисления текущей позиции нужно будет лишь к вычисленному по трейдам числу прибавлять это значение. Так, пожалуй, и сделаю.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Наиболее правильный будет как раз не менять существующий алгоритм подсчета, а подсунуть псевдо-данные для вычисления, произведя некоторую эмуляцию... Сделайте наследник от QuikTrader и в нем принудительно вызовите метод &lt;a href="http://stocksharp.com/doc/help/html/M_Ecng_Trading_Algo_BaseTrader_GetMyTrade_5_f273a04f.htm" title="http://stocksharp.com/doc/help/html/M_Ecng_Trading_Algo_BaseTrader_GetMyTrade_5_f273a04f.htm"&gt;GetMyTrade&lt;/a&gt;. Этот метод возвращается сделку, и если она отсутсвует, то создает ее. Создавать объекты Order и MyTrade можно через new, внутри нет никакого специального подсчета.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/5364/</id>
    <title type="text">Стратегий по одной и той же бумаге может быть несколько. Если у Вас не так, используйте Trader.Posit...</title>
    <published>2011-01-09T17:06:40Z</published>
    <updated>2011-01-09T17:44:37Z</updated>
    <author>
      <name>aerv</name>
      <uri>https://stocksharp.ru/users/28151/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.ru/posts/m/5360/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Стратегий по одной и той же бумаге может быть несколько. Если у Вас не так, используйте Trader.Positions. Если же все таки так, то надо самостоятельно где-то в своем коде восстанавливать текущую позицию.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Это мне понятно, мне непонятно:&lt;br /&gt;как в своем коде указать стратегии, что она уже имеет позицию по бумаге и должна ее дальше &amp;quot;вести&amp;quot;, в соответствии с заложенной в стратегии логикой.&lt;br /&gt;Я ожидал нечто подобное:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;var pos = _trader.Positions.FirstOrDefault(p =&amp;gt; p.Security.Code == _secCode);&lt;br /&gt;_strategy = new SmaStrategy();&lt;br /&gt;_strategy.PositionManager.Init( pos != null ? pos.CurrentValue : 0 );&lt;br /&gt;// Или&lt;br /&gt;_strategy.PositionManager.StartPosition = pos != null ? pos.CurrentValue : 0;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;но так нельзя, подскажите, пожалуйста, как можно.&lt;br /&gt;Сохраненной информации о старых трейдах по этой бумаге у меня, допустим, нет.&lt;br /&gt;Закрывать позицию вручную в терминале и потом открыть с помощью стратегии, конечно можно, но это не подходящий вариант для меня.&lt;br /&gt;&lt;br /&gt;Можно, наверное, MyTrade создать и добавить в Trades, но что-то не пойму как, да и способ это кривой.&lt;br /&gt;Вариант со _strategy.PositionManager.StartPosition мне кажется наиболее правильным. Для вычисления текущей позиции нужно будет лишь к вычисленному по трейдам числу прибавлять это значение. Так, пожалуй, и сделаю.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/5360/</id>
    <title type="text"> Научите меня, пожалуйста, как поступить или поправьте, если ошибаюсь. А может просто, в стратегии и...</title>
    <published>2011-01-08T21:40:48Z</published>
    <updated>2011-01-08T21:40:48Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;aerv &lt;a href="https://stocksharp.ru/posts/m/5354/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Научите меня, пожалуйста, как поступить или поправьте, если ошибаюсь.&lt;br /&gt;А может просто, в стратегии использовать не _strategy.PositionManager.Position, а _strategy.Trader.Positions&lt;br /&gt;?&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Сразу поправлю. Strategy.Position - это позиция по стратегии. А Trader.Positions - это позиции по бумагам. Стратегий по одной и той же бумаге может быть несколько. Если у Вас не так, используйте Trader.Positions. Если же все таки так, то надо самостоятельно где-то в своем коде восстанавливать текущую позицию.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/5354/</id>
    <title type="text">После успешного старта стратегии обнаруживаю разницу var pos = _trader.Positions.First(p =&amp;gt; p.Securi...</title>
    <published>2011-01-06T23:01:57Z</published>
    <updated>2011-01-06T23:01:57Z</updated>
    <author>
      <name>aerv</name>
      <uri>https://stocksharp.ru/users/28151/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">После успешного старта стратегии обнаруживаю разницу&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;br /&gt;var pos = _trader.Positions.First(p =&amp;gt; p.Security == _security);&lt;br /&gt;int tp = pos != null ? pos.CurrentValue : 0;  // = 1&lt;br /&gt;int sp = _strategy.PositionManager.Position; // = 0&lt;br /&gt;Assert.AreEqual( tp, sp ); // Не равны&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Как сделать, чтобы стратегия &amp;quot;подхватила&amp;quot; текущую позицию по бумаге?&lt;br /&gt;Возможны (нужны) два варианта:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;br /&gt;// Сегодня были сделки&lt;br /&gt;_trader.MyTrades.Count(t=&amp;gt; t.Trade.Security == _security) &amp;gt; 0  &lt;br /&gt;// Сделки были когда-то давно&lt;br /&gt;_trader.MyTrades.Count(t=&amp;gt; t.Trade.Security == _security) == 0&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Научите меня, пожалуйста, как поступить или поправьте, если ошибаюсь.&lt;br /&gt;А может просто, в стратегии использовать не _strategy.PositionManager.Position, а _strategy.Trader.Positions&lt;br /&gt;?&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>