Читать на других языках: 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. Пример использования можете посмотреть здесь.