public static void Connect(this BitcoinChartsClient client) { client.Connect(x => x .Address("api.bitcoincharts.com") .Port(27007) ); }
public static Task <bool> ConnectAsync(this BitcoinChartsClient client) { return(client.ConnectAsync(x => x .Address("api.bitcoincharts.com") .Port(27007) )); }
public static Task <Trades> GetTradesAsync(this BitcoinChartsClient client) { return(client.GetTradesAsync(x => x .Market("mtgox") .Currency("USD") )); }
public static Task <Trades> GetTradesAsync(this BitcoinChartsClient client, string market, string currency) { return(client.GetTradesAsync(x => x .Market(market) .Currency(currency) )); }
/// <summary> /// Returns candles from Bitcoincharts (for Bitcoins only) /// </summary> /// <param name="minValue">The from date</param> /// <param name="candlesDurationInMinutes">The candles' duration in miutes</param> /// <param name="market">The exchange</param> /// <param name="currency">The currency</param> /// <returns></returns> private static IList<OHLC> GetCandlesFromBitcoincharts(DateTime minValue, int candlesDurationInMinutes, string market, string currency) { lock (_obj) { var client = new BitcoinChartsClient(); IList<OHLC> aggregate = new List<OHLC>(); DateTime retrieveFrom = minValue; while (retrieveFrom.AddMinutes(candlesDurationInMinutes) < new DateTimeOffset(DateTime.Now)) { Task<BitcoinCharts.Models.Trades> tradeFetcher; if (retrieveFrom != DateTime.MinValue) { tradeFetcher = client.GetTradesAsync(new DateTimeOffset(retrieveFrom), market, currency); } else { tradeFetcher = client.GetTradesAsync(market, currency); } if (tradeFetcher.Status == TaskStatus.Faulted) { break; } try { tradeFetcher.Wait(); } catch (Exception ex) { Logger.Log(ex); MessageBox.Show(ex.ToString()); } if (tradeFetcher.Status == TaskStatus.Faulted) { throw new Exception("Failed to get values from Bitcoincharts"); } if (tradeFetcher.Result != null && tradeFetcher.Result.Count > 0) { IList<OHLC> candles = CandlesProvider.CalculateOHLCFromTrades(tradeFetcher.Result, candlesDurationInMinutes, TradeSource.BitcoinCharts).Where(x => x.Date >= minValue).ToList(); ; if (candles.Count() == 0 || candles.Last().Date == retrieveFrom) { break; } else { if (aggregate.Count > 0) { aggregate.RemoveAt(aggregate.Count - 1); } aggregate = aggregate.Union(candles).ToList(); retrieveFrom = candles.Last().Date; } } else { break; } }//while return aggregate.OrderBy(i => i.Date).ToList(); }//lock }
public static IObservable <Trade> Trades(this BitcoinChartsClient client) { return(client.Trades(x => x.Symbol("*"))); }
private IList<OHLC> GetCandlesFromBitcoincharts(DateTime minValue, double interval) { string currency = pair.ToString().Substring(pair.ToString().IndexOf("_") + 1, 3).ToUpperInvariant(); lock (this) { var client = new BitcoinChartsClient(); IList<OHLC> aggregate = new List<OHLC>(); while (minValue.AddMinutes(interval) < DateTime.Now) { Task<BitcoinCharts.Models.Trades> tradeFetcher; if (minValue != DateTime.MinValue) tradeFetcher = client.GetTradesAsync(new DateTimeOffset(minValue), "btce", currency); else tradeFetcher = client.GetTradesAsync("btce", currency); if (tradeFetcher != null && tradeFetcher.Status != TaskStatus.Faulted) { try { tradeFetcher.Wait(); } catch (Exception) { } if (tradeFetcher.Status != TaskStatus.Faulted) { if (tradeFetcher.Result != null && tradeFetcher.Result.Count > 0) { IList<OHLC> candles = CalculateOHLCFromTrades(tradeFetcher.Result, interval, TradeSource.BitcoinCharts).Where(x => x.Date > minValue).ToList(); ; if (candles.Count() > 0) { aggregate = aggregate.Union(candles).ToList(); minValue = candles.Last().Date; } else break; } else break; } else throw new Exception("Failed to get values from Bitcoincharts"); } else break; } return aggregate; } }