public async Task <IEnumerable <CandleModel> > GetCandlesAsync(string tradingPair, CandlePeriod candlePeriod, long start, long?end) { using (var client = GetClient()) { client.DefaultRequestHeaders.Add("API-Key", _krakenOptions.ApiKey); var endPointUrl = $"/0/public/OHLC?pair={tradingPair}&interval={(int) candlePeriod}&since={start}"; using (var response = await client.GetAsync(endPointUrl)) { if (!response.IsSuccessStatusCode) { throw new Exception($"Response code: {response.StatusCode}"); } var resultResponseContent = await response.Content.ReadAsStringAsync(); var obj = (JObject)JsonConvert.DeserializeObject(resultResponseContent); var err = (JArray)obj["error"]; if (err.Count != 0) { throw new Exception(err[0].ToString()); } var result = obj["result"].Value <JObject>(); var krakenResult = new KrakenResult { Candles = new Dictionary <string, List <KrakenCandle> >() }; foreach (var o in result) { if (o.Key == "last") { krakenResult.Last = o.Value.Value <long>(); } else { var ohlc = o.Value.ToObject <decimal[][]>() .Select(v => new KrakenCandle { Date = (long)v[0], Open = v[1], High = v[2], Low = v[3], Close = v[4], VolumeWeightedPrice = v[5], Volume = v[6], TradingCount = (int)v[7] }) .ToList(); krakenResult.Candles.Add(o.Key, ohlc); } } return(Mapper.Map <IEnumerable <CandleModel> >(krakenResult.Candles[tradingPair])); } } }
public string SerializeExpected <T>(T data) { var result = new KrakenResult <T>() { Result = data, Error = new string[] {} }; return(JsonConvert.SerializeObject(result)); }
private void MapKrakenOnlyProperties(KrakenComputingResult result, KrakenResult krakenResult) { result.GroupSpeed.AddRange(krakenResult.GroupSpeed); result.PhaseSpeed.AddRange(krakenResult.PhaseSpeed); result.K.AddRange(krakenResult.K); result.ModesCount = krakenResult.ModesCount; result.Modes.AddRange(krakenResult.Modes); result.ZM.AddRange(krakenResult.ZM); result.Warnings.AddRange(krakenResult.Warnings); result.GroupSpeed.RemoveAt(0); result.PhaseSpeed.RemoveAt(0); result.K.RemoveAt(0); result.ZM.RemoveAt(0); result.Modes.RemoveAt(0); foreach (var modes in result.Modes) { modes.RemoveAt(0); } }
public KrakenResult GetKrakenResult() { var data = new KrakenResult(); data.ModesCount = 44; data.GroupSpeed.AddRange(Enumerable.Repeat(0d, 45)); data.PhaseSpeed.AddRange(Enumerable.Repeat(0d, 45)); data.K.AddRange(Enumerable.Repeat(new Complex(), 45)); data.Modes.AddRange(new List <List <double> > { new List <double> { 0 }, new List <double> { 0 } }); data.ZM.AddRange(new List <double> { 0, 0, 0 }); return(data); }