/// <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)); }