Читать на других языках: English, Русский.
Это неофициальный .NET клиент для доступа к API биржи Exmo.
Описание API можно найти сайте https://exmo.me/api
Этот пакет предназначен для .NET Standard 2.0 (поддерживаемые платформы)
Откройте Package Manager Console в Visual Studio и введите следующую команду:
PM> Install-Package ExmoОткройте командную строку и введите следующую команду:
dotnet add package ExmoВ классе Startup в методе ConfigureServices добавьте следующий код:
public void ConfigureServices(IServiceCollection services)
{
services.AddExmoApi();
}var serviceProvider = new ServiceCollection()
.AddExmoApi()
.BuildServiceProvider();
var publicApi = serviceProvider.GetRequiredService<IPublicApi>();
var authenticatedApi = serviceProvider.GetRequiredService<IAuthenticatedApi>();services.AddExmoApi(options => {
options.PublicKey = "*****";
options.SecretKey = "*****";
});Необходимо создать в папке проекта файл appsettings.json, и добавить в него секцию Exmo, в которой указать PublicKey и SecretKey:
{
"Exmo": {
"PublicKey": "*****",
"SecretKey": "*****"
}
}var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
var serviceProvider = new ServiceCollection()
.Configure<ExmoOptions>(configuration.GetSection("Exmo"))
.AddExmoApi()
.BuildServiceProvider();Для того чтобы скрыть свои PublicKey и SecretKey, можно воспользоваться User Secrets.
Выполните следующие команды, чтобы добавить в проект user secrets и добавить открытый и закрытый ключи:
dotnet user-secrets init
dotnet user-secrets set "Exmo:PublicKey" "*****"
dotnet user-secrets set "Exmo:SecretKey" "*****"Затем добавьте следующий код:
var configuration = new ConfigurationBuilder()
.AddUserSecrets(Assembly.GetExecutingAssembly())
.Build();
var serviceProvider = new ServiceCollection()
.Configure<ExmoOptions>(configuration.GetSection("Exmo"))
.AddExmoApi()
.BuildServiceProvider();Извлеките из контейнера сервис IPublicApi для доступа к Public API.
Получение списка сделок по валютной паре:
var pairs = new CurrencyPairCollection("BTC_USD", "ETH_USD");
var trades = await publicApi.GetTradesAsync(pairs);Извлеките из контейнера сервис IAuthenticatedApi для доступа к Athenticated API, Wallet API и Excode API.
Получение списка открытых ордеров пользователя:
var openOrders = await authenticatedApi.GetOpenOrdersAsync();Методы клиента не возвращают статус выполнения запроса. Вместо этого, если сервер не может выполнить запрос, то метод бросает исключение ExmoApiException. Данное исключение может быть брошено любым методом API.
Пример обработки ошибок:
try
{
var request = new CreateOrderRequest
{
Pair = "BTC_USD",
Type = OrderType.Buy,
Quantity = 0.01m,
Price = 9700m
};
var orderId = await authenticatedApi.CreateOrderAsync(request);
}
catch (ExmoApiException ex)
{
Console.WriteLine(ex.Message);
}Для логирования HTTP запросов вы можете создать класс, производный от класса DelegatingHandler. Пример использования можете посмотреть здесь.