private static IClientTrade[] CreateTradeRecordsForClientWithVolumes(TradeQueueItem.TradeInfo trade, IMarketOrder marketOrder, string btcTransactionId, IWalletCredentials walletCredentialsMarket, IWalletCredentials walletCredentialsLimit, bool isMarketClient, double marketVolume, double limitVolume) { var clientId = isMarketClient ? walletCredentialsMarket?.ClientId : walletCredentialsLimit?.ClientId; if (!isMarketClient && string.IsNullOrWhiteSpace(clientId)) { return(new IClientTrade[0]); } clientId = clientId ?? marketOrder.ClientId; var mutlisig = isMarketClient ? walletCredentialsMarket?.MultiSig : walletCredentialsLimit?.MultiSig; var fromMultisig = isMarketClient ? walletCredentialsLimit?.MultiSig : walletCredentialsMarket?.MultiSig; var marketAssetRecord = CreateCommonPartForTradeRecord(trade, marketOrder, btcTransactionId); var limitAssetRecord = CreateCommonPartForTradeRecord(trade, marketOrder, btcTransactionId); marketAssetRecord.ClientId = limitAssetRecord.ClientId = clientId; marketAssetRecord.AddressFrom = limitAssetRecord.AddressFrom = fromMultisig; marketAssetRecord.AddressTo = limitAssetRecord.AddressTo = mutlisig; marketAssetRecord.Multisig = limitAssetRecord.Multisig = mutlisig; marketAssetRecord.Amount = marketVolume * (isMarketClient ? -1 : 1); marketAssetRecord.AssetId = trade.MarketAsset; limitAssetRecord.Amount = limitVolume * (isMarketClient ? 1 : -1); limitAssetRecord.AssetId = trade.LimitAsset; marketAssetRecord.Id = Utils.GenerateRecordId(marketAssetRecord.DateTime); limitAssetRecord.Id = Utils.GenerateRecordId(limitAssetRecord.DateTime); return(new IClientTrade[] { marketAssetRecord, limitAssetRecord }); }
private static IClientTrade[] CreateTradeRecordsForClient(TradeQueueItem.TradeInfo trade, IMarketOrder marketOrder, string btcTransactionId, IWalletCredentials walletCredentialsMarket, IWalletCredentials walletCredentialsLimit, bool isMarketClient) { return(CreateTradeRecordsForClientWithVolumes(trade, marketOrder, btcTransactionId, walletCredentialsMarket, walletCredentialsLimit, isMarketClient, trade.MarketVolume, trade.LimitVolume)); }
public static IClientTrade[] GetTradeRecords(this TradeQueueItem.TradeInfo trade, IMarketOrder marketOrder, string btcTransactionId, IWalletCredentials walletCredentialsMarket, IWalletCredentials walletCredentialsLimit) { var result = new List <IClientTrade>(); result.AddRange(CreateTradeRecordsForClient(trade, marketOrder, btcTransactionId, walletCredentialsMarket, walletCredentialsLimit, true)); result.AddRange(CreateTradeRecordsForClient(trade, marketOrder, btcTransactionId, walletCredentialsMarket, walletCredentialsLimit, false)); return(result.ToArray()); }
private static ClientTrade CreateCommonPartForTradeRecord(TradeQueueItem.TradeInfo trade, IMarketOrder marketOrder, string btcTransactionId) { return(new ClientTrade { DateTime = trade.Timestamp, Price = trade.Price.GetValueOrDefault(), LimitOrderId = trade.LimitOrderId, MarketOrderId = marketOrder.Id, TransactionId = btcTransactionId }); }
private static ClientTrade CreateCommonPartForTradeRecord(TradeQueueItem.TradeInfo trade, string marketOrderId, double price, string assetPairId) { return(new ClientTrade { DateTime = trade.Timestamp, Price = price, LimitOrderId = trade.LimitOrderExternalId, MarketOrderId = marketOrderId, TransactionId = marketOrderId, AssetPairId = assetPairId, State = TransactionStates.SettledOffchain }); }