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); } }
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); }