HistoryEmulationConnector, RegisterTrades, SubscribeCandles

HistoryEmulationConnector, RegisterTrades, SubscribeCandles
Atom
21.08.2018
tsuranov


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

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

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




Спасибо:


Support

Фотография
Дата: 21.08.2018
Ответить


Добрый день

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

Спасибо:

tsuranov

Фотография
Дата: 22.08.2018
Ответить


Расскоментирование строки: //_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++;
    }
}

}

Спасибо:

Support

Фотография
Дата: 22.08.2018
Ответить


Добрый день

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

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy