Example #1
0
        static async Task TestHistoricalTickerAsync()
        {
            Console.WriteLine("Testing historical Ticker info:");

            Console.WriteLine("enter coin id:");

            var id = Console.ReadLine();

            Console.WriteLine($"fetching ticker for id {id} ...");

            var ticker = await _client.GetHistoricalTickerForIdAsync(id, new DateTimeOffset(DateTime.Now.Subtract(TimeSpan.FromDays(1))), DateTimeOffset.Now, 1000, "USD", TickerInterval.OneHour);

            if (ticker.Error == null)
            {
                foreach (var historic in ticker.Value)
                {
                    Console.WriteLine($"(Ticker ({id}) : {historic.Timestamp}: ({historic.Price})) - {historic.Volume24H}");
                }
                Console.WriteLine("Press any key to finish test...");
            }
            else
            {
                Console.WriteLine($"CoinPaprika returned an error: {ticker.Error.ErrorMessage}");
            }

            Console.ReadLine();
            Console.WriteLine("Bye!");
        }
Example #2
0
        public override async Task Execute(Source source)
        {
            Logger.WriteLine(source, "Syncing TRAC Market (USD)");

            DateTime now = DateTime.UtcNow;
            DateTime latestTimestamp;

            await using (var connection = new MySqlConnection(OTHubSettings.Instance.MariaDB.ConnectionString))
            {
                latestTimestamp =
                    connection.ExecuteScalar <DateTime?>(@"select max(ticker_trac.Timestamp) from ticker_trac") ??
                    connection.ExecuteScalar <DateTime>(@"SELECT Min(b.Timestamp) FROM ethblock b
                    where b.Timestamp >= COALESCE((select max(ticker_trac.Timestamp) from ticker_trac), (SELECT Min(b.Timestamp) FROM ethblock b))");
            }

            if ((now - latestTimestamp).TotalHours > 6)
            {
                CoinpaprikaAPI.Client client = new CoinpaprikaAPI.Client();

                await using (var connection = new MySqlConnection(OTHubSettings.Instance.MariaDB.ConnectionString))
                {
                    await connection.OpenAsync();

                    for (DateTime date = latestTimestamp.Date; date.Date <= now; date = date.AddDays(1))
                    {
                        if (date > now)
                        {
                            break;
                        }

                        await TimeConstraint;

                        var tickers = client.GetHistoricalTickerForIdAsync("trac-origintrail",
                                                                           date,
                                                                           date.AddDays(1), 1000, "USD",
                                                                           TickerInterval.SixHours)
                                      .Result;

                        DataTable rawData = new DataTable();
                        rawData.Columns.Add("Timestamp", typeof(DateTime));
                        rawData.Columns.Add("Price", typeof(decimal));

                        if (tickers?.Value == null)
                        {
                            continue;
                        }

                        foreach (var ticker in tickers.Value)
                        {
                            if (ticker.Timestamp.UtcDateTime <= latestTimestamp)
                            {
                                continue;
                            }

                            var row = rawData.NewRow();


                            row["Timestamp"] = ticker.Timestamp.UtcDateTime;
                            row["Price"]     = ticker.Price;
                            rawData.Rows.Add(row);
                        }

                        if (rawData.Rows.Count == 0)
                        {
                            continue;
                        }


                        await using (MySqlTransaction tran =
                                         await connection.BeginTransactionAsync(global::System.Data.IsolationLevel.Serializable))
                        {
                            await using (MySqlCommand cmd = new MySqlCommand())
                            {
                                cmd.Connection  = connection;
                                cmd.Transaction = tran;
                                cmd.CommandText = "SELECT * FROM ticker_trac";
                                using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
                                {
                                    //da.UpdateBatchSize = 1000;
                                    using (MySqlCommandBuilder cb = new MySqlCommandBuilder(da))
                                    {
                                        da.Update(rawData);
                                        await tran.CommitAsync();

                                        var max = tickers.Value.Max(v => v.Timestamp.UtcDateTime);
                                        if (max > latestTimestamp)
                                        {
                                            latestTimestamp = max;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }


            await ExecuteEthToUSD(source);

            await ExecuteEth(source);
        }