示例#1
0
        /// <summary>
        /// 自定义IOrderedEnumerable分页控件
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="source"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public static PagedList <T> ToPagedList <T>(this IOrderedEnumerable <T> source, int pageIndex, int pageSize)
        {
            var allItems = source.AsEnumerable();

            if (pageIndex < 1)
            {
                pageIndex = 1;
            }
            int             count = (pageIndex - 1) * pageSize;
            IEnumerable <T> items = allItems.Skip <T>(count).Take <T>(pageSize);

            return(new PagedList <T>(items.ToList(), pageIndex, pageSize, Enumerable.Count(allItems)));
        }
示例#2
0
        private void SortItems(MultiColumnHeader header)
        {
            var index     = ( ColumnType )header.sortedColumnIndex;
            var ascending = header.IsSortedAscending(header.sortedColumnIndex);

            IOrderedEnumerable <UniSymbolItem> ordered = null;

            switch (index)
            {
            case ColumnType.NUMBER:
            case ColumnType.COPY:
                ordered = m_list.OrderBy(c => c.id);
                break;

            case ColumnType.IS_ENABLE:
                ordered = m_list
                          .OrderBy(c => !c.IsEnable)
                          .ThenBy(c => c.id)
                ;
                break;

            case ColumnType.NAME:
                ordered = m_list
                          .OrderBy(c => c.Name)
                          .ThenBy(c => c.id)
                ;
                break;

            case ColumnType.COMMENT:
                ordered = m_list
                          .OrderBy(c => c.Comment)
                          .ThenBy(c => c.id)
                ;
                break;
            }

            var items = ordered.AsEnumerable();

            if (!ascending)
            {
                items = items.Reverse();
            }

            rootItem.children = items.Cast <TreeViewItem>().ToList();
            BuildRows(rootItem);
        }
