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