public static void Connect(this BitcoinChartsClient client)
 {
     client.Connect(x => x
                    .Address("api.bitcoincharts.com")
                    .Port(27007)
                    );
 }
示例#2
0
 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)
                                  ));
 }
示例#5
0
        /// <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("*")));
 }
示例#7
0
文件: Main.cs 项目: erdincay/easybot
        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;
            }
        }