Example #1
0
		public async Task<Infrastructure.Common.Models.Trading.Order> CreateOrder(Infrastructure.Common.Models.Trading.Order initialOrder, bool usePostOnly = false)
		{
			var innerModel = initialOrder.ToInnerModel();

			var connection = new HitBtcConnection();
			var request = new RestRequest("order", Method.POST);
			request.ConfigureRequest();

			request.AddJsonBody(new
			{
				clientOrderId = innerModel.ClientId,
				symbol = innerModel.CurrencyPairId,
				side = innerModel.OrderSide,
				type = innerModel.OrderType,
				timeInForce = innerModel.TimeInForce,
				quantity = innerModel.Quantity.ToString("#0.########################"),
				price = innerModel.Price.ToString("#0.########################"),
				stopPrice = innerModel.StopPrice.ToString("#0.########################"),
				postOnly = usePostOnly
			});

			var exchangeConnectionSettings = _configurationService.GetExchangeConnectionSettings();

			var response = await connection.DoRequest(
				request,
				exchangeConnectionSettings.ApiKey,
				exchangeConnectionSettings.SecretKey);

			var responseOrder = response
				.ExtractResponseData<Order>()
				?.ToOuterModel(initialOrder.CurrencyPair);
			return responseOrder;
		}
Example #2
0
		public async Task<Infrastructure.Common.Models.Market.CurrencyPair> GetCurrencyPair(string id)
		{
			var connection = new HitBtcConnection();
			var request = new RestRequest(String.Format("public/symbol/{0}", id), Method.GET);
			request.ConfigureRequest();
			var response = await connection.DoRequest(request);
			var currencyPair = response
				.ExtractResponseData<CurrencyPair>()
				?.ToOuterModel();
			return currencyPair;
		}
Example #3
0
		public async Task<Infrastructure.Common.Models.Market.Ticker> GetTicker(string currencyPairId)
		{
			var connection = new HitBtcConnection();
			var request = new RestRequest(String.Format("public/ticker/{0}", currencyPairId), Method.GET);
			request.ConfigureRequest();
			var response = await connection.DoRequest(request);
			var ticker = response
				.ExtractResponseData<Ticker>()
				?.ToOuterModel();
			return ticker;
		}
Example #4
0
		public async Task<IList<Infrastructure.Common.Models.Market.Ticker>> GetTickers()
		{
			var connection = new HitBtcConnection();
			var request = new RestRequest("public/ticker", Method.GET);
			request.ConfigureRequest();
			var response = await connection.DoRequest(request);
			var tickers = response
				.ExtractResponseData<Ticker[]>()
				.Select(entity => entity.ToOuterModel())
				.ToList();
			return tickers;
		}
Example #5
0
		public async Task<IList<Infrastructure.Common.Models.Market.OrderBookItem>> GetOrderBook(string currencyPairId, OrderBookItemType itemType, int limit)
		{
			var connection = new HitBtcConnection();
			var request = new RestRequest(String.Format("public/orderbook/{0}", currencyPairId), Method.GET);
			request.ConfigureRequest();

			request.AddParameter("limit", limit);
			request.AddParameter("sort", "ASC");

			var response = await connection.DoRequest(request);
			var orderBookItems = response
				.ExtractResponseData<OrderBook>()
				?.ToOuterModel();

			return (orderBookItems ?? new Infrastructure.Common.Models.Market.OrderBookItem[] { }).Where(item => item.Type == itemType).ToList();
		}
Example #6
0
		public async Task<IList<Infrastructure.Common.Models.Market.Candle>> GetCandles(String currencyPairId, CandlePeriod period, int limit)
		{
			var connection = new HitBtcConnection();
			var request = new RestRequest(String.Format("public/candles/{0}", currencyPairId), Method.GET);
			request.ConfigureRequest();

			var candlePeriod = period.ToInnerFormat();
			request.AddParameter("period", candlePeriod);

			request.AddParameter("limit", limit);
			request.AddParameter("sort", "DESC");

			var response = await connection.DoRequest(request);
			var candles = response
				.ExtractResponseData<Candle[]>()
				.Select(entity => entity.ToOuterModel())
				.ToList();

			return candles;
		}
Example #7
0
		public async Task<Infrastructure.Common.Models.Trading.Order> CancelOrder(Infrastructure.Common.Models.Trading.Order initialOrder)
		{
			var innerModel = initialOrder.ToInnerModel();

			var connection = new HitBtcConnection();
			var request = new RestRequest(String.Format("order/{0}", innerModel.ClientId), Method.DELETE);
			request.ConfigureRequest();

			var exchangeConnectionSettings = _configurationService.GetExchangeConnectionSettings();

			var response = await connection.DoRequest(
				request,
				exchangeConnectionSettings.ApiKey,
				exchangeConnectionSettings.SecretKey);

			var responseOrder = response
				.ExtractResponseData<Order>()
				?.ToOuterModel(initialOrder.CurrencyPair);
			return responseOrder;
		}
Example #8
0
		public async Task<Infrastructure.Common.Models.Trading.TradingBallance> GetTradingBalance(string currencyId)
		{
			var connection = new HitBtcConnection();
			var request = new RestRequest("trading/balance", Method.GET);
			request.ConfigureRequest();

			var exchangeConnectionSettings = _configurationService.GetExchangeConnectionSettings();

			var response = await connection.DoRequest(
				request,
				exchangeConnectionSettings.ApiKey,
				exchangeConnectionSettings.SecretKey);

			var tradingBallance = response
				.ExtractResponseData<TradingBallance[]>()
				.Where(entity => String.Equals(entity.CurrencyId, currencyId, StringComparison.OrdinalIgnoreCase))
				.Select(entity => entity.ToOuterModel())
				.FirstOrDefault();
			return tradingBallance;
		}
Example #9
0
		public async Task<Infrastructure.Common.Models.Trading.Order> GetOrderFromHistory(Guid clientOrderId, Infrastructure.Common.Models.Market.CurrencyPair currencyPair)
		{
			var connection = new HitBtcConnection();
			var request = new RestRequest("history/order", Method.GET);
			request.ConfigureRequest();

			request.AddParameter("clientOrderId", clientOrderId.ToString("N"));

			var exchangeConnectionSettings = _configurationService.GetExchangeConnectionSettings();

			var response = await connection.DoRequest(
				request,
				exchangeConnectionSettings.ApiKey,
				exchangeConnectionSettings.SecretKey);

			var order = response
				.ExtractResponseData<Order[]>()
				.Select(entity => entity.ToOuterModel(currencyPair))
				.FirstOrDefault();
			return order;
		}
Example #10
0
		public async Task<IList<Infrastructure.Common.Models.Trading.Order>> GetActiveOrders(Infrastructure.Common.Models.Market.CurrencyPair currencyPair)
		{
			var connection = new HitBtcConnection();
			var request = new RestRequest("order", Method.GET);
			request.ConfigureRequest();

			var exchangeConnectionSettings = _configurationService.GetExchangeConnectionSettings();

			var response = await connection.DoRequest(
				request,
				exchangeConnectionSettings.ApiKey,
				exchangeConnectionSettings.SecretKey);

			var orders = response
				.ExtractResponseData<Order[]>()
				.Where(order => order.CurrencyPairId == currencyPair.Id)
				.Select(entity => entity.ToOuterModel(currencyPair))
				.ToList();

			return orders;
		}