Пример #1
0
        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 });
        }
Пример #2
0
 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));
 }
Пример #3
0
        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());
        }
Пример #4
0
 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
     });
 }
Пример #5
0
 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
     });
 }