﻿<?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">HistoryEmulationConnector, MyTrade, Как исполняются заявки</title>
  <id>~/topic/9823/historyemulationconnector-mytrade-kak-ispolnyayutsya-zayavki/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-30T02:41:43Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=9823" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/44834/</id>
    <title type="text">Добрый день Цены исполнения генерируются рандомно на основании цен на истории. Алгоритм так же влияе...</title>
    <published>2018-08-22T13:43:14Z</published>
    <updated>2018-08-22T13:43:14Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.com/users/97869/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Добрый день &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/44830/</id>
    <title type="text">Здравствуйте! Разбирался как эмулятор исполняет заявки и получил интересную ситуацию. В csv файле им...</title>
    <published>2018-08-22T10:01:08Z</published>
    <updated>2018-08-22T10:24:58Z</updated>
    <author>
      <name>tsuranov</name>
      <uri>https://stocksharp.com/users/101656/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Здравствуйте!&lt;br /&gt;&lt;br /&gt;Разбирался как эмулятор исполняет заявки и получил интересную ситуацию.&lt;br /&gt;В csv файле имеются следующие сделки:&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_6e516a6e0868435abc2b261309a9c0e9');" title='Show spoiler' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_6e516a6e0868435abc2b261309a9c0e9' style='display:none'&gt;14147947	+00:00		13476.5	200	Buy&lt;br /&gt;14148513	+00:00		13476	198	Sell&lt;br /&gt;14148580	+00:00		13476	2000	Sell&lt;br /&gt;14148791	+00:00		13476.5	100	Buy&lt;br /&gt;14149148	+00:00		13476.5	51	Buy&lt;br /&gt;14149713	+00:00		13476	391	Sell&lt;br /&gt;14150048	+00:00		13425	5386	Buy&lt;br /&gt;14150140	+00:00		13424.5	500	Sell&lt;br /&gt;14150574	+00:00		13425	2000	Buy&lt;br /&gt;14150765	+00:00		13425	15000	Buy&lt;br /&gt;14151864	+00:00		13431	8000	Buy&lt;br /&gt;14152042	+00:00		13431	200	Buy&lt;br /&gt;14152158	+00:00		13431	807	Buy&lt;br /&gt;14152213	+00:00		13431	4800	Buy&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;В обработчике на NewTrade в момент прихода сделки под номером 14149713 с ценой 13476 регистрирую лимитную заявку(=ордер) на покупку по цене 13461 (была такая ситуация при тестировании и я воссоздал в упрощенном виде, чтобы понять, что происходит)&lt;br /&gt;При этом генерируется НОВАЯ сделка с ценой 13425.2 (которой нет в файле, понятно, что это делается намеренно, по какому-то алгоритму и это наша сделка - сделка стратегии)&lt;br /&gt;Как, возможно, уже понятно, заявка исполнилась по цене 13425,2 (как видно из скриншота в дебаг-окне).&lt;br /&gt;Подскажите, пожалуйста, какая вообще логика у исполнения заявок вообще, и откуда взялась цена исполнения 13425.2 в частности? (полагаю, что бралось среднее из чего-то, но вот чего, какой алгоритм)&lt;br /&gt;&lt;br /&gt;исходный код:&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_20c96d66ae92401592b10d5ffbdd0c89');" title='Show spoiler' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_20c96d66ae92401592b10d5ffbdd0c89' style='display:none'&gt;using System;&lt;br /&gt;&lt;br /&gt;using Ecng.Common;&lt;br /&gt;&lt;br /&gt;using StockSharp.Algo.Candles;&lt;br /&gt;using StockSharp.Algo.Storages;&lt;br /&gt;using StockSharp.Algo.Strategies;&lt;br /&gt;using StockSharp.Algo.Testing;&lt;br /&gt;using StockSharp.BusinessEntities;&lt;br /&gt;using StockSharp.Logging;&lt;br /&gt;using StockSharp.Messages;&lt;br /&gt;&lt;br /&gt;namespace ConsoleApp1&lt;br /&gt;{&lt;br /&gt;    class Program&lt;br /&gt;    {&lt;br /&gt;        private static HistoryEmulationConnector _connector;&lt;br /&gt;        private static CandleSeries _candleSeries;&lt;br /&gt;        private static int _trades_count=0;&lt;br /&gt;        private static Strategy _strategy;&lt;br /&gt;        private static Order _order;&lt;br /&gt;        private static MyTrade _myTrade;&lt;br /&gt;        private const string _logFile = &amp;quot;log.txt&amp;quot;;&lt;br /&gt;        private static LogManager logManager = new LogManager();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            var storageRegistry = new StorageRegistry { DefaultDrive = new LocalMarketDataDrive(@&amp;quot;D:\StockSharp\Storage\&amp;quot;.ToFullPath()) };&lt;br /&gt;            var security = new Security { Id = &amp;quot;XBTUSD@BMEX&amp;quot;, Code = &amp;quot;XBTUSD&amp;quot;, Board = ExchangeBoard.Bitmex };&lt;br /&gt;            var portfolio = new Portfolio { Name = &amp;quot;test account&amp;quot;, BeginValue = 1000000 };&lt;br /&gt;            logManager.Listeners.Add(new FileLogListener(_logFile));&lt;br /&gt;&lt;br /&gt;            _connector = new HistoryEmulationConnector(new[] { security }, new[] { portfolio })&lt;br /&gt;            {&lt;br /&gt;                HistoryMessageAdapter =&lt;br /&gt;                {&lt;br /&gt;                    StorageRegistry = storageRegistry,&lt;br /&gt;                    StorageFormat = StorageFormats.Csv,&lt;br /&gt;                    StartDate = new DateTimeOffset(2018, 1, 1, 1, 41, 49, TimeSpan.FromTicks(0)),&lt;br /&gt;                    StopDate = new DateTimeOffset(2018, 1, 2, 0, 0, 0, TimeSpan.FromTicks(0))&lt;br /&gt;                },&lt;br /&gt;                LogLevel = LogLevels.Info&lt;br /&gt;            };&lt;br /&gt;            logManager.Sources.Add(_connector);&lt;br /&gt;&lt;br /&gt;            _candleSeries = new CandleSeries(typeof(TimeFrameCandle), security, TimeSpan.FromMinutes(1))&lt;br /&gt;            {&lt;br /&gt;                BuildCandlesMode = MarketDataBuildModes.Build,&lt;br /&gt;                BuildCandlesFrom = MarketDataTypes.Trades,&lt;br /&gt;            };&lt;br /&gt;&lt;br /&gt;            _connector.NewSecurity += Connector_NewSecurity;&lt;br /&gt;            _connector.NewTrade += Connector_NewTrade;&lt;br /&gt;            _connector.NewMyTrade += (t)=&amp;gt; _myTrade=t;&lt;br /&gt;&lt;br /&gt;            _strategy = new Strategy()&lt;br /&gt;            {&lt;br /&gt;                Connector = _connector,&lt;br /&gt;                Security = security,&lt;br /&gt;                Portfolio = portfolio&lt;br /&gt;            };&lt;br /&gt;&lt;br /&gt;            _connector.Connect();&lt;br /&gt;&lt;br /&gt;            while (Console.ReadKey().KeyChar.ToString() != &amp;quot;z&amp;quot;)&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine($&amp;quot;Кол-во сделок = {_trades_count}&amp;quot;);&lt;br /&gt;            };&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private static void Connector_NewSecurity(Security security)&lt;br /&gt;        {&lt;br /&gt;            _connector.RegisterTrades(security);&lt;br /&gt;            //_connector.SubscribeCandles(_candleSeries);&lt;br /&gt;            _connector.Start();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private static void Connector_NewTrade(Trade trade)&lt;br /&gt;        {&lt;br /&gt;            _trades_count++;&lt;br /&gt;            if (_trades_count == 3)&lt;br /&gt;            {&lt;br /&gt;                _order = _strategy.CreateOrder(Sides.Buy, 13461, 1);&lt;br /&gt;                _connector.RegisterOrder(_order);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>