public void ThrowsOnUnknownSecurityType(string brokerageSymbol, SecurityType type, string market) { var mapper = new SymbolPropertiesDatabaseSymbolMapper(market); Assert.Throws <ArgumentException>(() => mapper.GetLeanSymbol(brokerageSymbol, type, market)); Assert.Throws <ArgumentException>(() => mapper.GetBrokerageSymbol(Symbol.Create(brokerageSymbol.Replace("-", ""), type, market))); }
/// <summary> /// Get historical data enumerable for a single symbol, type and resolution given this start and end times(in UTC). /// </summary> /// <param name="symbol">Symbol for the data we're looking for.</param> /// <param name="resolution">Only Tick is currently supported</param> /// <param name="startUtc">Start time of the data in UTC</param> /// <param name="endUtc">End time of the data in UTC</param> /// <returns>Enumerable of base data for this symbol</returns> public IEnumerable <BaseData> Get(Symbol symbol, Resolution resolution, DateTime startUtc, DateTime endUtc) { // get symbol mapper for GDAX var mapper = new SymbolPropertiesDatabaseSymbolMapper(Market.GDAX); var brokerageTicker = mapper.GetBrokerageSymbol(symbol); var returnData = new List <BaseData>(); var granularity = resolution.ToTimeSpan().TotalSeconds; DateTime windowStartTime = startUtc; DateTime windowEndTime = startUtc; do { windowStartTime = windowEndTime; windowEndTime = windowStartTime.AddSeconds(MaxDatapointsPerRequest * granularity); windowEndTime = windowEndTime > endUtc ? endUtc : windowEndTime; Log.Trace($"Getting data for timeperiod from {windowStartTime.ToStringInvariant()} to {windowEndTime.ToStringInvariant()}.."); var requestURL = $"http://api.pro.coinbase.com/products/{brokerageTicker}/candles" + $"?start={windowStartTime.ToStringInvariant()}" + $"&end={windowEndTime.ToStringInvariant()}" + $"&granularity={granularity.ToStringInvariant()}"; var request = (HttpWebRequest)WebRequest.Create(requestURL); request.UserAgent = ".NET Framework Test Client"; string data = GetWithRetry(request); returnData.AddRange(ParseCandleData(symbol, granularity, data)); }while (windowStartTime != windowEndTime); return(returnData); }
/// <summary> /// Initializes a new instance of the <see cref="BinanceRestApiClient"/> class. /// </summary> /// <param name="symbolMapper">The symbol mapper.</param> /// <param name="securityProvider">The holdings provider.</param> /// <param name="apiKey">The Binance API key</param> /// <param name="apiSecret">The The Binance API secret</param> public BinanceRestApiClient(SymbolPropertiesDatabaseSymbolMapper symbolMapper, ISecurityProvider securityProvider, string apiKey, string apiSecret) { _symbolMapper = symbolMapper; _securityProvider = securityProvider; _restClient = new RestClient(RestApiUrl); ApiKey = apiKey; ApiSecret = apiSecret; }
public void ReturnsCryptoSecurityType(string market, string brokerageSymbol, string leanSymbol) { var mapper = new SymbolPropertiesDatabaseSymbolMapper(market); var symbol = mapper.GetLeanSymbol(brokerageSymbol, SecurityType.Crypto, market); Assert.AreEqual(leanSymbol, symbol.Value); Assert.AreEqual(market, symbol.ID.Market); }
public BinanceSpotRestApiClient( SymbolPropertiesDatabaseSymbolMapper symbolMapper, ISecurityProvider securityProvider, string apiKey, string apiSecret, string restApiUrl ) : base(symbolMapper, securityProvider, apiKey, apiSecret, restApiUrl, _apiPrefix, _apiPrefix) { }
public void ThrowsOnNullOrEmptySymbols(string market) { var mapper = new SymbolPropertiesDatabaseSymbolMapper(market); string ticker = null; Assert.IsFalse(mapper.IsKnownBrokerageSymbol(ticker)); Assert.Throws <ArgumentException>(() => mapper.GetLeanSymbol(ticker, SecurityType.Crypto, market)); Assert.Throws <ArgumentException>(() => mapper.GetBrokerageSecurityType(ticker)); ticker = ""; Assert.IsFalse(mapper.IsKnownBrokerageSymbol(ticker)); Assert.Throws <ArgumentException>(() => mapper.GetLeanSymbol(ticker, SecurityType.Crypto, market)); Assert.Throws <ArgumentException>(() => mapper.GetBrokerageSecurityType(ticker)); Assert.Throws <ArgumentException>(() => mapper.GetBrokerageSymbol(Symbol.Create(ticker, SecurityType.Crypto, market))); }
public void ThrowsOnCurrencyPairs(string market, string brokerageSymbol) { var mapper = new SymbolPropertiesDatabaseSymbolMapper(market); Assert.Throws <ArgumentException>(() => mapper.GetBrokerageSecurityType(brokerageSymbol)); }
public void ReturnsCorrectBrokerageSymbol(Symbol symbol, string brokerageSymbol) { var mapper = new SymbolPropertiesDatabaseSymbolMapper(symbol.ID.Market); Assert.AreEqual(brokerageSymbol, mapper.GetBrokerageSymbol(symbol)); }