Esempio n. 1
0
        private async Task ProcessParse(CoinPair pair)
        {
            HtmlNode bestObmen;

            try
            {
                //var idFrom = GetIdPair(pair.CoinFrom);
                //var idTo = GetIdPair(pair.CoinTo);

                //var html = await _web.GetInfoOnPairs(idFrom, idTo);
                //bestObmen = html.DocumentNode.SelectNodes("//tr").Where(x => x.Attributes["onclick"] != null).Select(x => x).FirstOrDefault();

                //var data = new MarketData();
                //data.Pair = pair;
                ////data.Reserv = Convert.ToDecimal(bestObmen.SelectSingleNode(".//td[@class='ar']").InnerText);
                //data.Price = Convert.ToDecimal(bestObmen.SelectNodes(".//td[@class='bi']")[1].InnerText.Split(' ')[0]);
                //data.UrlObmenik = bestObmen.SelectSingleNode(".//td[@class='bj']/div/a").Attributes["href"].Value;
                //data.NameObmenik = bestObmen.SelectSingleNode(".//td[@class='bj']/div/div").InnerText;

                //Market.Add(data);

                //var listObmen = html.DocumentNode.SelectNodes("//tr").Where(x => x.Attributes["onclick"] != null).Select(x => x);
                //foreach (var item in listObmen)
                //{
                //    var url = item.SelectSingleNode(".//td[@class='bj']/div[@class='pa']/a").Attributes["href"].Value;
                //    var name = item.SelectSingleNode(".//td[@class='bj']/div[@class='pa']/div[@class='pc']").InnerText;
                //    var curse = item.SelectNodes(".//td[@class='bi']")[1].InnerText.Split(' ')[0];
                //    var reserv = item.SelectSingleNode(".//td[@class='ar arp']").InnerText;
                //}
            }
            catch (Exception e)
            {
            }
        }
Esempio n. 2
0
        static float TotalWealth(Yobit.YobitApiClient yobitApiClient, string resultCoin)
        {
            resultCoin = resultCoin.ToLower();

            var accountInfo = yobitApiClient.GetInfo();

            if (accountInfo.success == 0)
            {
                throw new Exception("Метод GetInfo возвратил ошибку: " + accountInfo.error);
            }
            var   accountCoinPairs = new CoinsPairs([email protected]_incl_orders.Select(pair => new CoinPair(pair.Key, resultCoin)));
            var   ticker           = yobitApiClient.Ticker(accountCoinPairs);
            float sumWealth        = 0;

            foreach (var coin in [email protected]_incl_orders.Keys)
            {
                if (coin == resultCoin)
                {
                    sumWealth += [email protected]_incl_orders[coin];
                    Console.WriteLine($"On balance: {[email protected]_incl_orders[resultCoin]}{resultCoin}");
                    continue;
                }
                var coinPair     = new CoinPair(coin, resultCoin);
                var coinSumPrice = [email protected]_incl_orders[coin] * ticker[coinPair.ToString()].sell;
                if (coinPair.Reverted)
                {
                    coinSumPrice = [email protected]_incl_orders[coin] / ticker[coinPair.ToString()].sell;                   // на случай usd_rur
                }
                sumWealth += coinSumPrice;

                Console.WriteLine($"{[email protected]_incl_orders[coin]}{coin} {(!coinPair.Reverted ? "*" : "/")} {ticker[coinPair.ToString()].sell}{resultCoin} = {coinSumPrice}{resultCoin}");
            }
            Console.WriteLine($"Total: {sumWealth}{resultCoin}");
            return(sumWealth);
        }
Esempio n. 3
0
        public void BnbSelectPairsOfInterest(List <CoinPair> tickers)
        {
            try
            {
                //foreach (var pair in tickers)
                //{
                //    if (Config.PairsToMonitor.ContainsKey(pair.Symbol))
                //        Config.PairsOfInterest.Add(pair);
                //}
                //if (Config.PairsToMonitor.ContainsKey("ETHBTC"))
                //    Config.PairsOfInterest.Add(new CoinPair { Symbol = "ETHBTC" });

                foreach (var symbol in Config.PairsToMonitor)
                {
                    var pair = new CoinPair {
                        Symbol = symbol.Key
                    };
                    Config.PairsOfInterest.Add(pair);
                }


                StartupComplete = true;
            }
            catch (Exception e)
            {
                _logger.Error("Failed to update Pairs of interest, importer startup failed.\n" + e.ToString());
                throw;
            }
        }
