/// <summary> /// Place a market order /// </summary> /// <param name="parms">Market Order Parameters</param> /// <returns>String of order id</returns> public static async Task <string> PlaceMarketOrder(this IKuCoinDotNet service, MarketOrderParams parms) { var body = new SortedDictionary <string, object>(); if (string.IsNullOrEmpty(parms.ClientOid)) { parms.ClientOid = Guid.NewGuid().ToString(); } if (parms.Funds > 0) { body.Add("funds", parms.Funds); } body.Add("clientOid", parms.ClientOid); body.Add("symbol", parms.Pair); if (!string.IsNullOrEmpty(parms.Remark)) { body.Add("remark", parms.Remark); } if (parms.SelfTradeProtect != null) { body.Add("stp", parms.SelfTradeProtect.ToString()); } body.Add("side", parms.Side.ToString().ToLower()); body.Add("size", parms.Size); body.Add("type", parms.Type.ToString().ToLower()); return(await service.PlaceOrder(body)); }
/// <summary> /// Get all account balances /// </summary> /// <param name="hideZeroBalance">Hide zero balance coins</param> /// <returns>Balance collection</returns> public static async Task <List <Balance> > GetBalances(this IKuCoinDotNet service, bool hideZeroBalance = false) { var balances = await service.GetBalances(string.Empty, null); return(hideZeroBalance ? balances.Where(b => b.Total > 0).Distinct().ToList() : balances.Distinct().ToList()); }
/// <summary> /// Get candlesticks /// </summary> /// <param name="pair">Trading pair</param> /// <param name="endAt">Ending date</param> /// <param name="interval">Candlestick interval</param> /// <param name="stickCount">Number of sticks to return</param> /// <returns>Collection of candlesticks</returns> public static async Task <List <Candlestick> > GetCandlestick(this IKuCoinDotNet service, string pair, long endAt, Interval interval, int stickCount) { var _dtHelper = new DateTimeHelper(); var _helper = new Helper(); var startAt = _helper.GetFromUnixTime(endAt, interval, (stickCount + 2)); return(await service.GetCandlestick(pair, startAt, endAt, interval)); }
/// <summary> /// Get candlesticks /// </summary> /// <param name="pair">Trading pair</param> /// <param name="startDate">Starting date</param> /// <param name="endDate">Ending date</param> /// <param name="interval">Candlestick interval</param> /// <returns>Collection of candlesticks</returns> public static async Task <List <Candlestick> > GetCandlestick(this IKuCoinDotNet service, string pair, DateTime startDate, DateTime endDate, Interval interval) { var _dtHelper = new DateTimeHelper(); var startAt = _dtHelper.LocalToUnixTime(startDate); var endAt = _dtHelper.LocalToUnixTime(endDate); return(await service.GetCandlestick(pair, startAt, endAt, interval)); }
/// <summary> /// Get Fills /// </summary> /// <param name="startDate">Start date</param> /// <param name="endDate">End date</param> /// <param name="page">Page number</param> /// <param name="pageSize">Page size</param> /// <returns>Page collection of Fills</returns> public static async Task <PagedResponse <List <Fill> > > GetFills(this IKuCoinDotNet service, DateTime?startDate, DateTime?endDate, int page = 0, int pageSize = 0) { var _dtHelper = new DateTimeHelper(); var startAt = startDate != null?_dtHelper.LocalToUnixTime((DateTime)startDate) : 0; var endAt = endDate != null?_dtHelper.LocalToUnixTime((DateTime)endDate) : 0; return(await service.GetFills(null, null, null, null, startAt, endAt, page, pageSize)); }
/// <summary> /// Get all open orders /// </summary> /// <param name="pair">Trading pair</param> /// <param name="side">Trade side</param> /// <param name="type">Order Type</param> /// <param name="startDate">Start Date (Unix time)</param> /// <param name="endDate">End Date (Unix time)</param> /// <param name="page">page number</param> /// <param name="pageSize">page size</param> /// <returns>Paged list of Orders</returns> public static async Task <PagedResponse <List <Order> > > GetOpenOrders(this IKuCoinDotNet service, string pair, Side?side, OrderType?type, DateTime?startDate, DateTime?endDate, int page = 0, int pageSize = 0) { var _dtHelper = new DateTimeHelper(); var startAt = startDate != null?_dtHelper.LocalToUnixTime((DateTime)startDate) : 0; var endAt = endDate != null?_dtHelper.LocalToUnixTime((DateTime)endDate) : 0; return(await service.GetOrders(OrderStatus.active, pair, side, type, startAt, endAt, page, pageSize)); }
/// <summary> /// Place a market order /// </summary> /// <param name="pair">Trading pair</param> /// <param name="side">Side of trade</param> /// <param name="quantity">Quantity to trade</param> /// <returns>String of order id</returns> public static async Task <string> PlaceMarketOrder(this IKuCoinDotNet service, string pair, Side side, decimal quantity) { var clientOid = Guid.NewGuid().ToString().Replace("-", ""); var body = new SortedDictionary <string, object>(); body.Add("clientOid", clientOid); body.Add("symbol", pair); body.Add("side", side.ToString().ToLower()); body.Add("size", quantity); body.Add("type", OrderType.MARKET.ToString().ToLower()); return(await service.PlaceOrder(body)); }
public KuCoinRepositoryTests() { var useSandbox = false; IFileRepository _fileRepo = new FileRepository(); if (_fileRepo.FileExists(configPath)) { _exchangeApi = _fileRepo.GetDataFromFile <ApiInformation>(configPath); } if (_exchangeApi != null || !string.IsNullOrEmpty(apiKey)) { _service = new KuCoinDotNet(_exchangeApi, useSandbox); } else { _service = new KuCoinDotNet(useSandbox); } }
/// <summary> /// Place a stop order /// </summary> /// <param name="parms">Stop Limit Order Parameters</param> /// <returns>String of order id</returns> public static async Task <string> PlaceStopOrder(this IKuCoinDotNet service, StopLimitOrderParams parms) { var body = new SortedDictionary <string, object>(); if (parms.CancelAfter > 0) { body.Add("cancelAfter", parms.CancelAfter); } if (string.IsNullOrEmpty(parms.ClientOid)) { parms.ClientOid = Guid.NewGuid().ToString(); } body.Add("clientOid", parms.ClientOid); body.Add("symbol", parms.Pair); if (parms.PostOnly) { body.Add("postOnly", parms.PostOnly); } body.Add("price", parms.Price); if (!string.IsNullOrEmpty(parms.Remark)) { body.Add("remark", parms.Remark); } if (parms.SelfTradeProtect != null) { body.Add("stp", parms.SelfTradeProtect.ToString()); } body.Add("side", parms.Side.ToString().ToLower()); body.Add("size", parms.Size); body.Add("stop", parms.Stop.ToString().ToLower()); body.Add("stopPrice", parms.StopPrice); if (parms.TimeInForce != null) { body.Add("timeInForce", parms.TimeInForce.ToString()); } body.Add("type", parms.Type.ToString().ToLower()); return(await service.PlaceOrder(body)); }
/// <summary> /// Get current trading pairs on the exchange /// </summary> /// <param name="trading">Currently trading</param> /// <returns>Collection of trading pairs</returns> public static async Task <List <string> > GetTradingPairs(this IKuCoinDotNet service, bool trading = true) { var details = await service.GetTradingPairDetails(); return(details.Select(d => d.Pair).ToList()); }
/// <summary> /// Get historic withdrawal history (KuCoin v1) /// </summary> /// <param name="symbol">Symbol of currency</param> /// <param name="startDate">Start date</param> /// <param name="endDate">End date</param> /// <param name="status">Withdrawal status</param> /// <param name="page">Page number</param> /// <param name="pageSize">Page size</param> /// <returns>Paged collection of withdrawals</returns> public static async Task <PagedResponse <List <Withdrawal> > > GetHistoricWithdrawals(this IKuCoinDotNet service, string symbol = null, DateTime?startDate = null, DateTime?endDate = null, WithdrawalStatus?status = null, int page = 0, int pageSize = 0) { var _dtHelper = new DateTimeHelper(); var startAt = startDate != null?_dtHelper.LocalToUnixTime((DateTime)startDate) : 0; var endAt = endDate != null?_dtHelper.LocalToUnixTime((DateTime)endDate) : 0; return(await service.GetHistoricWithdrawals(symbol, startAt, endAt, status, page, pageSize)); }
/// <summary> /// Get historic withdrawal history (KuCoin v1) /// </summary> /// <param name="symbol">Symbol of currency</param> /// <param name="status">Withdrawal status</param> /// <param name="page">Page number</param> /// <param name="pageSize">Page size</param> /// <returns>Paged collection of withdrawals</returns> public static async Task <PagedResponse <List <Withdrawal> > > GetHistoricWithdrawals(this IKuCoinDotNet service, string symbol, DepositStatus status, int page = 0, int pageSize = 0) { return(await service.GetHistoricWithdrawals(symbol : symbol, status : status, page : page, pageSize : pageSize)); }
/// <summary> /// Get account history /// </summary> /// <param name="accountId">id of account</param> /// <param name="startAt">Start time</param> /// <param name="endAt">End time</param> /// <param name="page">Page number</param> /// <param name="pageSize">Page size</param> /// <returns>Paged response of account history</returns> public static async Task <PagedResponse <List <AccountAction> > > GetAccountHistory(this IKuCoinDotNet service, string accountId, DateTime startAt, DateTime endAt, int page = 0, int pageSize = 0) { if (startAt >= endAt) { throw new Exception("Start date cannot be >= End date."); } var _dtHelper = new DateTimeHelper(); var startNonce = _dtHelper.LocalToUnixTime(startAt); var endNonce = _dtHelper.LocalToUnixTime(endAt); return(await service.GetAccountHistory(accountId, startNonce, endNonce, page, pageSize)); }
/// <summary> /// Get withdrawal history /// </summary> /// <param name="symbol">Symbol of currency</param> /// <param name="page">Page number</param> /// <param name="pageSize">Page size</param> /// <returns>Paged collection of withdrawals</returns> public static async Task <PagedResponse <List <Withdrawal> > > GetWithdrawalHistory(this IKuCoinDotNet service, string symbol, int page = 0, int pageSize = 0) { return(await service.GetWithdrawalHistory(symbol : symbol, page : page, pageSize : pageSize)); }
/// <summary> /// Get historic deposit history (KuCoin v1) /// </summary> /// <param name="symbol">Symbol of currency</param> /// <param name="page">Page number</param> /// <param name="pageSize">Page size</param> /// <returns>Paged collection of Deposits</returns> public static async Task <PagedResponse <List <Deposit> > > GetHistoricDeposits(this IKuCoinDotNet service, string symbol, int page = 0, int pageSize = 0) { return(await service.GetHistoricDeposits(symbol : symbol, page : page, pageSize : pageSize)); }
/// <summary> /// Get all open orders /// </summary> /// <param name="page">page number</param> /// <param name="pageSize">page size</param> /// <returns>Paged list of Orders</returns> public static async Task <PagedResponse <List <Order> > > GetOpenOrders(this IKuCoinDotNet service, int page = 0, int pageSize = 0) { return(await service.GetOrders(status : OrderStatus.active, page : page, pageSize : pageSize)); }
/// <summary> /// Get account balance /// </summary> /// <param name="type">Account type</param> /// <returns>Balance collection</returns> public static async Task <List <Balance> > GetBalances(this IKuCoinDotNet service, AccountType type) { return(await service.GetBalances(string.Empty, type)); }
/// <summary> /// Get Fills /// </summary> /// <param name="orderId">Order id</param> /// <param name="pair">Trading pair</param> /// <param name="side">Trade side</param> /// <param name="type">Order type</param> /// <param name="startAt">Start date</param> /// <param name="endAt">End date</param> /// <param name="page">Page number</param> /// <param name="pageSize">Page size</param> /// <returns>Page collection of Fills</returns> public static async Task <PagedResponse <List <Fill> > > GetFills(this IKuCoinDotNet service, string orderId, string pair, Side?side, OrderType?type, long startAt, long endAt, int page = 0, int pageSize = 0) { return(await service.GetFills(orderId, pair, side, type, startAt, endAt, page, pageSize)); }
/// <summary> /// Get all orders /// </summary> /// <param name="pair">Trading pair</param> /// <param name="status">Order status</param> /// <param name="page">page number</param> /// <param name="pageSize">page size</param> /// <returns>Paged list of Orders</returns> public static async Task <PagedResponse <List <Order> > > GetOrders(this IKuCoinDotNet service, string pair, OrderStatus status, int page = 0, int pageSize = 0) { return(await service.GetOrders(pair : pair, status : status, page : page, pageSize : pageSize)); }
/// <summary> /// Get fiat price for currency /// </summary> /// <returns>Currencies and fiat prices</returns> public static async Task <Dictionary <string, decimal> > GetFiatPrice(this IKuCoinDotNet service) { return(await service.GetFiatPrice()); }
/// <summary> /// Get account balance /// </summary> /// <param name="symbol">Symbol of currency</param> /// <returns>Balance collection</returns> public static async Task <List <Balance> > GetBalances(this IKuCoinDotNet service, string symbol) { return(await service.GetBalances(symbol, null)); }
/// <summary> /// Get a list of KuCoin V1 historical orders. /// </summary> /// <param name="pair">Trading pair</param> /// <param name="side">Trade side</param> /// <param name="page">page number</param> /// <param name="pageSize">page size</param> /// <returns>Paged list of Orders</returns> public static async Task <PagedResponse <List <HistoricOrder> > > GetHistoricOrders(this IKuCoinDotNet service, string pair, Side side, int page = 0, int pageSize = 0) { return(await service.GetHistoricOrders(pair : pair, side : side, page : page, pageSize : pageSize)); }
/// <summary> /// Get all open orders /// </summary> /// <param name="pair">Trading pair</param> /// <param name="side">Trade side</param> /// <param name="type">Order Type</param> /// <param name="startAt">Start Date (Unix time)</param> /// <param name="endAt">End Date (Unix time)</param> /// <param name="page">page number</param> /// <param name="pageSize">page size</param> /// <returns>Paged list of Orders</returns> public static async Task <PagedResponse <List <Order> > > GetOpenOrders(this IKuCoinDotNet service, string pair, Side?side, OrderType?type, long startAt, long endAt, int page = 0, int pageSize = 0) { return(await service.GetOrders(OrderStatus.active, pair, side, type, startAt, endAt, page, pageSize)); }
/// <summary> /// Get account balance /// </summary> /// <returns>Balance collection</returns> public static async Task <List <Balance> > GetBalances(this IKuCoinDotNet service) { return(await service.GetBalances(string.Empty, null)); }
/// <summary> /// Get Fills /// </summary> /// <param name="orderId">Order id</param> /// <param name="page">Page number</param> /// <param name="pageSize">Page size</param> /// <returns>Page collection of Fills</returns> public static async Task <PagedResponse <List <Fill> > > GetFillsForOrder(this IKuCoinDotNet service, string orderId, int page = 0, int pageSize = 0) { return(await service.GetFills(orderId : orderId, page : page, pageSize : pageSize)); }
/// <summary> /// Get all open orders /// </summary> /// <param name="pair">Trading pair</param> /// <param name="side">Trade side</param> /// <param name="page">page number</param> /// <param name="pageSize">page size</param> /// <returns>Paged list of Orders</returns> public static async Task <PagedResponse <List <Order> > > GetOpenOrders(this IKuCoinDotNet service, string pair, Side side, int page = 0, int pageSize = 0) { return(await service.GetOrders(OrderStatus.active, pair : pair, side : side, page : 0, pageSize : 0)); }
/// <summary> /// Transfer funds between accounts /// </summary> /// <param name="fromId">Account Id Payer</param> /// <param name="toId">Account Id Receiver</param> /// <param name="amount">Amount to transfer</param> /// <returns>Id of funds transfer order</returns> public static async Task <string> InnerTransfer(this IKuCoinDotNet service, string fromId, string toId, decimal amount) { var clientOid = Guid.NewGuid().ToString().Replace("-", ""); return(await service.InnerTransfer(clientOid, fromId, toId, amount)); }
/// <summary> /// Get Fills /// </summary> /// <param name="pair">Trading pair</param> /// <param name="page">Page number</param> /// <param name="pageSize">Page size</param> /// <returns>Page collection of Fills</returns> public static async Task <PagedResponse <List <Fill> > > GetFillsForPair(this IKuCoinDotNet service, string pair, int page = 0, int pageSize = 0) { return(await service.GetFills(pair : pair, page : page, pageSize : pageSize)); }