public void UpdateTickersInfo() { string address = "https://poloniex.com/public?command=returnTicker"; string text = GetDownloadString(address); if (string.IsNullOrEmpty(text)) { return; } JObject res = (JObject)JsonConvert.DeserializeObject(text); foreach (JProperty prop in res.Children()) { PoloniexTicker t = Tickers.FirstOrDefault((i) => i.CurrencyPair == prop.Name); JObject obj = (JObject)prop.Value; t.Last = obj.Value <double>("last"); t.LowestAsk = obj.Value <double>("lowestAsk"); t.HighestBid = obj.Value <double>("highestBid"); t.Change = obj.Value <double>("percentChange"); t.BaseVolume = obj.Value <double>("baseVolume"); t.Volume = obj.Value <double>("quoteVolume"); t.IsFrozen = obj.Value <int>("isFrozen") != 0; t.Hr24High = obj.Value <double>("high24hr"); t.Hr24Low = obj.Value <double>("low24hr"); } }
public void GetOrderBook(PoloniexTicker ticker, int depth) { string address = string.Format("https://poloniex.com/public?command=returnOrderBook¤cyPair={0}&depth={1}", Uri.EscapeDataString(ticker.CurrencyPair), depth); string text; using (WebClient client = new WebClient()) { text = client.DownloadString(address); } ticker.OrderBook.Bids.Clear(); ticker.OrderBook.Asks.Clear(); JObject res = (JObject)JsonConvert.DeserializeObject(text); foreach (JProperty prop in res.Children()) { if (prop.Name == "asks" || prop.Name == "bids") { OrderBookEntryType type = prop.Name == "asks" ? OrderBookEntryType.Ask : OrderBookEntryType.Bid; JArray items = prop.Value.ToObject <JArray>(); foreach (JArray item in items.Children()) { OrderBookUpdateInfo info = new OrderBookUpdateInfo(); info.Type = prop.Name == "asks" ? OrderBookEntryType.Ask : OrderBookEntryType.Bid; info.Entry = new OrderBookEntry(); info.Action = OrderBookUpdateType.Modify; JEnumerable <JToken> values = (JEnumerable <JToken>)item.Children(); JValue rateValue = (JValue)values.First(); info.Entry.Value = rateValue.ToObject <double>(); info.Entry.Amount = rateValue.Next.ToObject <double>(); if (type == OrderBookEntryType.Ask) { ticker.OrderBook.ForceAddAsk(info); } else { ticker.OrderBook.ForceAddBid(info); } } } else if (prop.Name == "seq") { ticker.OrderBook.SeqNumber = prop.Value.ToObject <int>(); Console.WriteLine("Snapshot seq no = " + ticker.OrderBook.SeqNumber); } else if (prop.Name == "isFrozen") { ticker.IsFrozen = prop.Value.ToObject <int>() == 0; } } ticker.OrderBook.ApplyQueueUpdates(); }
protected void RaiseTickerUpdate(PoloniexTicker t) { TickerUpdateEventArgs e = new TickerUpdateEventArgs() { Ticker = t }; if (TickerUpdate != null) { TickerUpdate(this, e); } t.RaiseChanged(); }
public IDisposable ConnectOrderBook(PoloniexTicker ticker) { ticker.OrderBook.Updates.Clear(); DefaultWampChannelFactory channelFactory = new DefaultWampChannelFactory(); IWampChannel wampChannel = channelFactory.CreateJsonChannel(PoloniexServerAddress, "realm1"); wampChannel.Open().Wait(); ISubject <OrderBookUpdateInfo> subject = wampChannel.RealmProxy.Services.GetSubject <OrderBookUpdateInfo>(ticker.OrderBook.Owner.Name, new OrderBookUpdateInfoConverter()); return(subject.Subscribe(x => ticker.OrderBook.OnRecvUpdate(x))); }
public void Assign(PoloniexTicker ticker) { CurrencyPair = ticker.CurrencyPair; Last = ticker.Last; LowestAsk = ticker.LowestAsk; HighestBid = ticker.HighestBid; Change = ticker.Change; BaseVolume = ticker.BaseVolume; Volume = ticker.Volume; IsFrozen = ticker.IsFrozen; Hr24High = ticker.Hr24High; Hr24Low = ticker.Hr24Low; Time = ticker.Time; }
private void GetTickerItem(PoloniexTicker item) { lock (Tickers) { PoloniexTicker t = Tickers.FirstOrDefault((i) => i.CurrencyPair == item.CurrencyPair); if (t != null) { lock (t) { t.Assign(item); t.UpdateHistoryItem(); RaiseTickerUpdate(t); } } else { Tickers.Add(item); RaiseTickerUpdate(item); } } }
public void UpdateTrades(PoloniexTicker ticker) { throw new NotImplementedException(); }
void UpdateGrid(PoloniexTicker info) { int rowHandle = this.gridView1.GetRowHandle(info.Index); this.gridView1.RefreshRow(rowHandle); }