Пример #1
0
        /// <summary>
        /// Read already downloaded OHLC data
        /// </summary>
        /// <param name="curPair"></param>
        /// <param name="freq"></param>
        /// <param name="item"></param>
        /// <returns></returns>
        private GetOHLCResult ReadOHLC(CurrencyPair curPair, Frequency freq, string item = "Close")
        {
            string        pathLib = GetOHLCLibraryPath(curPair, freq);
            GetOHLCResult res     = new GetOHLCResult
            {
                Pairs = new Dictionary <string, List <OHLC> > {
                    { curPair.GetRequestID(), new List <OHLC> {
                      } }
                }
            };
            List <string[]> csv       = StaticLibrary.LoadCsvFile(pathLib);
            bool            isHeaders = true;

            string[] headers = null;
            foreach (string[] array in csv)
            {
                if (isHeaders)
                {
                    headers = array; isHeaders = false;
                }
                else
                {
                    OHLC ohlc = DataLibraryStaticLibrary.ReadOHLCItems(array, headers);
                    res.Pairs[curPair.GetRequestID()].Add(ohlc);
                }
            }
            return(res);
        }
Пример #2
0
        /// <summary>
        /// Gets the ohlc.
        /// </summary>
        /// <param name="pair">The pair.</param>
        /// <param name="interval">The interval.</param>
        /// <param name="since">The since.</param>
        public GetOHLCResult GetOHLC(string pair, int?interval = null, int?since = null)
        {
            var param = new Dictionary <string, string>();

            param.Add("pair", pair);
            if (interval != null)
            {
                param.Add("interval", interval.ToString());
            }
            if (since != null)
            {
                param.Add("since", since.ToString());
            }

            var res = QueryPublic("OHLC", param);

            JObject obj = (JObject)JsonConvert.DeserializeObject(res);
            JArray  err = (JArray)obj["error"];

            if (err.Count != 0)
            {
                throw new KrakenException(err[0].ToString(), JsonConvert.DeserializeObject <ResponseBase>(res));
            }

            JObject result = obj["result"].Value <JObject>();

            var ret = new GetOHLCResult();

            ret.Pairs = new Dictionary <string, List <OHLC> >();

            foreach (var o in result)
            {
                if (o.Key == "last")
                {
                    ret.Last = o.Value.Value <long>();
                }
                else
                {
                    var ohlc = new List <OHLC>();
                    foreach (var v in o.Value.ToObject <decimal[][]>())
                    {
                        ohlc.Add(new OHLC()
                        {
                            Time = (int)v[0], Open = v[1], High = v[2], Low = v[3], Close = v[4], Vwap = v[5], Volume = v[6], Count = (int)v[7]
                        });
                    }
                    ret.Pairs.Add(o.Key, ohlc);
                }
            }

            return(ret);
        }
Пример #3
0
        public IEnumerable <TradeBar> DownloadTradeBars(Symbol symbol, DateTime startTimeUtc, DateTime endTimeUtc, Resolution resolution, DateTimeZone requestedTimeZone)
        {
            string krakenSymbol = SymbolMapper.GetBrokerageSymbol(symbol);

            int interval = ResolutionToInterval(resolution);

            GetOHLCResult result = _restApi.GetOHLC(krakenSymbol, interval, (int)ToUnix(startTimeUtc));

            Dictionary <string, List <OHLC> > dict = result.Pairs;

            List <OHLC> list = dict[krakenSymbol];

            foreach (OHLC candle in list)
            {
                yield return(new TradeBar(DateTimeOffset.FromUnixTimeSeconds(candle.Time).DateTime, symbol, candle.Open, candle.High, candle.Low, candle.Close, candle.Volume, TimeSpan.FromMinutes(interval)));
            }
        }
Пример #4
0
        /// <summary>
        /// Gets the history for the requested security
        /// </summary>
        /// <param name="request">The historical data request</param>
        /// <returns>An enumerable of bars covering the span specified in the request</returns>
        public override IEnumerable <BaseData> GetHistory(HistoryRequest request)
        {
            // TradeBar

            Symbol leanSymbol = request.Symbol;

            string krakenSymbol = SymbolMapper.GetBrokerageSymbol(leanSymbol);

            long startTime = ((DateTimeOffset)request.StartTimeUtc).ToUnixTimeSeconds();

            long     endTime  = ((DateTimeOffset)request.EndTimeUtc).ToUnixTimeSeconds();
            TickType tickType = request.TickType;

            Resolution resolution = request.Resolution;

            int interval = ResolutionToInterval(resolution);

            DateTimeZone zone = request.DataTimeZone;

            Type dataType = request.DataType;

            while (startTime > endTime)
            {
                GetOHLCResult result = _restApi.GetOHLC(krakenSymbol, interval, (int)startTime);

                startTime = result.Last;

                Dictionary <string, List <OHLC> > dict = result.Pairs;
                List <OHLC> list = dict[krakenSymbol];

                foreach (OHLC candle in list)
                {
                    if (candle.Time <= endTime)
                    {
                        yield return(new TradeBar(FromUnix(candle.Time), leanSymbol, candle.Open, candle.High, candle.Low, candle.Close, candle.Volume, TimeSpan.FromMinutes(interval)));
                    }
                }
            }

            yield return(null);
        }