/// <summary> /// Creates the brokerage under test and connects it /// </summary> /// <returns>A connected brokerage instance</returns> protected override IBrokerage CreateBrokerage(IOrderProvider orderProvider, ISecurityProvider securityProvider) { var keyId = Config.Get("alpaca-key-id");; var secretKey = Config.Get("alpaca-secret-key"); var tradingMode = Config.Get("alpaca-trading-mode"); var brokerage = new AlpacaBrokerage(orderProvider, securityProvider, keyId, secretKey, tradingMode); return(brokerage); }
public void Setup() { Log.LogHandler = new ConsoleLogHandler(); var keyId = Config.Get("alpaca-key-id"); var secretKey = Config.Get("alpaca-secret-key"); var tradingMode = Config.Get("alpaca-trading-mode"); _brokerage = new AlpacaBrokerage(null, null, keyId, secretKey, tradingMode, true); _brokerage.Connect(); }
public void GetsHistory(Symbol symbol, Resolution resolution, TimeSpan period, bool shouldBeEmpty) { Log.LogHandler = new ConsoleLogHandler(); var keyId = Config.Get("alpaca-key-id"); var secretKey = Config.Get("alpaca-secret-key"); var tradingMode = Config.Get("alpaca-trading-mode"); using (var brokerage = new AlpacaBrokerage(null, null, keyId, secretKey, tradingMode, true)) { var historyProvider = new BrokerageHistoryProvider(); historyProvider.SetBrokerage(brokerage); historyProvider.Initialize(new HistoryProviderInitializeParameters(null, null, null, null, null, null, null, false)); var now = DateTime.UtcNow; var requests = new[] { new HistoryRequest( now.Add(-period), now, typeof(TradeBar), symbol, resolution, SecurityExchangeHours.AlwaysOpen(TimeZones.NewYork), TimeZones.NewYork, null, false, false, DataNormalizationMode.Adjusted, TickType.Trade) }; var history = historyProvider.GetHistory(requests, TimeZones.NewYork).ToList(); foreach (var slice in history) { if (resolution == Resolution.Tick) { foreach (var tick in slice.Ticks[symbol]) { Console.WriteLine($"{tick.Time}: {tick.Symbol} - P={tick.Price}, Q={tick.Quantity}"); } } else { var bar = slice.Bars[symbol]; Console.WriteLine($"{bar.Time}: {bar.Symbol} - O={bar.Open}, H={bar.High}, L={bar.Low}, C={bar.Close}, V={bar.Volume}"); } } if (shouldBeEmpty) { Assert.IsTrue(history.Count == 0); } else { Assert.IsTrue(history.Count > 0); } brokerage.Disconnect(); Log.Trace("Data points retrieved: " + historyProvider.DataPointCount); } }
public void GetsHistory(Symbol symbol, Resolution resolution, TimeSpan period, bool throwsException) { TestDelegate test = () => { var keyId = Config.Get("alpaca-key-id"); var secretKey = Config.Get("alpaca-secret-key"); var tradingMode = Config.Get("alpaca-trading-mode"); var brokerage = new AlpacaBrokerage(null, null, keyId, secretKey, tradingMode); var historyProvider = new BrokerageHistoryProvider(); historyProvider.SetBrokerage(brokerage); historyProvider.Initialize(null, null, null, null, null, null); var now = DateTime.UtcNow; var requests = new[] { new HistoryRequest(now.Add(-period), now, typeof(TradeBar), symbol, resolution, SecurityExchangeHours.AlwaysOpen(TimeZones.NewYork), DateTimeZone.Utc, Resolution.Daily, false, false, DataNormalizationMode.Adjusted, TickType.Trade) }; var history = historyProvider.GetHistory(requests, TimeZones.Utc); foreach (var slice in history) { if (resolution == Resolution.Tick) { foreach (var tick in slice.Ticks[symbol]) { Console.WriteLine("{0}: {1} - {2} / {3}", tick.Time, tick.Symbol, tick.BidPrice, tick.AskPrice); } } else if (resolution == Resolution.Second) { var bar = slice.QuoteBars[symbol]; Console.WriteLine("{0}: {1} - O={2}, H={3}, L={4}, C={5}", bar.Time, bar.Symbol, bar.Open, bar.High, bar.Low, bar.Close); } else { var bar = slice.Bars[symbol]; Console.WriteLine("{0}: {1} - O={2}, H={3}, L={4}, C={5}", bar.Time, bar.Symbol, bar.Open, bar.High, bar.Low, bar.Close); } } Log.Trace("Data points retrieved: " + historyProvider.DataPointCount); }; if (throwsException) { Assert.Throws <ArgumentException>(test); } else { Assert.DoesNotThrow(test); } }