public KLine GetKLine(KLineRange range)
 {
     return(new KLine
     {
         Depths = TradeQueue.Instance.GetDepths(),
         Info = TradeLogger.Instance.GetInfo(),
         Trades = TradeLogger.Instance.GetTrades(),
         Lines = TradeLogger.Instance.GetKLine(range)
     });
 }
        public List <List <decimal> > GetKLine(KLineRange range)
        {
            if (!klines.ContainsKey(range))
            {
                return(new List <List <decimal> >());
            }

            var lines = klines[range];

            return(lines.Select(e => new List <decimal> {
                e.TimeScale.AsLong(), e.Open, e.High, e.Low, e.Close, e.Volume
            }).ToList());
        }
示例#3
0
        public Result <Quotation> GetQuotation(string symbol, KLineRange range)
        {
            var quotation = new Quotation {
                Symbol = symbol, Range = range, Success = false
            };
            var result = service.GetKLine(range);

            if (result.Status == ResultStatus.Success)
            {
                quotation.KLine   = result.Data;
                quotation.Success = true;
            }

            return(Result.Success(quotation));
        }
        public DateTime GetTimeScale(KLineRange range, DateTime time)
        {
            DateTime timescale = time;

            switch (range)
            {
            case KLineRange.D30:
                timescale = time.FirstDayOfMonth();
                break;

            case KLineRange.D7:
                timescale = time.FirstDayOfWeek();
                break;

            case KLineRange.D1:
                timescale = time.Date;
                break;

            case KLineRange.H1:
                timescale = time.ToString("yyyy-MM-dd HH:00:00").AsDateTime();
                break;

            case KLineRange.M30:
                timescale = time.ToString("yyyy-MM-dd HH:00:00").AsDateTime().AddMinutes(Math.Floor((double)time.Minute / 30) * 30);
                break;

            case KLineRange.M15:
                timescale = time.ToString("yyyy-MM-dd HH:00:00").AsDateTime().AddMinutes(Math.Floor((double)time.Minute / 15) * 15);
                break;

            case KLineRange.M5:

                timescale = time.ToString("yyyy-MM-dd HH:00:00").AsDateTime().AddMinutes(Math.Floor((double)time.Minute / 5) * 5);
                break;

            case KLineRange.M1:
                timescale = time.ToString("yyyy-MM-dd HH:mm:00").AsDateTime().AddMinutes(time.Second > 0 ? 1 : 0);
                break;

            default:
                break;
            }

            return(timescale);
        }
示例#5
0
 public Result <KLine> GetKLine(KLineRange range)
 {
     return(Result.Success(drive.GetKLine(range)));
 }