Как использовать Coingecko C# API: ошибка при использовании CilentPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать Coingecko C# API: ошибка при использовании Cilent

Сообщение Anonymous »

Я использую пакет Coingecko для C# и, по сути, я пытаюсь преобразовать свой код Python в C#. Я установил coingecko.net, coingecko.api, coingeckoasync. Я импортирует с помощью `с использованием coingecko.net.clients; '< /p>
Однако я получаю следующую ошибку на этой строке var coingeckoclient = new coingeckoclient < /code>
Ошибка типа или названия пространства имен' 'Coingeckoclient' не может быть найден (вам не хватает, и у вас не хватает. Переустановил вышеуказанные пакеты, но безрезультатно. Нет четкого руководства или документации по API, о которой я знаю, и та, которую я видел, не очень помогают.using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using CoinGecko.Net.Clients;
using CoinGecko;
using CryptoExchange.Net.Objects;
using CsvHelper;
using CsvHelper.Configuration;

namespace CryptoDataFetcher
{
public class Program
{
// Main cryptocurrency data class to hold our combined data
public class CryptoCombinedData
{
// Market data properties
public string Name { get; set; }
public string Symbol { get; set; }
public decimal CurrentPrice { get; set; }
public decimal MarketCap { get; set; }
public int? MarketCapRank { get; set; }
public decimal TotalVolume { get; set; }
public decimal? CirculatingSupply { get; set; }
public decimal? TotalSupply { get; set; }
public decimal? MaxSupply { get; set; }
public decimal Ath { get; set; }
public decimal Atl { get; set; }
public DateTime LastUpdated { get; set; }

// OHLC data properties
public DateTime Timestamp { get; set; }
public decimal Open { get; set; }
public decimal High { get; set; }
public decimal Low { get; set; }
public decimal Close { get; set; }
}

// Class to store historical OHLC data
public class OhlcData
{
public DateTime Timestamp { get; set; }
public decimal Open { get; set; }
public decimal High { get; set; }
public decimal Low { get; set; }
public decimal Close { get; set; }
}

public static async Task Main(string[] args)
{
// Create a CoinGecko client
var coinGeckoClient = new CoinGeckoClient

try
{
// Get top 10 cryptocurrencies
Console.WriteLine("Getting the top 10 cryptocurrencies by market cap...");
var topCryptos = await GetTopCryptosAsync(coinGeckoClient, 10);
Console.WriteLine($"Top 10 cryptocurrencies: {string.Join(", ", topCryptos)}");

// Get data for these cryptocurrencies
var (combinedData, allOhlcData) = await GetMultipleCryptoDataAsync(coinGeckoClient, topCryptos);

// Display the combined data (limited output for console)
Console.WriteLine("\nCombined Market and OHLC Data:");
foreach (var crypto in combinedData.Take(3)) // Show just first 3 for brevity
{
Console.WriteLine($"{crypto.Name} ({crypto.Symbol}): ${crypto.CurrentPrice}, Market Cap: ${crypto.MarketCap}, Timestamp: {crypto.Timestamp}");
}
Console.WriteLine($"... and {combinedData.Count - 3} more records");

// Save to CSV
SaveToCsv(combinedData, "top10_crypto_market_and_ohlc_data.csv");
Console.WriteLine("\nData saved to 'top10_crypto_market_and_ohlc_data.csv'");

// Show sample of Bitcoin's historical OHLC data if available
if (allOhlcData.ContainsKey("bitcoin") && allOhlcData["bitcoin"].Any())
{
Console.WriteLine("\nBitcoin Historical OHLC Data:");
foreach (var ohlc in allOhlcData["bitcoin"].Take(5))
{
Console.WriteLine($"Timestamp: {ohlc.Timestamp}, Open: {ohlc.Open}, High: {ohlc.High}, Low: {ohlc.Low}, Close: {ohlc.Close}");
}
}
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
if (ex.InnerException != null)
{
Console.WriteLine($"Inner exception: {ex.InnerException.Message}");
}
}
}

// Function to get top cryptocurrencies by market cap
private static async Task GetTopCryptosAsync(CoinGeckoClient client, int limit)
{
var coinsMarkets = await client.CoinsClient.GetCoinsMarkets("usd", null, null, null, null, false, "market_cap_desc", 1, limit);

if (!coinsMarkets.Success)
throw new Exception($"Failed to get top cryptocurrencies: {coinsMarkets.Error}");

return coinsMarkets.Data.Select(coin => coin.Id).ToList();
}

// Function to get both OHLC and market data for a single cryptocurrency
private static async Task GetCryptoDataAsync(CoinGeckoClient client, string cryptoId, string vsCurrency = "usd", int days = 14)
{
// Get OHLC data
var ohlcData = await client.CoinsClient.GetOhlc(cryptoId, vsCurrency, days);
if (!ohlcData.Success)
throw new Exception($"Failed to get OHLC data for {cryptoId}: {ohlcData.Error}");

// Get detailed coin data
var coinData = await client.CoinsClient.GetAllCoinDataWithId(cryptoId);
if (!coinData.Success)
throw new Exception($"Failed to get market data for {cryptoId}: {coinData.Error}");

// Process OHLC data
var processedOhlcData = ohlcData.Data.Select(dataPoint => new OhlcData
{
Timestamp = DateTimeOffset.FromUnixTimeMilliseconds((long)dataPoint[0]).DateTime,
Open = dataPoint[1],
High = dataPoint[2],
Low = dataPoint[3],
Close = dataPoint[4]
}).ToList();

// Get the most recent OHLC data point
var latestOhlc = processedOhlcData.LastOrDefault();
if (latestOhlc == null)
throw new Exception($"No OHLC data found for {cryptoId}");

// Combine market data with latest OHLC
var marketData = coinData.Data.MarketData;
var result = new CryptoCombinedData
{
// Market data
Name = coinData.Data.Name,
Symbol = coinData.Data.Symbol,
CurrentPrice = marketData.CurrentPrice.ContainsKey("usd") ? marketData.CurrentPrice["usd"] : 0,
MarketCap = marketData.MarketCap.ContainsKey("usd") ? marketData.MarketCap["usd"] : 0,
MarketCapRank = marketData.MarketCapRank,
TotalVolume = marketData.TotalVolume.ContainsKey("usd") ? marketData.TotalVolume["usd"] : 0,
CirculatingSupply = marketData.CirculatingSupply,
TotalSupply = marketData.TotalSupply,
MaxSupply = marketData.MaxSupply,
Ath = marketData.Ath.ContainsKey("usd") ? marketData.Ath["usd"] : 0,
Atl = marketData.Atl.ContainsKey("usd") ? marketData.Atl["usd"] : 0,
LastUpdated = coinData.Data.LastUpdated,

// OHLC data
Timestamp = latestOhlc.Timestamp,
Open = latestOhlc.Open,
High = latestOhlc.High,
Low = latestOhlc.Low,
Close = latestOhlc.Close
};

return (result, processedOhlcData);
}

// Function to get data for multiple cryptocurrencies
private static async Task GetMultipleCryptoDataAsync(
CoinGeckoClient client, List cryptoIds, string vsCurrency = "usd", int days = 14)
{
var allData = new List();
var allOhlc = new Dictionary();

foreach (var cryptoId in cryptoIds)
{
try
{
Console.WriteLine($"Fetching data for {cryptoId}...");
var (resultData, ohlcData) = await GetCryptoDataAsync(client, cryptoId, vsCurrency, days);
allData.Add(resultData);
allOhlc[cryptoId] = ohlcData;

// Sleep to respect API rate limits
await Task.Delay(1500); // 1.5 seconds
}
catch (Exception ex)
{
Console.WriteLine($"Error fetching data for {cryptoId}: {ex.Message}");
}
}

return (allData, allOhlc);
}

// Function to save data to CSV
private static void SaveToCsv(List data, string filePath)
{
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
{
HasHeaderRecord = true,
};

using (var writer = new StreamWriter(filePath))
using (var csv = new CsvWriter(writer, config))
{
csv.WriteRecords(data);
}
}
}
}
< /code>
Вот мой файл проекта: < /p>



Exe
net9.0
enable
enable










Подробнее здесь: https://stackoverflow.com/questions/795 ... ing-cilent
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как использовать Coingecko C# API: ошибка при использовании Cilent
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Как использовать Coingecko C# API: ошибка при использовании Cilent
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как использовать Coingecko C# API: ошибка при использовании Cilent
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Как ограничивает работу запросов Coingecko API? Ошибка слишком большого количества запросов после второго запроса
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Проблема с десериализацией данных JSON из API CoinGecko.
    Anonymous » » в форуме C#
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»