示例#1
0
        /// <summary>
        /// Cryptocurrency order book.
        /// Process order book data from one source per one target pair.
        /// </summary>
        /// <param name="targetPair">Select target pair</param>
        /// <param name="source">Provide order book data source</param>
        /// <param name="targetType">Select target precision (default: All - accepts every type of data)</param>
        public CryptoOrderBook(string targetPair, IOrderBookSource source, CryptoOrderBookType targetType = CryptoOrderBookType.All)
        {
            CryptoValidations.ValidateInput(targetPair, nameof(targetPair));
            CryptoValidations.ValidateInput(source, nameof(source));

            TargetPairOriginal = targetPair;
            TargetPair         = CryptoPairsHelper.Clean(targetPair);
            _source            = source;
            TargetType         = targetType;

            if (targetType == CryptoOrderBookType.L1 || targetType == CryptoOrderBookType.L2)
            {
                // save memory, only one order at price level
                _priceLevelInitialCapacity = 1;
            }
            else if (targetType == CryptoOrderBookType.L3)
            {
                // better performance, could be multiple orders at price level
                _priceLevelInitialCapacity = 5;
            }

            Subscribe();
            RestartAutoSnapshotReloading();
            RestartValidityChecking();
        }
 public static OrderBookLevelBulk GetDeleteBulk(CryptoOrderBookType type, params OrderBookLevel[] levels)
 {
     return new OrderBookLevelBulk(OrderBookAction.Delete, levels, type);
 }
 public static OrderBookLevelBulk GetInsertBulk(CryptoOrderBookType type, params OrderBookLevel[] levels)
 {
     return new OrderBookLevelBulk(OrderBookAction.Insert, levels, type);
 }
 /// <inheritdoc />
 public OrderBookLevelBulk(OrderBookAction action, OrderBookLevel[] levels, CryptoOrderBookType orderBookType)
 {
     Action        = action;
     OrderBookType = orderBookType;
     Levels        = levels ?? new OrderBookLevel[0];
 }
 public static OrderBookLevelBulk GetUpdateBulk(CryptoOrderBookType type, params OrderBookLevel[] levels)
 {
     return(new OrderBookLevelBulk(OrderBookAction.Update, levels, type));
 }