Esempio n. 4
0
        private decimal GetPriceFromCoinPair(CoinPair coinPair)
        {
            var needCoinPairs = Container.CoinContainer.Where(x => x.Pair.CoinFrom.Name == coinPair.CoinFrom.Name && x.Pair.CoinTo.Name == coinPair.CoinTo.Name).Select(x => x).ToList();

            if (needCoinPairs.Count == 0)
            {
                return(0);
            }
            else if (needCoinPairs.Count == 1)
            {
                return(needCoinPairs[0].Price);
            }

            MarketData tempMarket = needCoinPairs[0];

            for (int i = 1; i < needCoinPairs.Count; i++)
            {
                if (needCoinPairs[i].Price > tempMarket.Price)
                {
                    tempMarket = needCoinPairs[i];
                }
            }



            return(tempMarket.Price);
        }
Esempio n. 5
0
        //Load all coinpairs from Bnb
        private async Task GetKlines(CoinPair pair, List <string> intervals)
        {
            foreach (var interval in intervals)
            {
                try
                {
                    var now = Calculator.CalculateEpochNow();
                    //Get last update from db for this pair-kline combo

                    var lastTask = CheckPairLastUpdate(pair, interval, now);
                    var last     = lastTask.Result;

                    var IsUpdateRequired = Calculator.CheckIfUpdateRequired(now, last, metaData.Intervals[interval]);
                    if (IsUpdateRequired)
                    {
                        var klineListTask = DownloadKlinesFromBnb(pair.Symbol, interval, last, now);
                        var klineList     = klineListTask.Result;
                        //Save klines to KlinesQueue.
                        var maxClose = GetMaxCloseTimeFromList(klineList);
                        saveKlines(klineList);
                        pair.LastUpdate[interval] = maxClose;
                        _logger.Info(String.Format("Kline data for {0} {1} saved successfully", pair.Symbol, interval));
                    }
                    else
                    {
                        await _logger.LogAsync(String.Format("{0} {1} is up to date, moving to next interval", pair.Symbol, interval));
                    }
                }
                catch (Exception e)
                {
                    await _logger.LogAsync(String.Format("Failed to get kline data.\n{0}", e.ToString()), 4);
                }
            }
        }
Esempio n. 6
0
 public CoinLine(CoinPair el1, CoinPair el2, CoinPair el3, CoinPair el4)
 {
     EL1 = el1;
     EL2 = el2;
     EL3 = el3;
     EL4 = el4;
 }
Esempio n. 7
0
 public CoinLine(CoinPair el1, CoinPair el2, CoinPair el3, CoinPair el4, CoinPair el5)
 {
     EL1 = el1;
     EL2 = el2;
     EL3 = el3;
     EL4 = el4;
     EL5 = el5;
 }
Esempio n. 8
0
        public void Run()
        {
            var pairsCoin = CoinPair.GetAllPairsCoin();

            foreach (var pair in pairsCoin)
            {
                var kod = _web.GetInfoOnPairs(pair.CoinFrom.Id, pair.CoinTo.Id).Result;
            }
        }
