static async Task Main(string[] args) { /***********************/ /********Example********/ /***********************/ /*Public API*/ var apiKey = new ExmoApi("K", "S"); string tradeCouples = "LTC_RUB"; int? limit = 10; ///<summary>trades /// <remarks>Список сделок по валютной паре</remarks> /// </summary> IHelperPublicAPI <CTrades> testTradesApi = new CHelperPublicAPI <CTrades>(); await testTradesApi.GetResultAsync("trades", null, tradeCouples, limit); //testTradesApiResult.Wait(); Console.WriteLine($"Список сделок по валютной паре {tradeCouples}:"); foreach (var tmp in testTradesApi.ResultList) { Console.WriteLine($"{tmp.TradeId} {tmp.Type} {tmp.Price} {tmp.Quantity} {tmp.Amount} {(new DateTime(1970, 1, 1, 0, 0, 0, 0)).AddSeconds(tmp.Date)}"); } ///<summary>order_book /// <remarks>Книга ордеров по валютной паре</remarks>> /// </summary> IHelperPublicAPI <COrderBook> testOrderBookApi = new CHelperPublicAPI <COrderBook>(); await testOrderBookApi.GetResultAsync("order_book", null, tradeCouples, limit); //testOrderBookApiTask.Wait(); Console.WriteLine("\nКнига ордеров по валютной паре:"); Console.WriteLine($"{testOrderBookApi.ResultMetod.AskQuantity} {testOrderBookApi.ResultMetod.AskAmount} {testOrderBookApi.ResultMetod.AskTop}, {testOrderBookApi.ResultMetod.BidQuantity}, " + $"{testOrderBookApi.ResultMetod.BidAmount}, {testOrderBookApi.ResultMetod.BidTop}"); Console.WriteLine("\nСписок ордеров на покупку:"); foreach (var i in testOrderBookApi.ResultMetod.Ask) { Console.WriteLine($"{i[0]}, {i[1]}, {i[2]}"); } Console.WriteLine("\nСписок ордеров на продажу:"); foreach (var i in testOrderBookApi.ResultMetod.Bid) { Console.WriteLine($"{i[0]}, {i[1]}, {i[2]}"); } ///<summary>ticker /// <remarks>Cтатистика цен и объемов торгов по валютным парам</remarks> /// </summary> IHelperPublicAPI <CTicker> testTickerApi = new CHelperPublicAPI <CTicker>(); await testTickerApi.GetResultAsync("ticker", null, tradeCouples); //testTickerApiTask.Wait(); Console.WriteLine($"\nCтатистика цен и объемов торгов по валютной паре {tradeCouples}:"); Console.WriteLine($"{testTickerApi.ResultMetod.High}, {testTickerApi.ResultMetod.Low}, {testTickerApi.ResultMetod.Avg}, " + $"{testTickerApi.ResultMetod.Vol}, {testTickerApi.ResultMetod.VolCurr}, {testTickerApi.ResultMetod.LastTrade}, " + $"{testTickerApi.ResultMetod.BuyPrice}, {testTickerApi.ResultMetod.SellPrice}, " + $"{(new DateTime(1970, 1, 1, 0, 0, 0, 0)).AddSeconds(testTickerApi.ResultMetod.Updated)}"); ///<summary>pair_settings /// <remarks>Настройки валютных пар</remarks> /// </summary> IHelperPublicAPI <CPairSettings> testPairSettingApi = new CHelperPublicAPI <CPairSettings>(); await testPairSettingApi.GetResultAsync("pair_settings", null, tradeCouples); //testPairSettingApiTask.Wait(); Console.WriteLine($"\nНастройки валютной пары {tradeCouples}:"); Console.WriteLine($"{testPairSettingApi.ResultMetod.MinQuantity}, {testPairSettingApi.ResultMetod.MaxQuantity} " + $"{testPairSettingApi.ResultMetod.MinPrice}, {testPairSettingApi.ResultMetod.MaxPrice}, " + $"{testPairSettingApi.ResultMetod.MinAmount}, {testPairSettingApi.ResultMetod.MaxAmount}"); ///<summary>currency /// <remarks>Cписок валют биржи</remarks> /// </summary> await CCurrency.GetCurrencyAsync(null); //currencyTask.Wait(); Console.WriteLine("\nCписок валют биржи:"); foreach (var i in CCurrency.CurrencyList) { Console.WriteLine(i); } //<summary>currencyPair /// <remarks>Cписок валютных пар (не входит в ExmoApi)</remarks> /// </summary> await CCurrency.GetCurrencyPairListAsync(null); //currencyPairTaskTask.Wait(); Console.WriteLine("\nCписок валютных пар биржи:"); foreach (var i in CCurrency.CurrencyPairList) { Console.WriteLine(i); } /*Authenticated API*/ tradeCouples = "BTC_USD"; limit = 10; decimal quantity = 0.001M; //BTC decimal price = 20000M; //Для продажи BTC string type = "sell"; ///<summary>user_info /// <remarks>Получение информации об аккаунте пользователя</remarks> /// </summary> IHelperAuthAPI <CUserInfo> testUserInfoApi = new CHelperAuthAPI <CUserInfo>(); await testUserInfoApi.GetResultAsync("user_info", apiKey); Console.WriteLine("\nИнформация об аккаунте пользователя"); Console.WriteLine($"{testUserInfoApi.ResultMetod.Uid} {testUserInfoApi.ResultMetod.ServerDate}"); //Проход по свойствам класса Balances Console.WriteLine("\nБаланс:"); foreach (var propInfo in testUserInfoApi.ResultMetod.Balances.GetType().GetProperties()) { Console.WriteLine($"{propInfo.Name}: {propInfo.GetValue(testUserInfoApi.ResultMetod.Balances, null)}"); } //Проход по свойствам класса Reserved Console.WriteLine($"\nВ ордерах:"); foreach (var propInfo in testUserInfoApi.ResultMetod.Reserved.GetType().GetProperties()) { Console.WriteLine($"{propInfo.Name}: {propInfo.GetValue(testUserInfoApi.ResultMetod.Reserved, null)}"); } ///<summary>order_create /// <remarks>Создание ордера</remarks> /// </summary> IHelperAuthAPI <COrderCreate> testOrderCreateApi = new CHelperAuthAPI <COrderCreate>(); await testOrderCreateApi.GetResultAsync("order_create", apiKey, new Dictionary <string, string>() { { "pair", tradeCouples.ToString(CultureInfo.InvariantCulture) }, { "quantity", quantity.ToString(CultureInfo.InvariantCulture) }, { "price", price.ToString(CultureInfo.InvariantCulture) }, { "type", type } }, tradeCouples); Console.WriteLine("\nСоздание ордера:"); if (testOrderCreateApi.ResultMetod.Result) { Console.WriteLine($"\nОрдер создан:" + $"\nПара: {tradeCouples}" + $"\norder_id: {testOrderCreateApi.ResultMetod.OrderId}" + $"\nОперация: {type}" + $"\nЦена: {price}" + $"\nКоличество: {quantity}" + $"\nСумма: {price*quantity}"); } else { Console.WriteLine($"\nОрдер не создан!!!" + $"\nОшибка: {testOrderCreateApi.ResultMetod.Error}"); } var orderId = testOrderCreateApi.ResultMetod.OrderId; //<summary>user_open_orders /// <remarks>Получение списока открытых ордеров пользователя</remarks> /// </summary> IHelperAuthAPI <CUserOpenOrders> testUserOpenOrdersApi = new CHelperAuthAPI <CUserOpenOrders>(); await testUserOpenOrdersApi.GetResultAsync("user_open_orders", apiKey); foreach (var res in testUserOpenOrdersApi.ResultList) { Console.WriteLine($"\nСписок открытых ордеров пользователя:" + $"\nВалютная пара: {res.TradeCouples}" + $"\nOrder_id: {res.OrderId}" + $"\nСоздан: {(new DateTime(1970, 1, 1, 0, 0, 0, 0)).AddSeconds(res.CreatedTime)}" + $"\nТип: {res.Type}" + $"\nЦена: {res.Price}" + $"\nКоличество: {res.Quantity}" + $"\nСумма: {res.Amount}"); } /* ///<summary>order_cancel * /// <remarks>Отмена ордера</remarks> * /// </summary> * IHelperAuthAPI<COrderCancel> testOrderCancelApi = new CHelperAuthAPI<COrderCancel>(); * await testOrderCancelApi.GetResultAsync("order_cancel", apiKey, * new Dictionary<string, string>() * { * {"order_id", orderId.ToString(CultureInfo.InvariantCulture)} * }); * Console.WriteLine($"\nОтмена ордера {orderId}:"); * if (testOrderCancelApi.ResultMetod.Result) * Console.WriteLine($"\nОрдер c номером {orderId} - отменен."); * else * { * Console.WriteLine($"\nОрдер не отменен!!!" + * $"\nОшибка: {testOrderCancelApi.ResultMetod.Error}"); * } */ //<summary>user_trades /// <remarks>Получение сделок пользователя</remarks> /// </summary> IHelperAuthAPI <CUserTrades> testUserTradesApi = new CHelperAuthAPI <CUserTrades>(); await testUserTradesApi.GetResultAsync("user_trades", apiKey, new Dictionary <string, string>() { { "pair", "ETC_USD, BTC_USD" }, { "limit", "1000" }, { "offset", "100" } }); Console.WriteLine("\nСделки пользователя:"); foreach (var uT in testUserTradesApi.ResultList) { Console.WriteLine($"\nВалютная пара: {uT.TradeCouples}" + $"\ntrade_id: {uT.TradeId}" + $"\ndate : {uT.Date}" + $"\ntype : {uT.Type}" + $"\norder_id: {uT.OrderId}" + $"\nquantity : {uT.Quantity}" + $"\nprice : {uT.Price}" + $"\namount : {uT.Amount}"); } ///<summary>user_cancelled_orders /// <remarks>Получение отмененных ордеров пользователя</remarks> ///</summary> IHelperAuthAPI <CUserCancelledOrders> testUserCansOrdersApi = new CHelperAuthAPI <CUserCancelledOrders>(); await testUserCansOrdersApi.GetResultAsync("user_cancelled_orders", apiKey, new Dictionary <string, string>() { { "limit", "100" }, { "offset", "0" } }); Console.WriteLine("\nОтмененные сделки пользователя:"); foreach (var canceledOrder in testUserTradesApi.ResultList) { Console.WriteLine($"\nВалютная пара: {canceledOrder.TradeCouples}" + $"\ndate : {canceledOrder.Date}" + $"\ntype : {canceledOrder.Type}" + $"\norder_id: {canceledOrder.OrderId}" + $"\nquantity : {canceledOrder.Quantity}" + $"\nprice : {canceledOrder.Price}" + $"\namount : {canceledOrder.Amount}"); } ///<summary>order_trades /// <remarks>Получение истории сделок ордера</remarks> /// </summary> IHelperAuthAPI <COrderTrades> testCOrderTradesApi = new CHelperAuthAPI <COrderTrades>(); await testCOrderTradesApi.GetResultAsync("order_trades", apiKey, new Dictionary <string, string>() { { "ordr_id", orderId.ToString(CultureInfo.InvariantCulture) } }); Console.WriteLine($"История сделок ордера"); Console.ReadLine(); }
static async Task Main(string[] args) { /***********************/ /********Example********/ /***********************/ /*Public API*/ string apiName; var apiKey = new ExmoApi("K", "S"); string tradeCouples = "LTC_RUB"; int? limit = 10; ///<summary>trades /// <remarks>Список сделок по валютной паре</remarks> /// <param name="tradeCouples">одна или несколько валютных пар разделенных запятой (пример BTC_USD,BTC_EUR)</param> /// <param name="limit">кол-во отображаемых позиций (по умолчанию 100, максимум 1000)</param> ///<returns>ResultList type=CTrade ></returns> /// </summary> IHelperPublicAPI <CTrades> testTradesApi = new CHelperPublicAPI <CTrades>(); await testTradesApi.GetResultAsync("trades", null, tradeCouples, limit); //testTradesApiResult.Wait(); Console.WriteLine($"Список сделок по валютной паре {tradeCouples}:"); foreach (var tmp in testTradesApi.ResultList) { Console.WriteLine($"{tmp.TradeId} {tmp.Type} {tmp.Price} {tmp.Quantity} {tmp.Amount} {(new DateTime(1970, 1, 1, 0, 0, 0, 0)).AddSeconds(tmp.Date)}"); } ///<summary>order_book /// <remarks>Книга ордеров по валютной паре</remarks> /// <param name="tradeCouples">одна или несколько валютных пар разделенных запятой (пример BTC_USD,BTC_EUR)</param> /// <param name="limit">кол-во отображаемых позиций (по умолчанию 100, максимум 1000)</param> ///<returns>ResultMethod type=COrderBook></returns> /// </summary> IHelperPublicAPI <COrderBook> testOrderBookApi = new CHelperPublicAPI <COrderBook>(); await testOrderBookApi.GetResultAsync("order_book", null, tradeCouples, limit); //testOrderBookApiTask.Wait(); Console.WriteLine("\nКнига ордеров по валютной паре:"); Console.WriteLine($"{testOrderBookApi.ResultMetod.AskQuantity} {testOrderBookApi.ResultMetod.AskAmount} {testOrderBookApi.ResultMetod.AskTop}, {testOrderBookApi.ResultMetod.BidQuantity}, " + $"{testOrderBookApi.ResultMetod.BidAmount}, {testOrderBookApi.ResultMetod.BidTop}"); Console.WriteLine("\nСписок ордеров на покупку:"); foreach (var i in testOrderBookApi.ResultMetod.Ask) { Console.WriteLine($"{i[0]}, {i[1]}, {i[2]}"); } Console.WriteLine("\nСписок ордеров на продажу:"); foreach (var i in testOrderBookApi.ResultMetod.Bid) { Console.WriteLine($"{i[0]}, {i[1]}, {i[2]}"); } ///<summary>ticker /// <remarks>Cтатистика цен и объемов торгов по валютным парам</remarks> ///<returns>ResultMethod type=CTicker</returns> /// </summary> IHelperPublicAPI <CTicker> testTickerApi = new CHelperPublicAPI <CTicker>(); await testTickerApi.GetResultAsync("ticker", null, tradeCouples); //testTickerApiTask.Wait(); Console.WriteLine($"\nCтатистика цен и объемов торгов по валютной паре {tradeCouples}:"); Console.WriteLine($"{testTickerApi.ResultMetod.High}, {testTickerApi.ResultMetod.Low}, {testTickerApi.ResultMetod.Avg}, " + $"{testTickerApi.ResultMetod.Vol}, {testTickerApi.ResultMetod.VolCurr}, {testTickerApi.ResultMetod.LastTrade}, " + $"{testTickerApi.ResultMetod.BuyPrice}, {testTickerApi.ResultMetod.SellPrice}, " + $"{(new DateTime(1970, 1, 1, 0, 0, 0, 0)).AddSeconds(testTickerApi.ResultMetod.Updated)}"); ///<summary>pair_settings /// <remarks>Настройки валютных пар</remarks> /// <param name="tradeCouples">одна или несколько валютных пар разделенных запятой (пример BTC_USD,BTC_EUR)</param> ///<returns>ResultMethod type=CPairSettings></returns> /// </summary> IHelperPublicAPI <CPairSettings> testPairSettingApi = new CHelperPublicAPI <CPairSettings>(); await testPairSettingApi.GetResultAsync("pair_settings", null, tradeCouples); //testPairSettingApiTask.Wait(); Console.WriteLine($"\nНастройки валютной пары {tradeCouples}:"); Console.WriteLine($"{testPairSettingApi.ResultMetod.MinQuantity}, {testPairSettingApi.ResultMetod.MaxQuantity} " + $"{testPairSettingApi.ResultMetod.MinPrice}, {testPairSettingApi.ResultMetod.MaxPrice}, " + $"{testPairSettingApi.ResultMetod.MinAmount}, {testPairSettingApi.ResultMetod.MaxAmount}"); ///<summary>currency /// <remarks>Cписок валют биржи</remarks> ///<returns>CurrencyList type=IList<string>></returns> /// </summary> await CCurrency.GetCurrencyAsync(null); //currencyTask.Wait(); Console.WriteLine("\nCписок валют биржи:"); foreach (var i in CCurrency.CurrencyList) { Console.WriteLine(i); } //<summary>currencyPair /// <remarks>Cписок валютных пар (не входит в ExmoApi)</remarks> ///<returns>CurrencyPairList type=IList<string>></returns> /// </summary> await CCurrency.GetCurrencyPairListAsync(null); //currencyPairTaskTask.Wait(); Console.WriteLine("\nCписок валютных пар биржи:"); foreach (var i in CCurrency.CurrencyPairList) { Console.WriteLine(i); } /*Authenticated API*/ apiKey = new ExmoApi("K", "S-"); tradeCouples = "BTC_USD"; limit = 10; decimal quantity = 0.001M; //BTC decimal price = 20000M; //Для продажи BTC string type = "sell"; ///<summary>user_info /// <remarks>Получение информации об аккаунте пользователя</remarks> /// <param name="apiKey">Идентификатор пользователя на бирже</param> ///<returns>ResultMethod type=CUserInfo ></returns> /// </summary> IHelperAuthAPI <CUserInfo> testUserInfoApi = new CHelperAuthAPI <CUserInfo>(); await testUserInfoApi.GetResultAsync("user_info", apiKey); Console.WriteLine("\nИнформация об аккаунте пользователя"); Console.WriteLine($"{testUserInfoApi.ResultMetod.Uid} {testUserInfoApi.ResultMetod.ServerDate}"); //Проход по свойствам класса Balances Console.WriteLine("\nБаланс:"); foreach (var propInfo in testUserInfoApi.ResultMetod.Balances.GetType().GetProperties()) { Console.WriteLine($"{propInfo.Name}: {propInfo.GetValue(testUserInfoApi.ResultMetod.Balances, null)}"); } //Проход по свойствам класса Reserved Console.WriteLine($"\nВ ордерах:"); foreach (var propInfo in testUserInfoApi.ResultMetod.Reserved.GetType().GetProperties()) { Console.WriteLine($"{propInfo.Name}: {propInfo.GetValue(testUserInfoApi.ResultMetod.Reserved, null)}"); } ///<summary>order_create /// <remarks>Создание ордера</remarks> /// <param name="apiKey">Идентификатор пользователя на бирже</param> /// <param name="Dictionary">Словарь, содержащий следующие параметры: /// tradeCouples - валютная пара /// quantity - кол-во по ордеру /// price - цена по ордеру /// type - тип ордера, может принимать следующие значения: /// buy - ордер на покупку /// sell - ордер на продажу /// market_buy - ордера на покупку по рынку /// market_sell - ордер на продажу по рынку /// market_buy_total - ордер на покупку по рынку на определенную сумму /// market_sell_total - ордер на продажу по рынку на определенную сумму</param> /// <param name="tradeCouples">Валютная пара</param> ///<returns>ResultMethod type=COrderCreate ></returns> /// </summary> IHelperAuthAPI <COrderCreate> testOrderCreateApi = new CHelperAuthAPI <COrderCreate>(); await testOrderCreateApi.GetResultAsync("order_create", apiKey, new Dictionary <string, string>() { { "pair", tradeCouples.ToString(CultureInfo.InvariantCulture) }, { "quantity", quantity.ToString(CultureInfo.InvariantCulture) }, { "price", price.ToString(CultureInfo.InvariantCulture) }, { "type", type } }, tradeCouples); Console.WriteLine("\nСоздание ордера:"); if (testOrderCreateApi.ResultMetod.Result) { Console.WriteLine($"\nОрдер создан:" + $"\nПара: {tradeCouples}" + $"\norder_id: {testOrderCreateApi.ResultMetod.OrderId}" + $"\nОперация: {type}" + $"\nЦена: {price}" + $"\nКоличество: {quantity}" + $"\nСумма: {price*quantity}"); } else { Console.WriteLine($"\nОрдер не создан!!!" + $"\nОшибка: {testOrderCreateApi.ResultMetod.Error}"); } var orderId = testOrderCreateApi.ResultMetod.OrderId; //<summary>order_cancel /// <remarks>Отмена ордера</remarks> /// <param name="apiKey">Идентификатор пользователя на бирже</param> /// <param name="Dictionary">Словарь, содержащий следующие параметры: /// order_id - идентификатор ордера </param> ///<returns>ResultMethod type=COrderCancel ></returns> /// </summary> IHelperAuthAPI <COrderCancel> testOrderCancelApi = new CHelperAuthAPI <COrderCancel>(); await testOrderCancelApi.GetResultAsync("order_cancel", apiKey, new Dictionary <string, string>() { { "order_id", orderId.ToString(CultureInfo.InvariantCulture) } }); Console.WriteLine($"\nОтмена ордера {orderId}:"); if (testOrderCancelApi.ResultMetod.Result) { Console.WriteLine($"\nОрдер c номером {orderId} - отменен."); } else { Console.WriteLine($"\nОрдер не отменен!!!" + $"\nОшибка: {testOrderCancelApi.ResultMetod.Error}"); } //<summary>user_open_orders /// <remarks>Отмена ордера</remarks> /// <param name="apiKey">Идентификатор пользователя на бирже</param> ///<returns>ResultMethod type=CUserOpenOrders ></returns> /// </summary> IHelperAuthAPI <CUserOpenOrders> testUserOpenOrdersApi = new CHelperAuthAPI <CUserOpenOrders>(); await testUserOpenOrdersApi.GetResultAsync("user_open_orders", apiKey); foreach (var res in testUserOpenOrdersApi.ResultList) { Console.WriteLine($"\nСписок открытых ордеров пользователя:" + $"\nВалютная пара: {res.TradeCouples}" + $"\nOrder_id: {res.OrderId}" + $"\nСоздан: {(new DateTime(1970, 1, 1, 0, 0, 0, 0)).AddSeconds(res.CreatedTime)}" + $"\nТип: {res.Type}" + $"\nЦена: {res.Price}" + $"\nКоличество: {res.Quantity}" + $"\nСумма: {res.Amount}"); } //<summary>user_trades /// <remarks>Получение сделок пользователя</remarks> /// <param name="apiKey">Идентификатор пользователя на бирже</param> /// <param name="Dictionary">Словарь, содержащий следующие параметры: /// tradeCouples - одна или несколько валютных пар разделенных запятой (пример BTC_USD,BTC_EUR) /// limit - кол-во возвращаемых сделок (по умолчанию 100, максимум 10 000) /// offset - смещение от последней сделки (по умолчанию 0)</param> ///<returns>ResultMethod type=CUserTrades ></returns> /// </summary> IHelperAuthAPI <CUserTrades> testUserTradesApi = new CHelperAuthAPI <CUserTrades>(); await testUserTradesApi.GetResultAsync("user_trades", apiKey, new Dictionary <string, string>() { { "pair", "ETC_USD, BTC_USD" }, { "limit", "100" }, { "offset", "0" } }); Console.WriteLine("\nСделки пользователя:"); foreach (var uT in testUserTradesApi.ResultList) { Console.WriteLine($"\nВалютная пара: {uT.TradeCouples}" + $"\ntrade_id: {uT.TradeId}" + $"\ndate : {uT.Date}" + $"\ntype : {uT.Type}" + $"\norder_id: {uT.OrderId}" + $"\nquantity : {uT.Quantity}" + $"\nprice : {uT.Price}" + $"\namount : {uT.Amount}"); } //<summary>user_cancelled_orders /// <remarks>Получение отмененных ордеров пользователя</remarks> /// <param name="apiKey">Идентификатор пользователя на бирже</param> /// <param name="Dictionary">Словарь, содержащий следующие параметры: /// limit - кол-во возвращаемых сделок (по умолчанию 100, максимум 10 000) /// offset - смещение от последней сделки (по умолчанию 0)</param> ///<returns>ResultMethod type=CUserTrades ></returns> /// </summary> IHelperAuthAPI <CUserCancelledOrders> testUserCansOrdersApi = new CHelperAuthAPI <CUserCancelledOrders>(); await testUserCansOrdersApi.GetResultAsync("user_cancelled_orders", apiKey, new Dictionary <string, string>() { { "limit", "10" }, { "offset", "0" } }); Console.WriteLine("\nОтмененные сделки пользователя:"); foreach (var canceledOrder in testUserTradesApi.ResultList) { Console.WriteLine($"\nВалютная пара: {canceledOrder.TradeCouples}" + $"\ndate : {canceledOrder.Date}" + $"\ntype : {canceledOrder.Type}" + $"\norder_id: {canceledOrder.OrderId}" + $"\nquantity : {canceledOrder.Quantity}" + $"\nprice : {canceledOrder.Price}" + $"\namount : {canceledOrder.Amount}"); } Console.ReadLine(); }