示例#3
0
        public async Task GetVolumesAsync()
        {
            using (var client = new BinanceClient())
                using (var socketClient = new BinanceSocketClient())
                //using (var client = new BinanceClient())
                {
                    while (true)
                    {
                        foreach (DataRow pricer in CoinData.Rows)
                        {
                            var eighthourcandlesClient = await client.GetKlinesAsync(pricer[0].ToString(), KlineInterval.FiveMinutes, startTime : DateTime.UtcNow.AddHours(-8), endTime : DateTime.UtcNow, limit : 100);

                            if (eighthourcandlesClient.Success == false)
                            {
                                continue;
                            }

                            var eighthourcandles = eighthourcandlesClient.Data.ToList();
                            if (eighthourcandles.Count == 0)
                            {
                                continue;
                            }

                            IOrderedEnumerable <BinanceKline> candlearray = eighthourcandles.OrderByDescending(e => e.CloseTime);
                            decimal averagevolumeeighthours = candlearray.Average(candlestick => candlestick.Volume);
                            decimal fifteenminavg           = (candlearray.ElementAt(1).Volume + candlearray.ElementAt(2).Volume +
                                                               candlearray.ElementAt(0).Volume) / 3;


                            var orderBook = await client.GetOrderBookAsync(pricer[0].ToString(), 5);

                            //BinanceOrderBook orderBook = await client.GetOrderBookAsync(pricer[0].ToString(), 10);
                            IOrderedEnumerable <BinanceOrderBookEntry> orderAsks = orderBook.Data.Asks.OrderBy(e => e.Price);
                            IOrderedEnumerable <BinanceOrderBookEntry> orderBids = orderBook.Data.Bids.OrderBy(e => e.Price);


                            decimal totAsk        = orderAsks.AsEnumerable().Sum(o => o.Quantity);
                            decimal totBid        = orderBids.AsEnumerable().Sum(o => o.Quantity);
                            decimal rangeQuantity = 100 * (totBid - totAsk) / (totAsk + totBid);
                            decimal maxAsk        = orderAsks.First().Quantity;
                            decimal maxBid        = orderBids.First().Quantity;
                            decimal range         = 100 * (maxBid - maxAsk) / (maxAsk + maxBid);


                            var aggTrades = await client.GetAggregatedTradesAsync(pricer[0].ToString(), startTime : DateTime.UtcNow.AddMinutes(-2), endTime : DateTime.UtcNow, limit : 10);

                            if (aggTrades.Success == false)
                            {
                                continue;
                            }
                            //.Data.ToList()
                            DataRow row = CoinData.Rows.Cast <DataRow>().First(o => o[0].ToString() == pricer[0].ToString());
                            row[1] = DateTime.UtcNow;
                            row[2] = eighthourcandles.Last().Close;
                            row[3] = Decimal.Round(averagevolumeeighthours, MidpointRounding.AwayFromZero);
                            row[4] = PercentGive(candlearray.First().Volume, averagevolumeeighthours);
                            row[5] = PercentGive(fifteenminavg, averagevolumeeighthours);
                            row[7] = Math.Round(range, 5);
                            row[8] = Math.Round(rangeQuantity, 5);
                            int i = 0;
                            while (i != 20)
                            {
                                if (candlearray.ElementAt(i).Close < candlearray.ElementAt(i + 1).Close)
                                {
                                    break;
                                }
                                i++;
                            }
                            row[6] = i;

                            if (enableTrading)
                            {
                                IEnumerable <Candle> candls = candlearray.Select(p => new Candle(p.CloseTime, p.Open, p.High, p.Low, p.Close, p.Volume)).OrderBy(p => p.DateTime);
                                Trady.Analysis.Indicator.AverageDirectionalIndexRating avgDirIdx = new Trady.Analysis.Indicator.AverageDirectionalIndexRating(candls, 12, 12);
                                Trady.Analysis.Indicator.ExponentialMovingAverage      mavgFast  = new Trady.Analysis.Indicator.ExponentialMovingAverage(candls, 7);
                                //Trady.Analysis.Indicator.ExponentialMovingAverage mavgSlow = new Trady.Analysis.Indicator.ExponentialMovingAverage(candls, 50);
                                //Trady.Analysis.Indicator.IchimokuCloud ich = new Trady.Analysis.Indicator.IchimokuCloud(candls, 3, 9, 50);
                                Trady.Analysis.Indicator.SimpleMovingAverage ind_mavgFast = new Trady.Analysis.Indicator.SimpleMovingAverage(candls, 7);
                                Trady.Analysis.Indicator.SimpleMovingAverage ind_mavgSlow = new Trady.Analysis.Indicator.SimpleMovingAverage(candls, 50);
                                //var ind_mavgFast = candls.Sma(7).LastOrDefault().Tick;
                                //var ind_mavgSlow = candls.Sma(50).LastOrDefault().Tick;

                                /*
                                 * if (ind_mavgFast != null && ind_mavgSlow != null) {
                                 * if (ind_mavgFast > ind_mavgSlow)
                                 * {
                                 * var ind_adx = candls.SlowSto(7,14).LastOrDefault().Tick.Item1;
                                 * //Binance.Account.Orders.LimitOrder lmtOrder = new Binance.Account.Orders.LimitOrder(iuser);
                                 * //lmtOrder.Symbol = pricer[0].ToString();
                                 * //lmtOrder.Id = "1230";
                                 * //lmtOrder.Price = candlearray.First().Close;
                                 * //lmtOrder.Quantity = 100000;
                                 * //lmtOrder.IcebergQuantity = 12;
                                 * //api.PlaceAsync(lmtOrder, 0, CancellationToken.None);
                                 * //var testOrderResult = client.PlaceTestOrder(pricer[0].ToString(), OrderSide.Buy, OrderType.Market, 1, price: 1, timeInForce: TimeInForce.GoodTillCancel);
                                 * }
                                 * }*/
                            }

                            sql = "INSERT INTO ORDERS (Symbol, Scanned, Price, Volume, TakerBuyBaseAssetVolume, TakerBuyQuoteAssetVolume, NumberOfTrades, Hr8Av, NowPercent, Min15Percent, GreenCandles) VALUES ('" + pricer[0].ToString() + "','" + row[1].ToString() + "', '" + row[2].ToString() + "', '" + candlearray.First().Volume.ToString() + "', '" + candlearray.First().TakerBuyBaseAssetVolume.ToString() + "', '" + candlearray.First().TakerBuyQuoteAssetVolume.ToString() + "', '" + candlearray.First().TradeCount.ToString() + "', '" + row[3].ToString() + "', '" + row[4].ToString() + "', '" + row[5].ToString() + "', '" + row[6].ToString() + "');";
                            SQLiteCommand command = new SQLiteCommand(sql, _conn);
                            await command.ExecuteNonQueryAsync();

                            //var filtered = CoinData.Select().Where(o => Convert.ToDecimal(o[3].ToString()) > Convert.ToDecimal(o[4].ToString()));
                            if (this.WindowState != FormWindowState.Minimized)
                            {
                                await Task.Run(() =>
                                {
                                    backgroundWorkerView.RunWorkerAsync();
                                    //coindatagridview.DataSource = CoinData;
                                    //DataViewColours();

                                    //    //coindatagridview.Sort(coindatagridview.Columns[3], ListSortDirection.Descending);
                                });
                            }
                        }
                    }
                }
            //return CoinData;
        }