Esempio n. 9
0
        private async Task <long> CheckPairLastUpdate(CoinPair pair, string interval, long now)
        {
            long last = 0;

            if (Config.UseSql)
            {
                last = _dbHandler.FindKlineLastUpdate(pair.Symbol, interval);
            }
            else
            {
                last = Config.BnbMinimumUpdateDate;
            }

            var diff = metaData.Intervals[interval] + 1000;

            //If not get historical data
            if (!Config.BnbGetHistoricalData)
            {
                if (!pair.LastUpdate.ContainsKey(interval))
                {
                    pair.LastUpdate.Add(interval, now - diff);
                }
            }
            //When we want historical data
            else
            {
                if (pair.LastUpdate.ContainsKey(interval))
                {
                    if (Config.UseSql)
                    {
                        pair.LastUpdate[interval] = await LoadKlineLastUpdate(pair.Symbol, interval);
                    }
                    else
                    {
                        pair.LastUpdate[interval] = last;
                    }
                    if (last > Config.BnbMinimumUpdateDate)
                    {
                        pair.LastUpdate[interval] = last;
                    }
                    else
                    {
                        pair.LastUpdate[interval] = Config.BnbMinimumUpdateDate;
                    }
                }
                else
                {
                    pair.LastUpdate.Add(interval, Config.BnbMinimumUpdateDate);
                    if (last > Config.BnbMinimumUpdateDate)
                    {
                        pair.LastUpdate[interval] = last;
                    }
                }
            }
            _logger.Info(string.Format("{0} {1} last update: {2}", pair.Symbol, interval, pair.LastUpdate[interval]));
            return(pair.LastUpdate[interval]);
        }
Esempio n. 10
0
        public static async Task <CoinPair> GetCoinPair(string pUri)
        {
            _client = new HttpClient {
                BaseAddress = new Uri(pUri)
            };
            _client.DefaultRequestHeaders.Accept.Clear();
            CoinPair coinPair = null;
            var      response = await _client.GetAsync(pUri, HttpCompletionOption.ResponseContentRead);

            if (response.IsSuccessStatusCode)
            {
                coinPair = await response.Content.ReadAsAsync <CoinPair>();
            }
            return(coinPair);
        }
Esempio n. 11
0
        private List <CoinPair> GetAllTickers(BinanceClient publicRestClient)
        {
            //Get All Ticker Information
            var tickers  = publicRestClient.TickerAllPrices().Result;
            var pairList = new List <CoinPair>();

            foreach (var ticker in tickers)
            {
                var pair = new CoinPair();
                pair.Symbol = ticker.Symbol;
                pair.Value  = ticker.Price;
                pairList.Add(pair);
            }
            return(pairList);
        }
Esempio n. 12
0
        private void ParseData(string str)
        {
            if (Container.StateCalculated)
            {
                return;
            }

            try
            {
                // var pairsCoin = CoinPair.GetAllPairsCoin();
                //  var namesPairsCoin = pairsCoin.Select(x => x.ToString()).ToList();
                var obj = JToken.Parse(str);

                if (!obj["stream"].ToString().Equals("!miniTicker@arr@3000ms"))
                {
                    return;
                }

                var listObj = (JArray)obj["data"];
                foreach (var item in listObj)
                {
                    var name = item["s"].ToString();

                    var coinPair = CoinPair.GetCoinPairForName(name);
                    if (coinPair == null)
                    {
                        continue;
                    }

                    //if (!namesPairsCoin.Contains(name) || usedCoin.Contains(name))
                    //{
                    //    continue;
                    //}


                    MarketData market = new MarketData();

                    market.Pair        = coinPair;
                    market.NameObmenik = "Binance";
                    market.Price       = Convert.ToDecimal(item["c"].ToString());

                    Container.AddBinanceMarket(market);
                }
            }
            catch (Exception e)
            {
            }
        }
