public async Task <string> shouge(long orderId) { try { var dogEmptySell = new DogEmptySellDao().GetDogEmptySellBySellOrderId(orderId); if (dogEmptySell.IsFinished) { return("已经完成的不操作"); } var dogEmptyBuyList = new DogEmptyBuyDao().ListDogEmptyBuyBySellOrderId(orderId); if (dogEmptyBuyList.Count > 0 && dogEmptyBuyList.Find(it => it.BuyState != StateConst.Canceled.ToString() && it.BuyState != StateConst.PartialFilled.ToString() && it.BuyState != StateConst.Filled.ToString()) != null) { // 存在操作中的,则不操作 return("存在操作中的,则不操作"); } CommonSymbol symbol = CoinUtils.GetCommonSymbol(dogEmptySell.SymbolName, dogEmptySell.QuoteCurrency); // 先初始化一下 AnalyzeResult analyzeResult = AnalyzeResult.GetAnalyzeResult(symbol); if (analyzeResult == null) { return("分析结果未null"); } return(CoinTrade.ShouGeDogEmpty(dogEmptySell, symbol, analyzeResult, true)); } catch (Exception ex) { logger.Error($"严重 orderId:{orderId}- {ex.Message}", ex); return(ex.Message); } }
public async Task <object> ListEmptySellIsFinishedDetail(string userName, string symbolName, int pageIndex, int pageSize) { try { try { var sellOrderIds = new DogEmptyBuyDao().ListDogEmptyBuy(userName, symbolName, pageIndex, pageSize); var result = new List <DogEmptyFinishedDTO>(); foreach (var sellOrderId in sellOrderIds) { var item = await GetDogEmptyFinishedDTO(sellOrderId); result.Add(item); } return(result); } catch (Exception ex) { logger.Error(ex.Message, ex); return(null); } } catch (Exception ex) { logger.Error(ex.Message, ex); return(null); } }
public object GetEmptySellDetail(long sellOrderId) { try { var dogEmptySell = new DogEmptySellDao().GetDogEmptySellBySellOrderId(sellOrderId); var orderMatchResult = JsonConvert.DeserializeObject <HBResponse <List <OrderMatchResult> > >(dogEmptySell.SellOrderMatchResults); var sellQuantity = (decimal)0; var sellAmount = (decimal)0; var sellFees = (decimal)0; foreach (var item in orderMatchResult.Data) { sellAmount += item.FilledAmount * item.price; sellQuantity += item.FilledAmount; sellFees += item.FilledFees; } // 交易量,交易总额, 出售总额 出售数量, var buyQuantity = (decimal)0; var buyAmount = (decimal)0; var buyFees = (decimal)0; var dogEmptyBuyList = new DogEmptyBuyDao().ListDogEmptyBuyBySellOrderId(sellOrderId); foreach (var buy in dogEmptyBuyList) { var buyOrderMatchResult = JsonConvert.DeserializeObject <HBResponse <List <OrderMatchResult> > >(buy.BuyOrderMatchResults); foreach (var item in buyOrderMatchResult.Data) { buyAmount += item.FilledAmount * item.price; buyQuantity += item.FilledAmount; buyFees += item.FilledFees; } } return(new { sellOrderId, symbolName = dogEmptySell.SymbolName, buyQuantity, buyAmount, buyFees, sellAmount, sellQuantity, sellFees, usdt = sellAmount - buyAmount - sellFees, baseSymbol = buyQuantity - sellQuantity - buyFees }); } 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 <DogEmptyFinishedDTO> GetDogEmptyFinishedDTO(long sellOrderId) { var dogEmptySell = new DogEmptySellDao().GetDogEmptySellBySellOrderId(sellOrderId); var orderMatchResult = JsonConvert.DeserializeObject <HBResponse <List <OrderMatchResult> > >(dogEmptySell.SellOrderMatchResults); var sellQuantity = (decimal)0; var sellAmount = (decimal)0; var sellFees = (decimal)0; foreach (var item in orderMatchResult.Data) { sellAmount += item.FilledAmount * item.price; sellQuantity += item.FilledAmount; sellFees += item.FilledFees; } // 交易量,交易总额, 出售总额 出售数量, var buyQuantity = (decimal)0; var buyAmount = (decimal)0; var buyFees = (decimal)0; var buyTradePrice = (decimal)0; var buyDate = DateTime.MaxValue; var dogEmptyBuyList = new DogEmptyBuyDao().ListDogEmptyBuyBySellOrderId(sellOrderId); foreach (var buy in dogEmptyBuyList) { var buyOrderMatchResult = JsonConvert.DeserializeObject <HBResponse <List <OrderMatchResult> > >(buy.BuyOrderMatchResults); foreach (var item in buyOrderMatchResult.Data) { buyAmount += item.FilledAmount * item.price; buyQuantity += item.FilledAmount; buyFees += item.FilledFees; if (buyTradePrice < item.price) { buyTradePrice = item.price; } } if (buy.BuyDate < buyDate) { buyDate = buy.BuyDate; } } return(new DogEmptyFinishedDTO { SellOrderId = sellOrderId, SymbolName = dogEmptySell.SymbolName, UserName = dogEmptySell.UserName, SellTradePrice = dogEmptySell.SellTradePrice, SellDate = dogEmptySell.SellDate, SellState = dogEmptySell.SellState, BuyQuantity = buyQuantity, BuyTradePrice = buyTradePrice, BuyDate = buyDate, BuyAmount = buyAmount, BuyFees = buyFees, SellAmount = sellAmount, SellQuantity = sellQuantity, SellFees = sellFees, Usdt = sellAmount - buyAmount - sellFees, BaseSymbol = buyQuantity - sellQuantity - buyFees }); }