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);
            }
        }
示例#4
0
        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
            });
        }