﻿<?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">Помогите с PNL ьенеджером</title>
  <id>~/topic/3784/pomogite-s-pnl-enedzherom/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-05-01T15:07:14Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=3784" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/26652/</id>
    <title type="text">в PositionMenedger инфу по позициям сообщая так: if (this.PositionManager.Position == 0) { this.Posi...</title>
    <published>2013-07-09T07:06:19Z</published>
    <updated>2013-07-09T07:06:19Z</updated>
    <author>
      <name>casper-ss</name>
      <uri>https://stocksharp.ru/users/26936/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">в PositionMenedger инфу по позициям сообщая так:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if (this.PositionManager.Position == 0)&lt;br /&gt;                    {                        &lt;br /&gt;                        this.PositionManager.Positions = this.Trader.Positions.Where(p =&amp;gt; p.Security == this.Security);&lt;br /&gt;                        flagSyncPnlMan = true;&lt;br /&gt;                    }</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/26651/</id>
    <title type="text">else if (_LinePos != null) { decimal minElem; decimal maxElem; decimal dec = _LinePos.Select(l =&amp;gt; l....</title>
    <published>2013-07-09T07:04:17Z</published>
    <updated>2013-07-09T07:04:17Z</updated>
    <author>
      <name>casper-ss</name>
      <uri>https://stocksharp.ru/users/26936/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">else if (_LinePos != null)&lt;br /&gt;            {&lt;br /&gt;                    decimal minElem;&lt;br /&gt;                    decimal maxElem;&lt;br /&gt;&lt;br /&gt;                    decimal dec = _LinePos.Select(l =&amp;gt; l.Volume).Sum();&lt;br /&gt;&lt;br /&gt;                    if (_LinePos.Where(e =&amp;gt; e.Volume &amp;gt; 0).Count() != 0)&lt;br /&gt;                    {&lt;br /&gt;                        minElem = _LinePos.Where(e =&amp;gt; e.Volume &amp;gt; 0).Min(p =&amp;gt; { return p.Line; });&lt;br /&gt;                        maxElem = _LinePos.Where(e =&amp;gt; e.Volume &amp;gt; 0).Max(p =&amp;gt; { return p.Line; });&lt;br /&gt;                    }&lt;br /&gt;                    else&lt;br /&gt;                    {&lt;br /&gt;                        minElem = _LinePos.Max(p =&amp;gt; { return p.Line; });&lt;br /&gt;                        maxElem = _LinePos.Max(p =&amp;gt; { return p.Line; });&lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;                    if (flagSyncPnlMan == true)&lt;br /&gt;                    {&lt;br /&gt;                        PnLManager.Reset();&lt;br /&gt;                        for (decimal i = maxElem; i &amp;gt;= minElem;i=i-10 )&lt;br /&gt;                        {&lt;br /&gt;                            var e = _LinePos.Find(elem =&amp;gt;&lt;br /&gt;                            {&lt;br /&gt;                                if (elem.Line == i)&lt;br /&gt;                                {&lt;br /&gt;                                    return true;&lt;br /&gt;                                }&lt;br /&gt;                                else return false;&lt;br /&gt;                            });&lt;br /&gt;                            if (e.Volume &amp;gt; 0)&lt;br /&gt;                            {&lt;br /&gt;                                ChangeManBuyPnL(e.Volume, e.Line);&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                    if (dec - Position &amp;gt; 0)&lt;br /&gt;                    {&lt;br /&gt;                        var _clearPos = dec - Position;&lt;br /&gt;                        &lt;br /&gt;                        for (decimal i = minElem; i &amp;lt;= maxElem; i = i + 10)&lt;br /&gt;                        {&lt;br /&gt;                            var elem = _LinePos.Find(e =&amp;gt;&lt;br /&gt;                            {&lt;br /&gt;                                if (e.Line == i)&lt;br /&gt;                                {&lt;br /&gt;                                    return true;&lt;br /&gt;                                }&lt;br /&gt;                                else&lt;br /&gt;                                    return false;&lt;br /&gt;                            });&lt;br /&gt;&lt;br /&gt;                            if (elem.Volume &amp;gt;= _clearPos)&lt;br /&gt;                            {&lt;br /&gt;                                elem.Volume = elem.Volume - _clearPos;&lt;br /&gt;                                if (flagSyncPnlMan == true)&lt;br /&gt;                                {&lt;br /&gt;                                    ChangeManSellPnL(_clearPos, elem.PriceOrderProfit);&lt;br /&gt;                                }&lt;br /&gt;                                _clearPos = 0;&lt;br /&gt;                            }&lt;br /&gt;                            else if (elem.Volume &amp;lt; _clearPos)&lt;br /&gt;                            {&lt;br /&gt;                                _clearPos = _clearPos - elem.Volume;&lt;br /&gt;                                if (flagSyncPnlMan == true)&lt;br /&gt;                                {&lt;br /&gt;                                    ChangeManSellPnL(Volume, elem.PriceOrderProfit);&lt;br /&gt;                                }&lt;br /&gt;                                elem.Volume = 0;&lt;br /&gt;                            }&lt;br /&gt;                            if (_clearPos == 0)&lt;br /&gt;                            {&lt;br /&gt;                                break;&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                    else if (dec - Position &amp;lt; 0)&lt;br /&gt;                    {&lt;br /&gt;                        decimal _clearPos = Position - dec;&lt;br /&gt;&lt;br /&gt;                        if (_LinePos.Where(e =&amp;gt; e.Volume &amp;gt; 0).Count() != 0)&lt;br /&gt;                        {&lt;br /&gt;                            minElem = _LinePos.Where(e =&amp;gt; e.Volume &amp;gt; 0).Min(p =&amp;gt; { return p.Line; });&lt;br /&gt;                        }&lt;br /&gt;                        else&lt;br /&gt;                        {&lt;br /&gt;                            minElem = _LinePos.Max(p =&amp;gt; { return p.Line; });&lt;br /&gt;                        }&lt;br /&gt;&lt;br /&gt;                        var elem = _LinePos.Find(e =&amp;gt;&lt;br /&gt;                        {&lt;br /&gt;                            if (e.Line == minElem)&lt;br /&gt;                            {&lt;br /&gt;                                return true;&lt;br /&gt;                            }&lt;br /&gt;                            else&lt;br /&gt;                                return false;&lt;br /&gt;                        });&lt;br /&gt;                        elem.Volume = elem.Volume + _clearPos;&lt;br /&gt;                        if (flagSyncPnlMan == true)&lt;br /&gt;                        {&lt;br /&gt;                            ChangeManBuyPnL(_clearPos, elem.Line);&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public void ChangeManBuyPnL(decimal vol, decimal price)&lt;br /&gt;        {  &lt;br /&gt;            var tr = new Trade();&lt;br /&gt;            var ord = new Order();&lt;br /&gt;            tr.Volume = vol;&lt;br /&gt;            tr.Price = price;&lt;br /&gt;            tr.Security = this.Security;&lt;br /&gt;            ord.Portfolio = this.Portfolio;&lt;br /&gt;            ord.Security = this.Security;&lt;br /&gt;            ord.Direction = OrderDirections.Buy;&lt;br /&gt;            ord.Volume = vol;&lt;br /&gt;            ord.Price = price;&lt;br /&gt;            var mytr = _mW._trader.EntityFactory.CreateMyTrade(ord, tr);            &lt;br /&gt;            mytr.Trade.IsSystem = true;&lt;br /&gt;            this.PnLManager.ProcessMyTrade(mytr);            &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;_LinePos - лист с инфой по сделкам по которым была набрана позиция, там есть инфа по цене сделки на покупку и обьему который по этой цене прошел...&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/26583/</id>
    <title type="text">PnL Manager отвечает за отображения суммарного дохода или убытка по вашим позициям. Вам нужен Positi...</title>
    <published>2013-07-04T12:04:41Z</published>
    <updated>2013-07-04T12:04:41Z</updated>
    <author>
      <name>yar1k0v</name>
      <uri>https://stocksharp.ru/users/6437/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">PnL Manager отвечает за отображения суммарного дохода или убытка по вашим позициям.&lt;br /&gt;Вам нужен PositionManager.&lt;br /&gt;Скиньте пожалуйста ваш код по запуску и остановке стратегии, так будет проще вам помочь.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/26517/</id>
    <title type="text">Обьясните пожалуйста...у меня такая ситуация: нужно в PnL менеджер стратегии сообщить информация по ...</title>
    <published>2013-07-01T08:09:47Z</published>
    <updated>2013-07-01T08:09:47Z</updated>
    <author>
      <name>casper-ss</name>
      <uri>https://stocksharp.ru/users/26936/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Обьясните пожалуйста...у меня такая ситуация: нужно в PnL менеджер стратегии сообщить информация по имеющимся позам...то есть например я запускаю стратегию, и у меня имеется 50 контрактов в Long ...мне нужно что бы со стартом моя стратегия приняла эти позиции в PnL менеджер, и в будущем правильно расчитала реализованную прибыль или убыток...При старте стратегии, Pnl менеджер у меня пустой, но инфа о сделках при которых у меня была набранна  данная поза у меня есть, я ее сохраняю,пытаюсь передать ее в Pnl менеджер через фабрику сущностей, создавая сделки по имеющейся информации и помещая их в Pnl менеджер, но все равно считает он потом не правильно...как сделать это правильно?подскажите пожалуйста...</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>