Exemplo n.º 1
0
            public static void PullTickerHistoryRecent(CurrencyPair pair)
            {
                if (!AllowTickerUpdate)
                {
                    return;
                }

                if (tickerData == null)
                {
                    tickerData = new TSList <TSList <TickerChangedEventArgs> >();
                }
                allowUpdatePairs = new List <CurrencyPair>();

                List <PoloniexAPI.MarketTools.ITrade> trades = WebApiCustom.GetTrades(pair);

                if (trades != null)
                {
                    TickerChangedEventArgs[] fakeTickers = new TickerChangedEventArgs[trades.Count];

                    for (int i = 0; i < trades.Count; i++)
                    {
                        MarketData             md     = new MarketData(trades[i].PricePerCoin);
                        TickerChangedEventArgs ticker = new TickerChangedEventArgs(pair, md);
                        fakeTickers[i] = ticker;
                    }

                    TSList <TickerChangedEventArgs> tickerList = new TSList <TickerChangedEventArgs>(fakeTickers);
                    tickerList.Sort();

                    tickerData.Add(tickerList);
                    allowUpdatePairs.Add(pair);
                }
            }
Exemplo n.º 2
0
            public static bool PullTickerHistory(CurrencyPair pair, long startTimestamp, long endTimestamp)
            {
                if (!AllowTickerUpdate)
                {
                    return(false);
                }

                if (tickerData == null)
                {
                    tickerData = new TSList <TSList <TickerChangedEventArgs> >();
                }
                if (allowUpdatePairs == null)
                {
                    allowUpdatePairs = new List <CurrencyPair>();
                }

                // pull last trades

                List <PoloniexAPI.MarketTools.ITrade> trades = new List <ITrade>();

                int failedAttempts = 0;

                while (true)
                {
                    try {
                        List <PoloniexAPI.MarketTools.ITrade> temp = WebApiCustom.GetTrades(pair, (int)startTimestamp, (int)endTimestamp);

                        trades.AddRange(temp);

                        if (temp.Count < 300)
                        {
                            break;
                        }

                        endTimestamp = Utility.DateTimeHelper.DateTimeToUnixTimestamp(temp.Last().Time);

                        failedAttempts = 0;

                        ThreadManager.ReportAlive("Data.Store");
                        Thread.Sleep(1500);
                    }
                    catch (Exception e) {
                        // Console.WriteLine(e.Message + "\n" + e.StackTrace);

                        Console.WriteLine(pair + " - ERROR");

                        failedAttempts++;
                        if (failedAttempts >= 5)
                        {
                            return(false);
                        }
                        Thread.Sleep(4000);
                    }
                }
                // convert into fake tickers

                if (trades.Count == 0)
                {
                    return(false);
                }

                TickerChangedEventArgs[] fakeTickers = new TickerChangedEventArgs[trades.Count];
                for (int j = 0; j < trades.Count; j++)
                {
                    MarketData md = new MarketData(trades[j].PricePerCoin);

                    TickerChangedEventArgs ticker = new TickerChangedEventArgs(pair, md);
                    ticker.Timestamp = DateTimeHelper.DateTimeToUnixTimestamp(trades[j].Time);

                    fakeTickers[j] = ticker;
                }

                // dump them into ticker data

                TSList <TickerChangedEventArgs> tickerList = new TSList <TickerChangedEventArgs>(fakeTickers);

                tickerList.Sort();

                tickerData.Add(tickerList);
                allowUpdatePairs.Add(pair);

                return(true);
            }