public async Task <string> shouge(long orderId) { try { var dogMoreBuy = new DogMoreBuyDao().GetDogMoreBuyByBuyOrderId(orderId); if (dogMoreBuy.IsFinished) { return("已完成出售"); } var dogMoreSellList = new DogMoreSellDao().ListDogMoreSellByBuyOrderId(orderId); if (dogMoreSellList.Count > 0 && dogMoreSellList.Find(it => it.SellState != StateConst.Canceled.ToString() && it.SellState != StateConst.PartialFilled.ToString() && it.SellState != StateConst.Filled.ToString() ) != null) { // 存在操作中的,则不操作 return("存在出售中的"); } var symbols = CoinUtils.GetAllCommonSymbols(dogMoreBuy.QuoteCurrency); CommonSymbol symbol = symbols.Find(it => it.BaseCurrency == dogMoreBuy.SymbolName); CoinTrade.ShouGeDogMore(dogMoreBuy, symbol); return("操作结束"); } catch (Exception ex) { logger.Error(ex.Message, ex); return(ex.Message); } }
public async Task <List <DogMoreFinishedDTO> > listMoreBuyIsFinishedDetail(string userName, string symbolName, int pageIndex, int pageSize) { try { var buyOrderIds = new DogMoreSellDao().listDogMoreSell(userName, symbolName, pageIndex, pageSize); var result = new List <DogMoreFinishedDTO>(); foreach (var buyOrderId in buyOrderIds) { var item = await GetDogMoreFinishedDTO(buyOrderId); result.Add(item); } return(result); } catch (Exception ex) { logger.Error(ex.Message, ex); return(null); } }
public static void CheckBuyOrSellState() { try { var needChangeBuyStateDogMoreBuyList = new DogMoreBuyDao().ListNeedChangeBuyStateDogMoreBuy(); foreach (var item in needChangeBuyStateDogMoreBuyList) { // 如果长时间没有购买成功, 则取消订单。 if (item.BuyDate < DateTime.Now.AddMinutes(-30)) { //api. } // TODO QueryBuyDetailAndUpdate(item.UserName, item.BuyOrderId); } } catch (Exception ex) { logger.Error(ex.Message, ex); } try { var needChangeSellStateDogMoreSellList = new DogMoreSellDao().ListNeedChangeSellStateDogMoreSell(); foreach (var item in needChangeSellStateDogMoreSellList) { // 如果长时间没有出售成功, 则取消订单。 // TODO QuerySellDetailAndUpdate(item.UserName, item.SellOrderId); } } catch (Exception ex) { logger.Error(ex.Message, ex); } // 空 try { var needChangeSellStateDogEmptySellList = new DogEmptySellDao().ListNeedChangeSellStateDogEmptySell(); foreach (var item in needChangeSellStateDogEmptySellList) { // 如果长时间没有出售成功, 则取消订单。 // TODO QueryEmptySellDetailAndUpdate(item.UserName, item.SellOrderId); } } catch (Exception ex) { logger.Error(ex.Message, ex); } try { var needChangeBuyStateDogEmptyBuyList = new DogEmptyBuyDao().ListNeedChangeBuyStateDogEmptyBuy(); //Console.WriteLine($"needChangeBuyStateDogEmptyBuyList: {needChangeBuyStateDogEmptyBuyList.Count}"); foreach (var item in needChangeBuyStateDogEmptyBuyList) { // 如果长时间没有出售成功, 则取消订单。 // TODO QueryEmptyBuyDetailAndUpdate(item.UserName, item.BuyOrderId); } } catch (Exception ex) { logger.Error(ex.Message, ex); } }
private async Task <DogMoreFinishedDTO> GetDogMoreFinishedDTO(long buyOrderId) { var dogMoreBuy = new DogMoreBuyDao().GetByBuyOrderId(buyOrderId); HBResponse <List <OrderMatchResult> > orderMatchResult = null; var buyQuantity = (decimal)0; var buyAmount = (decimal)0; var buyFees = (decimal)0; try { orderMatchResult = JsonConvert.DeserializeObject <HBResponse <List <OrderMatchResult> > >(dogMoreBuy.BuyOrderMatchResults); foreach (var item in orderMatchResult.Data) { buyAmount += item.FilledAmount * item.price; if (item.symbol.IndexOf("ven") >= 0) { buyQuantity += item.FilledAmount * 100; } else { buyQuantity += item.FilledAmount; } buyFees += item.FilledFees; } } catch (Exception ex) { buyQuantity = dogMoreBuy.BuyQuantity; buyAmount = dogMoreBuy.BuyQuantity * dogMoreBuy.BuyTradePrice; logger.Error(ex.Message, ex); } // 交易量,交易总额, 出售总额 出售数量, var sellQuantity = (decimal)0; var sellAmount = (decimal)0; var sellFees = (decimal)0; var sellTradePrice = (decimal)999999; var sellDate = DateTime.MinValue; var dogMoreSellList = new DogMoreSellDao().ListDogMoreSellByBuyOrderId(buyOrderId); foreach (var sell in dogMoreSellList) { try { var sellOrderMatchResult = JsonConvert.DeserializeObject <HBResponse <List <OrderMatchResult> > >(sell.SellOrderMatchResults); if (sellOrderMatchResult != null && sellOrderMatchResult.Data != null && sellOrderMatchResult.Data.Count > 0) { foreach (var item in sellOrderMatchResult.Data) { sellAmount += item.FilledAmount * item.price; sellQuantity += item.FilledAmount; sellFees += item.FilledFees; if (item.price < sellTradePrice) { sellTradePrice = item.price; } } } } catch (Exception ex) { sellAmount = sell.SellTradePrice * sell.SellQuantity; sellQuantity += sell.SellQuantity; sellFees += 0; sellTradePrice = sell.SellTradePrice; } if (sell.SellDate > sellDate) { sellDate = sell.SellDate; } } return(new DogMoreFinishedDTO { BuyOrderId = buyOrderId, SymbolName = dogMoreBuy.SymbolName, QuoteCurrency = dogMoreBuy.QuoteCurrency, UserName = dogMoreBuy.UserName, BuyTradePrice = dogMoreBuy.BuyTradePrice, BuyDate = dogMoreBuy.BuyDate, BuyState = dogMoreBuy.BuyState, BuyQuantity = buyQuantity, BuyAmount = buyAmount, BuyFees = buyFees, SellAmount = sellAmount, SellQuantity = sellQuantity, SellTradePrice = sellTradePrice, SellFees = sellFees, SellDate = sellDate, Usdt = sellAmount - buyAmount - sellFees, BaseSymbol = buyQuantity - sellQuantity - buyFees }); }