HistoryEmulationConnector, RegisterTrades, SubscribeCandles

HistoryEmulationConnector, RegisterTrades, SubscribeCandles
Atom
8/21/2018
tsuranov


Здравствуйте!

Если подписываюсь на сделки - все нормально(через RegisterTrades).(API 4.4.13) Если дополнительно подписываюсь на свечи(RegisterTrades), то событие NewTrade приходит два раза(точнее обработчик срабатывает два раза) Причем, если подписаться ТОЛЬКО на свечи, тогда RegisteredTrades будет пустым, но обработчик на NewTrade будет срабатывать(вероятно, какой-то внутренний механизм подписи)

Нормально ли это?(может и у меня ошибка, но вроде обработчик один раз назначаю)




Thanks:


Support

Avatar
Date: 8/21/2018
Reply


Добрый день

Пришлите пожалуйста ваш код.

Thanks:

tsuranov

Avatar
Date: 8/22/2018
Reply


Расскоментирование строки: //_connector.SubscribeCandles(_candleSeries); приводит к удвоению переменной _trades_count.

using System;

using Ecng.Common;

using StockSharp.Algo.Candles; using StockSharp.Algo.Storages; using StockSharp.Algo.Testing; using StockSharp.BusinessEntities; using StockSharp.Messages;

namespace ConsoleApp1 { class Program { private static HistoryEmulationConnector _connector; private static CandleSeries _candleSeries; private static int _trades_count=0;

    static void Main(string[] args)
    {
        var storageRegistry = new StorageRegistry { DefaultDrive = new LocalMarketDataDrive(@"D:\StockSharp\Storage\".ToFullPath()) };
        var security = new Security { Id = "XBTUSD@BMEX", Code = "XBTUSD", Board = ExchangeBoard.Bitmex };
        var portfolio = new Portfolio { Name = "test account", BeginValue = 1000000 };

        _connector = new HistoryEmulationConnector(new[] { security }, new[] { portfolio })
        {
            HistoryMessageAdapter =
            {
                StorageRegistry = storageRegistry,
                StorageFormat = StorageFormats.Csv,
                StartDate = new DateTimeOffset(2017, 1, 1, 0, 0, 0, TimeSpan.FromTicks(0)),
                StopDate = new DateTimeOffset(2017, 1, 2, 0, 0, 0, TimeSpan.FromTicks(0))
            },
        };

        _candleSeries = new CandleSeries(typeof(TimeFrameCandle), security, TimeSpan.FromMinutes(1))
        {
            BuildCandlesMode = MarketDataBuildModes.Build,
            BuildCandlesFrom = MarketDataTypes.Trades,
        };

        _connector.NewSecurity += Connector_NewSecurity;
        _connector.NewTrade += Connector_NewTrade;
        _connector.Connect();

        while (Console.ReadKey().KeyChar.ToString() != "z")
        {
            Console.WriteLine($"Кол-во сделок = {_trades_count}");
        };

    }

    private static void Connector_NewSecurity(Security security)
    {
        _connector.RegisterTrades(security);
        //_connector.SubscribeCandles(_candleSeries);
        _connector.Start();
    }

    private static void Connector_NewTrade(Trade trade)
    {
        _trades_count++;
    }
}

}

Thanks:

Support

Avatar
Date: 8/22/2018
Reply


Добрый день

Спасибо, информация передана разработчикам.

Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy