﻿<?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/4647/kak-pravilno-poluchit-srednyuyu-tsenu-otkrytiya-pozitsii/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-09T03:06:41Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=4647" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/31299/</id>
    <title type="text">Посмотрел ваш код. Он неправильный. В вашем сценарии, когда позу открывали, закрывали, снова открыва...</title>
    <published>2014-07-22T10:25:28Z</published>
    <updated>2014-07-22T10:25:28Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</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/31294/</id>
    <title type="text">Надо будет посмотреть. На в скидку - код является рудиментом. Возможно, его нужно вообще удалить, а ...</title>
    <published>2014-07-21T13:10:16Z</published>
    <updated>2014-07-21T13:10:16Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</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/31293/</id>
    <title type="text">Что нибудь вроде этого: public static decimal GetAveragePriceEx(this IEnumerable myTrades) { if (myT...</title>
    <published>2014-07-21T12:39:35Z</published>
    <updated>2014-07-21T12:39:35Z</updated>
    <author>
      <name>poison</name>
      <uri>https://stocksharp.ru/users/38961/</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;pre class="brush:csharp"&gt;

public static decimal GetAveragePriceEx(this IEnumerable&amp;lt;MyTrade&amp;gt; myTrades)
{
	if (myTrades == null)
		throw new ArgumentNullException(&amp;quot;myTrades&amp;quot;);

	var nominator = 0m;
	var denominator = 0m;

	foreach (var myTrade in myTrades)
	{
		var order = myTrade.Order;
		var trade = myTrade.Trade;
		if (order.Direction == StockSharp.Messages.Sides.Buy)
		{
			nominator += trade.Price * trade.Volume;
			denominator += trade.Volume;
		}
		else
		{
			nominator -= trade.Price * trade.Volume;
			denominator -= trade.Volume;
		}
	}

	if (denominator == 0)
		return 0;

	return nominator / denominator;
}
&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/31292/</id>
    <title type="text">Есть такая функция MyTrades.GetAveragePrice(), которая выдает среднюю цену исполнения по всем сделка...</title>
    <published>2014-07-21T11:59:53Z</published>
    <updated>2014-07-21T11:59:53Z</updated>
    <author>
      <name>poison</name>
      <uri>https://stocksharp.ru/users/38961/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Есть такая функция MyTrades.GetAveragePrice(), которая выдает среднюю цену исполнения по всем сделкам,&lt;br /&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;

public static decimal GetAveragePrice(this IEnumerable&amp;lt;Trade&amp;gt; trades)
{
	if (trades == null)
		throw new ArgumentNullException(&amp;quot;trades&amp;quot;);

	var nominator = 0m;
	var denominator = 0m;

	foreach (var trade in trades)
	{
		nominator += trade.Price * trade.Volume;
		denominator += trade.Volume;
	}

	if (denominator == 0)
		return 0;

	return nominator / denominator;
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;то есть простое перемножение. А есть ли функция, которая учитывает направление сделок?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>