Example #1
0
        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)));
        }
Example #2
0
        /// <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);
        }
Example #3
0
 /// <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;
 }
Example #4
0
        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);
        }
Example #5
0
 public BinanceSpotRestApiClient(
     SymbolPropertiesDatabaseSymbolMapper symbolMapper,
     ISecurityProvider securityProvider,
     string apiKey,
     string apiSecret,
     string restApiUrl
     )
     : base(symbolMapper, securityProvider, apiKey, apiSecret, restApiUrl, _apiPrefix, _apiPrefix)
 {
 }
Example #6
0
        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)));
        }
Example #7
0
        public void ThrowsOnCurrencyPairs(string market, string brokerageSymbol)
        {
            var mapper = new SymbolPropertiesDatabaseSymbolMapper(market);

            Assert.Throws <ArgumentException>(() => mapper.GetBrokerageSecurityType(brokerageSymbol));
        }
Example #8
0
        public void ReturnsCorrectBrokerageSymbol(Symbol symbol, string brokerageSymbol)
        {
            var mapper = new SymbolPropertiesDatabaseSymbolMapper(symbol.ID.Market);

            Assert.AreEqual(brokerageSymbol, mapper.GetBrokerageSymbol(symbol));
        }