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;
            }
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
        /// <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);
        }
Esempio n. 7
0
        /// <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()));
        }
Esempio n. 8
0
        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);
            }
        }
Esempio n. 10
0
        /// <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);
        }
Esempio n. 11
0
 public override List <TradeHistoryItem> GetTrades(TickerBase ticker, DateTime starTime)
 {
     throw new NotImplementedException();
 }
Esempio n. 12
0
        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()); }
        }
Esempio n. 13
0
 public override bool UpdateMyTrades(TickerBase ticker)
 {
     return(true);
 }
Esempio n. 14
0
 public override bool UpdateOpenedOrders(TickerBase tickerBase)
 {
     return(true);
 }
Esempio n. 15
0
        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);
        }
Esempio n. 16
0
 public override bool CancelOrder(TickerBase ticker, OpenedOrderInfo info)
 {
     throw new NotImplementedException();
 }
Esempio n. 17
0
        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;
            }
        }
Esempio n. 18
0
 public override bool ProcessOrderBook(TickerBase tickerBase, string text)
 {
     throw new NotImplementedException();
 }