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