public override bool UpdateTicker(TickerBase tickerBase) { string address = "https://yobit.net/api/3/ticker/" + tickerBase.CurrencyPair; string text = string.Empty; try { text = GetDownloadString(address); } catch (Exception) { return(false); } if (string.IsNullOrEmpty(text)) { return(false); } JObject res = (JObject)JsonConvert.DeserializeObject(text); res = res.Value <JObject>(tickerBase.CurrencyPair); tickerBase.Hr24High = res.Value <double>("high"); tickerBase.Hr24Low = res.Value <double>("low"); tickerBase.Volume = res.Value <double>("vol"); tickerBase.BaseVolume = res.Value <double>("vol_cur"); tickerBase.Last = res.Value <double>("last"); tickerBase.HighestBid = res.Value <double>("buy"); tickerBase.LowestAsk = res.Value <double>("ask"); tickerBase.Time = DateTime.UtcNow; return(true); }
public override bool UpdateOrderBook(TickerBase ticker) { string address = string.Format("https://yobit.net/api/3/depth/{0}?depth={1}", Uri.EscapeDataString(ticker.CurrencyPair), OrderBook.Depth); string text = ((TickerBase)ticker).DownloadString(address); if (string.IsNullOrEmpty(text)) { return(false); } Dictionary <string, object> res2 = null; lock (JsonParser) { res2 = JsonParser.Parse(text) as Dictionary <string, object>; if (res2 == null) { return(false); } } res2 = (Dictionary <string, object>)res2[ticker.CurrencyPair]; List <object> bids = (List <object>)res2["bids"]; List <object> asks = (List <object>)res2["asks"]; ticker.OrderBook.GetNewBidAsks(); int index = 0; OrderBookEntry[] list = ticker.OrderBook.Bids; foreach (List <object> item in bids) { OrderBookEntry entry = list[index]; entry.ValueString = (string)item.First(); entry.AmountString = (string)item.Last(); index++; if (index >= list.Length) { break; } } index = 0; list = ticker.OrderBook.Asks; foreach (List <object> item in asks) { OrderBookEntry entry = list[index]; entry.ValueString = (string)item.First(); entry.AmountString = (string)item.Last(); index++; if (index >= list.Length) { break; } } ticker.OrderBook.UpdateEntries(); ticker.OrderBook.RaiseOnChanged(new OrderBookUpdateInfo() { Action = OrderBookUpdateType.RefreshAll }); return(true); }
private void Button1_Click(object sender, EventArgs e) { try { // PostgeSQL-style connection string string connstring = String.Format("Server={0};Port={1};" + "User Id={2};Password={3};Database={4};", "127.0.0.1", "5433", "lemon", "admin", "DailyTrading"); var dao = new TickerDAO(connstring, "HDB"); var ticker = new TickerBase { Day = new DateTime(2019, 08, 23), Open = 45.6, Hight = 45.6, Low = 45.6, Close = 45.6, Volume = 4444 }; //dao.Insert(ticker); var data = dao.SelectALL("HDB"); if (data.Count() > 0) { Console.WriteLine("lay dl:" + data.Count()); } } catch (Exception msg) { // something went wrong, and you wanna know why MessageBox.Show(msg.ToString()); throw; } }
/// <summary> /// Populate business objects from the data reader /// </summary> /// <param name="dataReader">data reader</param> /// <returns>list of ClassInfo</returns> public List <TickerBase> PopulateBusinessObjectFromReader(IDataReader dataReader) { var list = new List <TickerBase>(); while (dataReader.Read()) { var businessObject = new TickerBase(); PopulateBusinessObjectFromReader(businessObject, dataReader); list.Add(businessObject); } return(list); }
/// <summary> /// Update Key after excutant insert to DB. /// </summary> /// <param name="businessObject">business object</param> /// <returns>true for successfully updated</returns> public TickerBase UpdateEntityId(TickerBase baseEntity, NpgsqlCommand sqlCommand) { if (baseEntity != null) { var businessObject = baseEntity as TickerBase; if (businessObject != null) { } return(businessObject); } return(null); }
/// <summary> /// Create a command for action Delete /// </summary> /// <param name="baseEntity"></param> /// <returns></returns> public NpgsqlCommand GetSqlCommandForDelete(TickerBase baseEntity) { var sqlCommand = new NpgsqlCommand { CommandType = CommandType.StoredProcedure }; if (baseEntity != null) { var businessObject = baseEntity as TickerBase; if (businessObject != null) { } } return(sqlCommand); }
/// <summary> /// Populate business object from data reader /// </summary> /// <param name="businessObject">business object</param> /// <param name="dataReader">data reader</param> internal void PopulateBusinessObjectFromReader(TickerBase businessObject, IDataReader dataReader) { businessObject.Day = dataReader.GetDateTime(dataReader.GetOrdinal(TickerBase.TickerBaseFields.Day.ToString())); if (!dataReader.IsDBNull(dataReader.GetOrdinal(TickerBase.TickerBaseFields.Open.ToString()))) { businessObject.Open = dataReader.GetFloat(dataReader.GetOrdinal(TickerBase.TickerBaseFields.Open.ToString())); } businessObject.Hight = dataReader.GetFloat(dataReader.GetOrdinal(TickerBase.TickerBaseFields.Hight.ToString())); businessObject.Low = dataReader.GetFloat(dataReader.GetOrdinal(TickerBase.TickerBaseFields.Low.ToString())); businessObject.Close = dataReader.GetFloat(dataReader.GetOrdinal(TickerBase.TickerBaseFields.Close.ToString())); businessObject.Volume = dataReader.GetFloat(dataReader.GetOrdinal(TickerBase.TickerBaseFields.Volume.ToString())); }
public int Insert(TickerBase entity) { var conn = new Npgsql.NpgsqlConnection(connectionstring); try { conn.Open(); var cmd = entitySql.GetSqlCommandForInsert(entity); cmd.Connection = conn; cmd.ExecuteNonQuery(); } catch (Exception msg) { // something went wrong, and you wanna know why Console.WriteLine(msg.ToString()); } conn.Close(); return(1); }
public override BindingList <CandleStickData> GetCandleStickData(TickerBase ticker, int candleStickPeriodMin, DateTime start, long periodInSeconds) { string address = string.Format("https://yobit.net/ajax/system_chart.php"); NameValueCollection coll = new NameValueCollection(); coll.Add("method", "chart"); coll.Add("nonce", DateTime.Now.Ticks.ToString()); coll.Add("pair_id", "40001"); coll.Add("mode", "12"); WebClient client = GetWebClient(); try { byte[] data = client.UploadValues(address, coll); string text = System.Text.Encoding.ASCII.GetString(data); if (string.IsNullOrEmpty(text)) { return(null); } JObject res = (JObject)JsonConvert.DeserializeObject(text); JArray items = res.Value <JArray>("data"); BindingList <CandleStickData> list = new BindingList <CandleStickData>(); foreach (JArray item in items) { CandleStickData c = new CandleStickData(); long seconds = item[0].Value <long>(); c.Time = new DateTime(1970, 1, 1).AddMilliseconds(seconds); c.Volume = item[1].Value <double>(); c.QuoteVolume = item[2].Value <double>(); c.Open = item[3].Value <double>(); c.High = item[4].Value <double>(); c.Low = item[5].Value <double>(); c.Close = item[6].Value <double>(); list.Add(c); } return(list); } catch (Exception e) { Debug.WriteLine("get candlestcik history exception: " + e.ToString()); return(null); } }
/// <summary> /// Create a command for action insert /// </summary> /// <param name="baseEntity"></param> /// <returns></returns> public NpgsqlCommand GetSqlCommandForInsert(TickerBase baseEntity) { var sqlCommand = new NpgsqlCommand { CommandType = System.Data.CommandType.Text, CommandText = Insertsql }; if (baseEntity != null) { var businessObject = baseEntity as TickerBase; if (businessObject != null) { sqlCommand.Parameters.AddWithValue("Day", NpgsqlTypes.NpgsqlDbType.Date, businessObject.Day); sqlCommand.Parameters.AddWithValue("Open", NpgsqlTypes.NpgsqlDbType.Real, businessObject.Open); sqlCommand.Parameters.AddWithValue("Hight", NpgsqlTypes.NpgsqlDbType.Real, businessObject.Hight); sqlCommand.Parameters.AddWithValue("Low", NpgsqlTypes.NpgsqlDbType.Real, businessObject.Low); sqlCommand.Parameters.AddWithValue("Close", NpgsqlTypes.NpgsqlDbType.Real, businessObject.Close); sqlCommand.Parameters.AddWithValue("Volume", NpgsqlTypes.NpgsqlDbType.Real, businessObject.Volume); } } return(sqlCommand); }
public override List <TradeHistoryItem> GetTrades(TickerBase ticker, DateTime starTime) { throw new NotImplementedException(); }
private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (e.Url.Host.Equals("")) { return; } try { var browser = sender as WebBrowser; HtmlElementCollection textel = browser.Document.Body.GetElementsByTagName("table"); var doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(browser.DocumentText); var node = doc.DocumentNode.Descendants("table"); var listData = new List <TickerBase>(); var ticker = GetTicker(e.Url.ToString()); foreach (var mynode in node) { if (mynode.Attributes["class"] != null && mynode.Attributes["class"].Value == "dataTable") { foreach (var mytr in mynode.ChildNodes) { if (mytr.Name == "tr") { int i = 0; var mydata = new TickerBase(); foreach (var mytd in mytr.ChildNodes) { if (mytd.Name == "td") { var data = mytd.InnerText.Trim(); //ngay if (i == 0) { mydata.Day = DateTime.ParseExact(data, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture); } //close if (i == 2) { mydata.Open = Double.Parse(data); } //v if (i == 3) { mydata.Hight = Double.Parse(data); } //o if (i == 4) { mydata.Low = Double.Parse(data); } //h if (i == 5) { mydata.Close = Double.Parse(data); } //l if (i == 8) { mydata.Volume = Double.Parse(data.Replace('.', ',')); } i++; } } if (mydata.IsHasData()) { listData.Add(mydata); } } } } } //lưu vao DB var dbManager = new DBManager(); dbManager.InsertTicker(ticker, listData); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
public override bool UpdateMyTrades(TickerBase ticker) { return(true); }
public override bool UpdateOpenedOrders(TickerBase tickerBase) { return(true); }
public override bool UpdateTrades(TickerBase ticker) { string address = string.Format("https://yobit.net/api/3/trades/{0}", Uri.EscapeDataString(ticker.CurrencyPair)); string text = ((TickerBase)ticker).DownloadString(address); if (string.IsNullOrEmpty(text)) { return(false); } JObject obj2 = (JObject)JsonConvert.DeserializeObject(text); JArray trades = (JArray)obj2.Value <JArray>(ticker.CurrencyPair); if (trades.Count == 0) { return(true); } int lastTradeId = trades.First().Value <int>("tid"); long lastGotTradeId = ticker.TradeHistory.Count > 0 ? ticker.TradeHistory.First().Id : 0; if (lastGotTradeId == lastTradeId) { ticker.TradeStatistic.Add(new TradeStatisticsItem() { Time = DateTime.UtcNow }); if (ticker.TradeStatistic.Count > 5000) { for (int i = 0; i < 100; i++) { ticker.TradeStatistic.RemoveAt(0); } } return(true); } TradeStatisticsItem st = new TradeStatisticsItem(); st.MinBuyPrice = double.MaxValue; st.MinSellPrice = double.MaxValue; st.Time = DateTime.UtcNow; int index = 0; foreach (JObject obj in trades) { DateTime time = new DateTime(1970, 1, 1).AddSeconds(obj.Value <long>("timestamp")); int tradeId = obj.Value <int>("tid"); if (lastGotTradeId == tradeId) { break; } TradeHistoryItem item = new TradeHistoryItem(); bool isBuy = obj.Value <string>("type") == "bid"; item.AmountString = obj.Value <string>("amount"); item.Time = time; item.Type = isBuy ? TradeType.Buy : TradeType.Sell; item.RateString = obj.Value <string>("price"); item.Id = tradeId; double price = item.Rate; double amount = item.Amount; item.Total = price * amount; if (isBuy) { st.BuyAmount += amount; st.MinBuyPrice = Math.Min(st.MinBuyPrice, price); st.MaxBuyPrice = Math.Max(st.MaxBuyPrice, price); st.BuyVolume += amount * price; } else { st.SellAmount += amount; st.MinSellPrice = Math.Min(st.MinSellPrice, price); st.MaxSellPrice = Math.Max(st.MaxSellPrice, price); st.SellVolume += amount * price; } ticker.TradeHistory.Insert(index, item); index++; } if (st.MinSellPrice == double.MaxValue) { st.MinSellPrice = 0; } if (st.MinBuyPrice == double.MaxValue) { st.MinBuyPrice = 0; } ticker.LastTradeStatisticTime = DateTime.UtcNow; ticker.TradeStatistic.Add(st); if (ticker.TradeStatistic.Count > 5000) { for (int i = 0; i < 100; i++) { ticker.TradeStatistic.RemoveAt(0); } } return(true); }
public override bool CancelOrder(TickerBase ticker, OpenedOrderInfo info) { throw new NotImplementedException(); }
private void Button2_Click(object sender, EventArgs e) { try { var listdata = new List <TickerBase>(); var fileName = textBox2.Text; var tickerbase = textBox1.Text; var lines = File.ReadAllLines(fileName); foreach (var line in lines) { if (line.Length < 2) { continue; } //tach value/ var listvalues = line.Split(','); if (listvalues[0].Contains("DATE")) { continue; } var ticker = new TickerBase(); ticker.Day = DateTime.ParseExact(listvalues[0], "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture); ticker.Close = float.Parse(listvalues[1]); ticker.Open = float.Parse(listvalues[3]); ticker.Hight = float.Parse(listvalues[4]); ticker.Low = float.Parse(listvalues[5]); ticker.Volume = float.Parse(listvalues[6]); listdata.Add(ticker); } string connstring = String.Format("Server={0};Port={1};" + "User Id={2};Password={3};Database={4};", "127.0.0.1", "5433", "lemon", "admin", "DailyTrading"); var dao = new TickerDAO(connstring, tickerbase); var listTickerLoad = new List <TickerBase>(); //check db da tao chua var isexistticker = dao.IsTableExisted(tickerbase); if (isexistticker) { listTickerLoad.AddRange(dao.SelectALL(tickerbase)); } else { //taoj moi tabke dao.CreateTable(tickerbase); dao.SetOwner(tickerbase); } //get all data check trung //insert to db foreach (var entity in listdata) { if (listTickerLoad.Contains(entity)) { continue; } dao.Insert(entity); } } catch (Exception msg) { // something went wrong, and you wanna know why MessageBox.Show(msg.ToString()); throw; } }
public override bool ProcessOrderBook(TickerBase tickerBase, string text) { throw new NotImplementedException(); }