public static AssetPairPrice ToAssetPairPrice(this HashEntry[] hashEntry) { var assetPair = new AssetPairPrice(); var hashDict = hashEntry.ToDictionary(); if (hashDict.TryGetValue(nameof(AssetPairPrice.AssetPair), out var assetPairId)) { assetPair.AssetPair = assetPairId; } if (hashDict.TryGetValue(nameof(AssetPairPrice.BidPrice), out var bidPrice)) { assetPair.BidPrice = (double)bidPrice; } if (hashDict.TryGetValue(nameof(AssetPairPrice.BidPriceTimestamp), out var bidTimestamp)) { assetPair.BidPriceTimestamp = DateTime.Parse(bidTimestamp).ToUniversalTime(); } if (hashDict.TryGetValue(nameof(AssetPairPrice.AskPrice), out var askPrice)) { assetPair.AskPrice = (double)askPrice; } if (hashDict.TryGetValue(nameof(AssetPairPrice.AskPriceTimestamp), out var askTimestamp)) { assetPair.AskPriceTimestamp = DateTime.Parse(askTimestamp).ToUniversalTime(); } return(assetPair); }
public Task AddAssetPairPriceAsync(AssetPairPrice assetPair) { var tasks = new List <Task> { _database.HashSetAsync(RedisKeys.GetMarketProfileKey(assetPair.AssetPair), assetPair.ToHashEntries()), _database.SetAddAsync(RedisKeys.GetAssetPairsKey(), assetPair.AssetPair) }; return(Task.WhenAll(tasks)); }
public static AssetPairModel ToApiModel(this AssetPairPrice pair) { return(new AssetPairModel { AssetPair = pair.AssetPair, BidPrice = pair.BidPrice, AskPrice = pair.AskPrice, BidPriceTimestamp = pair.BidPriceTimestamp, AskPriceTimestamp = pair.AskPriceTimestamp }); }
public static HashEntry[] ToHashEntries(this AssetPairPrice assetPair) { return(new[] { new HashEntry(nameof(AssetPairPrice.AssetPair), assetPair.AssetPair), new HashEntry(nameof(AssetPairPrice.AskPrice), assetPair.AskPrice), new HashEntry(nameof(AssetPairPrice.AskPriceTimestamp), assetPair.AskPriceTimestamp.ToString(DateFormat)), new HashEntry(nameof(AssetPairPrice.BidPrice), assetPair.BidPrice), new HashEntry(nameof(AssetPairPrice.BidPriceTimestamp), assetPair.BidPriceTimestamp.ToString(DateFormat)) }); }
private AssetPairPrice Create(QuoteMessage quote) { var pair = new AssetPairPrice { AssetPair = quote.AssetPair, AskPriceTimestamp = DateTime.MinValue, BidPriceTimestamp = DateTime.MinValue }; UpdateAssetPairPrice(pair, quote); return(pair); }
private AssetPairPrice UpdateAssetPairPrice(AssetPairPrice pair, QuoteMessage quote) { if (quote.IsBuy) { if (pair.BidPriceTimestamp < quote.Timestamp) { pair.BidPrice = quote.Price; pair.BidPriceTimestamp = quote.Timestamp; } } else { if (pair.AskPriceTimestamp < quote.Timestamp) { pair.AskPrice = quote.Price; pair.AskPriceTimestamp = quote.Timestamp; } } return(pair); }