Esempio n. 13
0
        /// <summary>
        /// Метод, с помощью которого создаются новые ордера для торговли на бирже
        /// </summary>
        /// <param name="pair">пара (пример: ltc_btc)</param>
        /// <param name="type">тип операции (пример: buy или sell)</param>
        /// <param name="rate">курс, по которому необходимо купить или продать (значение: числовое)</param>
        /// <param name="amount">количество, которое необходимо купить или продать (значение: числовое)</param>
        /// <returns>Ответ биржи</returns>
        public TradeResponse Trade(CoinPair pair, TradeOperationType type, double rate, double amount)
        {
            Logger.Log("Called 'Trade' method");
            var methodUri  = new Uri(TradeApiUrl);
            var parameters = new Dictionary <string, string>
            {
                { "method", "Trade" },
                { "pair", pair.ToString() },
                { "type", TradeOperationTypeNames[type] },
                { "rate", rate.ToString("0.00000000", System.Globalization.CultureInfo.InvariantCulture) },
                { "amount", amount.ToString("0.00000000", System.Globalization.CultureInfo.InvariantCulture) },
                { "nonce", ((int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds).ToString() }
            };
            var _res     = ProcessTradeRequest(methodUri, parameters).Result;
            var response = JsonConvert.DeserializeObject <TradeResponse>(_res);

            return(response);
        }
Esempio n. 14
0
        private Dictionary <int, List <CoinLine> > CreateLine()
        {
            Dictionary <int, List <CoinLine> > list = new Dictionary <int, List <CoinLine> >();

            List <CoinLine> zepochki3 = new List <CoinLine>();
            List <CoinLine> zepochki4 = new List <CoinLine>();
            List <CoinLine> zepochki5 = new List <CoinLine>();
            //var pairsCoin = CoinPair.GetAllPairsCoin();


            var pairsCoin = CoinPair.listCoinPairs;

            foreach (var el1 in pairsCoin)
            {
                List <Coin> exclusion = new List <Coin>();
                exclusion.Add(el1.CoinFrom);
                var pairs1 = CoinPair.GetPairsFromCoinFrom(el1.CoinTo).Where(x => !exclusion.Contains(x.CoinTo)).Select(x => x);

                foreach (var el2 in pairs1)
                {
                    var coin = CoinPair.CheckPair(el2.CoinTo, el1.CoinFrom);
                    if (coin != null)
                    {
                        zepochki3.Add(new CoinLine(el1, el2, coin));
                    }
                }
            }
            list.Add(3, zepochki3);

            foreach (var el1 in pairsCoin)
            {
                List <Coin> exclusion = new List <Coin>();
                exclusion.Add(el1.CoinFrom);
                var pairs1 = CoinPair.GetPairsFromCoinFrom(el1.CoinTo).Where(x => !exclusion.Contains(x.CoinTo)).Select(x => x);

                foreach (var el2 in pairs1)
                {
                    exclusion.Add(el2.CoinFrom);
                    var pairs2 = CoinPair.GetPairsFromCoinFrom(el2.CoinTo).Where(x => !exclusion.Contains(x.CoinTo)).Select(x => x);
                    foreach (var el3 in pairs2)
                    {
                        var coin = CoinPair.CheckPair(el3.CoinTo, el1.CoinFrom);
                        if (coin != null)
                        {
                            zepochki4.Add(new CoinLine(el1, el2, el3, coin));
                        }
                    }
                }
            }
            list.Add(4, zepochki4);

            foreach (var el1 in pairsCoin)
            {
                List <Coin> exclusion = new List <Coin>();
                exclusion.Add(el1.CoinFrom);
                var pairs1 = CoinPair.GetPairsFromCoinFrom(el1.CoinTo).Where(x => !exclusion.Contains(x.CoinTo)).Select(x => x);

                foreach (var el2 in pairs1)
                {
                    exclusion.Add(el2.CoinFrom);
                    var pairs2 = CoinPair.GetPairsFromCoinFrom(el2.CoinTo).Where(x => !exclusion.Contains(x.CoinTo)).Select(x => x);
                    foreach (var el3 in pairs2)
                    {
                        exclusion.Add(el3.CoinFrom);
                        var pairs3 = CoinPair.GetPairsFromCoinFrom(el3.CoinTo).Where(x => !exclusion.Contains(x.CoinTo)).Select(x => x);
                        foreach (var el4 in pairs3)
                        {
                            var coin = CoinPair.CheckPair(el4.CoinTo, el1.CoinFrom);
                            if (coin != null)
                            {
                                zepochki5.Add(new CoinLine(el1, el2, el3, el4, coin));
                            }
                        }
                    }
                }
            }
            list.Add(5, zepochki5);



            return(list);
        }
Esempio n. 15
0
 public CoinLine(CoinPair el1, CoinPair el2, CoinPair el3)
 {
     EL1 = el1;
     EL2 = el2;
     EL3 = el3;
 }