/// <summary> /// Gets a list of trades for a specific symbol /// </summary> /// <param name="states">Only return trades with specific states</param> /// <param name="symbol">The symbol to retrieve trades for</param> /// <param name="types">The type of orders to return</param> /// <param name="startTime">Only get orders after this date</param> /// <param name="endTime">Only get orders before this date</param> /// <param name="fromId">Only get orders with before or after this. Used together with the direction parameter</param> /// <param name="direction">Direction of the results to return when using the fromId parameter</param> /// <param name="limit">The max number of results</param> /// <param name="ct">Cancellation token</param> /// <returns></returns> public async Task <WebCallResult <IEnumerable <HuobiOrderTrade> > > GetSymbolTradesAsync(IEnumerable <HuobiOrderState>?states = null, string?symbol = null, IEnumerable <HuobiOrderType>?types = null, DateTime?startTime = null, DateTime?endTime = null, long?fromId = null, HuobiFilterDirection?direction = null, int?limit = null, CancellationToken ct = default) { symbol = symbol?.ValidateHuobiSymbol(); var stateConverter = new OrderStateConverter(false); var typeConverter = new OrderTypeConverter(false); var parameters = new Dictionary <string, object>(); parameters.AddOptionalParameter("states", states == null ? null : string.Join(",", states.Select(s => JsonConvert.SerializeObject(s, stateConverter)))); parameters.AddOptionalParameter("symbol", symbol); parameters.AddOptionalParameter("start-date", startTime?.ToString("yyyy-MM-dd")); parameters.AddOptionalParameter("end-date", endTime?.ToString("yyyy-MM-dd")); parameters.AddOptionalParameter("types", types == null ? null : string.Join(",", types.Select(s => JsonConvert.SerializeObject(s, typeConverter)))); parameters.AddOptionalParameter("from", fromId); parameters.AddOptionalParameter("direct", direction == null ? null : JsonConvert.SerializeObject(direction, new FilterDirectionConverter(false))); parameters.AddOptionalParameter("size", limit); return(await SendHuobiRequest <IEnumerable <HuobiOrderTrade> >(GetUrl(SymbolTradesEndpoint, "1"), HttpMethod.Get, ct, parameters, true).ConfigureAwait(false)); }
/// <summary> /// Gets a list of trades for a specific symbol /// </summary> /// <param name="symbol">The symbol to retrieve trades for</param> /// <param name="types">The type of orders to return</param> /// <param name="startTime">Only get orders after this date</param> /// <param name="endTime">Only get orders before this date</param> /// <param name="fromId">Only get orders with before or after this. Used together with the direction parameter</param> /// <param name="direction">Direction of the results to return when using the fromId parameter</param> /// <param name="limit">The max number of results</param> /// <returns></returns> public async Task <WebCallResult <List <HuobiOrderTrade> > > GetSymbolTradesAsync(IEnumerable <HuobiOrderState> states = null, string symbol = null, IEnumerable <HuobiOrderType> types = null, DateTime?startTime = null, DateTime?endTime = null, long?fromId = null, HuobiFilterDirection?direction = null, int?limit = null) { var stateConverter = new OrderStateConverter(false); var typeConverter = new OrderTypeConverter(false); var parameters = new Dictionary <string, object>(); parameters.AddOptionalParameter("states", states == null ? null : string.Join(",", states.Select(s => JsonConvert.SerializeObject(s, stateConverter)))); parameters.AddOptionalParameter("symbol", symbol); parameters.AddOptionalParameter("start-date", startTime?.ToString("yyyy-MM-dd")); parameters.AddOptionalParameter("end-date", endTime?.ToString("yyyy-MM-dd")); parameters.AddOptionalParameter("types", types == null ? null : string.Join(",", types.Select(s => JsonConvert.SerializeObject(s, typeConverter)))); parameters.AddOptionalParameter("from", fromId); parameters.AddOptionalParameter("direct", direction == null ? null : JsonConvert.SerializeObject(direction, new FilterDirectionConverter(false))); parameters.AddOptionalParameter("size", limit); var result = await ExecuteRequest <HuobiBasicResponse <List <HuobiOrderTrade> > >(GetUrl(SymbolTradesEndpoint, "1"), "GET", parameters, true).ConfigureAwait(false); return(new WebCallResult <List <HuobiOrderTrade> >(result.ResponseStatusCode, result.ResponseHeaders, result.Data?.Data, result.Error)); }
/// <summary> /// Gets a list of orders /// </summary> /// <param name="symbol">The symbol to get orders for</param> /// <param name="states">The states of orders to return</param> /// <param name="types">The types of orders to return</param> /// <param name="startTime">Only get orders after this date</param> /// <param name="endTime">Only get orders before this date</param> /// <param name="fromId">Only get orders with id's higher than this</param> /// <param name="limit">The max number of results</param> /// <returns></returns> public async Task <CallResult <List <HuobiOrder> > > GetOrdersAsync(string symbol, HuobiOrderState[] states, HuobiOrderType[] types = null, DateTime?startTime = null, DateTime?endTime = null, long?fromId = null, int?limit = null) { var stateConverter = new OrderStateConverter(false); var typeConverter = new OrderTypeConverter(false); var parameters = new Dictionary <string, object> { { "symbol", symbol }, { "states", string.Join(",", states.Select(s => JsonConvert.SerializeObject(s, stateConverter))) } }; parameters.AddOptionalParameter("start-date", startTime?.ToString("yyyy-MM-dd")); parameters.AddOptionalParameter("end-date", endTime?.ToString("yyyy-MM-dd")); parameters.AddOptionalParameter("types", types == null ? null : string.Join(",", types.Select(s => JsonConvert.SerializeObject(s, typeConverter)))); parameters.AddOptionalParameter("from", fromId); parameters.AddOptionalParameter("size", limit); var result = await ExecuteRequest <HuobiBasicResponse <List <HuobiOrder> > >(GetUrl(OrdersEndpoint, "1"), "GET", parameters, true).ConfigureAwait(false); return(new CallResult <List <HuobiOrder> >(result.Data?.Data, result.Error)); }
/// <summary> /// Gets a list of orders /// </summary> /// <param name="accountId">The account id to get orders for</param> /// <param name="symbol">The symbol to get orders for</param> /// <param name="states">The states of orders to return</param> /// <param name="types">The types of orders to return</param> /// <param name="startTime">Only get orders after this date</param> /// <param name="endTime">Only get orders before this date</param> /// <param name="fromId">Only get orders with id's higher than this</param> /// <param name="limit">The max number of results</param> /// <returns></returns> public async Task <CallResult <List <HuobiOrder> > > QueryOrdersAsync(long accountId, string symbol, HuobiOrderState[] states, HuobiOrderType[] types = null, DateTime?startTime = null, DateTime?endTime = null, long?fromId = null, int?limit = null) { var stateConverter = new OrderStateConverter(false); var stateString = string.Join(",", states.Select(s => JsonConvert.SerializeObject(s, stateConverter))); var request = new HuobiOrderListRequest(accountId, symbol, stateString); if (types != null) { var typeConverter = new OrderTypeConverter(false); request.Types = string.Join(",", types.Select(s => JsonConvert.SerializeObject(s, typeConverter))); } request.StartTime = startTime?.ToString("yyyy-MM-dd"); request.EndTime = endTime?.ToString("yyyy-MM-dd"); request.FromId = fromId?.ToString(); request.Limit = limit?.ToString(); var result = await Query <HuobiSocketAuthDataResponse <List <HuobiOrder> > >(request).ConfigureAwait(false); return(new CallResult <List <HuobiOrder> >(result.Data?.Data, result.Error)); }
/// <summary> /// Gets a list of orders /// </summary> /// <param name="accountId">The account id to get orders for</param> /// <param name="symbol">The symbol to get orders for</param> /// <param name="states">The states of orders to return</param> /// <param name="types">The types of orders to return</param> /// <param name="startTime">Only get orders after this date</param> /// <param name="endTime">Only get orders before this date</param> /// <param name="fromId">Only get orders with id's higher than this</param> /// <param name="limit">The max number of results</param> /// <returns></returns> public async Task <CallResult <IEnumerable <HuobiOrder> > > GetOrdersAsync(long accountId, string symbol, IEnumerable <HuobiOrderState> states, IEnumerable <HuobiOrderType>?types = null, DateTime?startTime = null, DateTime?endTime = null, long?fromId = null, int?limit = null) { symbol = symbol.ValidateHuobiSymbol(); var stateConverter = new OrderStateConverter(false); var stateString = string.Join(",", states.Select(s => JsonConvert.SerializeObject(s, stateConverter))); var request = new HuobiOrderListRequest(NextId().ToString(CultureInfo.InvariantCulture), accountId, symbol, stateString); if (types != null) { var typeConverter = new OrderTypeConverter(false); request.Types = string.Join(",", types.Select(s => JsonConvert.SerializeObject(s, typeConverter))); } request.StartTime = startTime?.ToString("yyyy-MM-dd"); request.EndTime = endTime?.ToString("yyyy-MM-dd"); request.FromId = fromId?.ToString(CultureInfo.InvariantCulture); request.Limit = limit?.ToString(CultureInfo.InvariantCulture); var result = await Query <HuobiSocketAuthDataResponse <IEnumerable <HuobiOrder> > >(request, true).ConfigureAwait(false); return(new CallResult <IEnumerable <HuobiOrder> >(result.Data?.Data, result.Error)); }