Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="client"></param>
        /// <param name="user"></param>
        /// <param name="exchange"></param>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <param name="limit"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public static async Task <string> GetOrdersHistoryAsync(this ICryptocoreHttpClient client,
                                                                ICryptocoreApiUser user, string exchange, DateTime start, DateTime end = default, int limit = 100,
                                                                CancellationToken token = default)
        {
            Throw.IfNull(client, nameof(client));
            Throw.IfNull(user, nameof(user));
            Throw.IfNullOrWhiteSpace(exchange, nameof(exchange));

            var request =
                new CryptocoreHttpRequest($"/v1/orders/{exchange}/history")
            {
                ApiKey = user.ApiKey
            };

            request.AddParameter("time_start", start.ToTimestamp());

            if (end != default)
            {
                request.AddParameter("time_end", end.ToTimestamp());
            }

            if (limit > 0)
            {
                request.AddParameter("limit", limit);
            }

            return(await client.GetAsync(request, token)
                   .ConfigureAwait(false));
        }
Пример #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="client"></param>
        /// <param name="symbol"></param>
        /// <param name="interval"></param>
        /// <param name="limit"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public static async Task <string> GetLatestCandlesAsync(this ICryptocoreHttpClient client, Symbol symbol,
                                                                CandleInterval interval, int limit = 100, CancellationToken token = default)
        {
            Throw.IfNull(client, nameof(client));
            Throw.IfNull(symbol, nameof(symbol));

            var request = new CryptocoreHttpRequest($"/v1/data/ohlcv/{symbol}/latest");

            request.AddParameter("period_id", interval.ConvertToString());

            if (limit > 0)
            {
                request.AddParameter("limit", limit);
            }

            return(await client.GetAsync(request, token)
                   .ConfigureAwait(false));
        }
Пример #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="client"></param>
        /// <param name="symbol"></param>
        /// <param name="interval"></param>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public static async Task <string> GetHistoricalCandlesAsync(this ICryptocoreHttpClient client, Symbol symbol,
                                                                    CandleInterval interval, DateTime start, DateTime end = default,
                                                                    CancellationToken token = default)
        {
            Throw.IfNull(client, nameof(client));
            Throw.IfNull(symbol, nameof(symbol));

            var request = new CryptocoreHttpRequest($"/v1/data/ohlcv/{symbol}/history");

            request.AddParameter("period_id", interval.ConvertToString());
            request.AddParameter("time_start", start.ToTimestamp());

            if (end != default)
            {
                request.AddParameter("time_end", end.ToTimestamp());
            }

            return(await client.GetAsync(request, token)
                   .ConfigureAwait(false));
        }
Пример #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="client"></param>
        /// <param name="user"></param>
        /// <param name="symbol"></param>
        /// <param name="type"></param>
        /// <param name="side"></param>
        /// <param name="price"></param>
        /// <param name="quantity"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public static async Task <string> PlaceAsync(this ICryptocoreHttpClient client, ICryptocoreApiUser user,
                                                     Symbol symbol, OrderType type, OrderSide side, decimal price, decimal quantity,
                                                     CancellationToken token = default)
        {
            Throw.IfNull(client, nameof(client));
            Throw.IfNull(user, nameof(user));
            Throw.IfNull(symbol, nameof(symbol));

            var request = new CryptocoreHttpRequest($"/v1/orders/{symbol.Exchange}/{symbol}")
            {
                ApiKey = user.ApiKey
            };

            request.AddParameter("type", type.ConvertToString());
            request.AddParameter("side", side.ConvertToString());
            request.AddParameter("price", price);
            request.AddParameter("quantity", quantity);

            return(await client.PostAsync(request, token)
                   .ConfigureAwait(false));
        }
Пример #5
0
        /// <summary>
        /// </summary>
        /// <param name="client"></param>
        /// <param name="exchange"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public static async Task <string> GetSymbolsAsync(this ICryptocoreHttpClient client, string exchange = null,
                                                          CancellationToken token = default)
        {
            Throw.IfNull(client, nameof(client));

            var request = new CryptocoreHttpRequest("/v1/data/symbols");

            if (!string.IsNullOrEmpty(exchange))
            {
                request.AddParameter("exchange_id", exchange);
            }

            return(await client.GetAsync(request, token)
                   .ConfigureAwait(false));
        }