Beispiel #1
0
        public void Setup()
        {
            var sunday      = new LocalMarketHours(DayOfWeek.Sunday, new TimeSpan(17, 0, 0), TimeSpan.FromTicks(Time.OneDay.Ticks - 1));
            var monday      = LocalMarketHours.OpenAllDay(DayOfWeek.Monday);
            var tuesday     = LocalMarketHours.OpenAllDay(DayOfWeek.Tuesday);
            var wednesday   = LocalMarketHours.OpenAllDay(DayOfWeek.Wednesday);
            var thursday    = LocalMarketHours.OpenAllDay(DayOfWeek.Thursday);
            var friday      = new LocalMarketHours(DayOfWeek.Friday, TimeSpan.Zero, new TimeSpan(17, 0, 0));
            var earlyCloses = new Dictionary <DateTime, TimeSpan>();
            var lateOpens   = new Dictionary <DateTime, TimeSpan>();

            _exchangeHours = new SecurityExchangeHours(TimeZones.NewYork, USHoliday.Dates.Select(x => x.Date), new[]
            {
                sunday, monday, tuesday, wednesday, thursday, friday
            }.ToDictionary(x => x.DayOfWeek), earlyCloses, lateOpens);

            _liveTradingDataFeed = new TestableLiveTradingDataFeed();

            var jobPacket = new LiveNodePacket()
            {
                DeployId         = "",
                Brokerage        = BrokerageName.OandaBrokerage.ToString(),
                DataQueueHandler = "LiveDataQueue"
            };

            var algo = new TestAlgorithm();
            var marketHoursDatabase      = MarketHoursDatabase.FromDataFolder();
            var symbolPropertiesDataBase = SymbolPropertiesDatabase.FromDataFolder();
            var dataManager = new DataManager(_liveTradingDataFeed,
                                              new UniverseSelection(
                                                  algo,
                                                  new SecurityService(algo.Portfolio.CashBook, marketHoursDatabase, symbolPropertiesDataBase, algo, RegisteredSecurityDataTypesProvider.Null)),
                                              algo,
                                              algo.TimeKeeper,
                                              marketHoursDatabase,
                                              true,
                                              RegisteredSecurityDataTypesProvider.Null);

            algo.SubscriptionManager.SetDataManager(dataManager);
            var synchronizer = new LiveSynchronizer();

            synchronizer.Initialize(algo, dataManager);
            _liveTradingDataFeed.Initialize(algo, jobPacket, new LiveTradingResultHandler(), new LocalDiskMapFileProvider(),
                                            null, new DefaultDataProvider(), dataManager, synchronizer);
            algo.Initialize();

            _config = SecurityTests.CreateTradeBarConfig();
        }
Beispiel #2
0
        public void WontRemoveBecauseTarget_Check()
        {
            var orderProvider   = new FakeOrderProcessor();
            var pendingRemovals = new PendingRemovalsManager(orderProvider);
            var security        = SecurityTests.GetSecurity();
            var universe        = new TestUniverse();

            security.Holdings.Target = new PortfolioTarget(security.Symbol, 10);

            Assert.IsNull(pendingRemovals.TryRemoveMember(security, universe));
            Assert.IsFalse(pendingRemovals.CheckPendingRemovals(new HashSet <Symbol>(), universe).Any());
            Assert.AreEqual(1, pendingRemovals.PendingRemovals.Keys.Count());
            Assert.AreEqual(1, pendingRemovals.PendingRemovals.Values.Count());
            Assert.AreEqual(universe, pendingRemovals.PendingRemovals.Keys.First());
            Assert.AreEqual(security, pendingRemovals.PendingRemovals.Values.First().First());
        }
Beispiel #3
0
        public void ReturnedRemoved_Add()
        {
            var orderProvider   = new FakeOrderProcessor();
            var pendingRemovals = new PendingRemovalsManager(orderProvider);
            var security        = SecurityTests.GetSecurity();
            var universe        = new TestUniverse();

            var result = pendingRemovals.TryRemoveMember(security, universe);

            Assert.IsTrue(result.Any());
            Assert.AreEqual(universe, result.First().Universe);
            Assert.AreEqual(security, result.First().Security);
            Assert.IsFalse(pendingRemovals.CheckPendingRemovals(new HashSet <Symbol>(), universe).Any());
            Assert.AreEqual(0, pendingRemovals.PendingRemovals.Keys.Count());
            Assert.AreEqual(0, pendingRemovals.PendingRemovals.Values.Count());
        }
Beispiel #4
0
        public void WontRemoveBecauseOpenOrder_Check()
        {
            var orderProvider   = new FakeOrderProcessor();
            var pendingRemovals = new PendingRemovalsManager(orderProvider);
            var security        = SecurityTests.GetSecurity();
            var universe        = new TestUniverse();

            orderProvider.AddOrder(new LimitOrder(security.Symbol, 1, 1, DateTime.UtcNow));

            Assert.IsNull(pendingRemovals.TryRemoveMember(security, universe));
            Assert.IsFalse(pendingRemovals.CheckPendingRemovals(new HashSet <Symbol>(), universe).Any());
            Assert.AreEqual(1, pendingRemovals.PendingRemovals.Keys.Count());
            Assert.AreEqual(1, pendingRemovals.PendingRemovals.Values.Count());
            Assert.AreEqual(universe, pendingRemovals.PendingRemovals.Keys.First());
            Assert.AreEqual(security, pendingRemovals.PendingRemovals.Values.First().First());
        }
        public void USAEquityFeeInUSD()
        {
            var security = SecurityTests.GetSecurity();

            security.SetMarketPrice(new Tick(DateTime.UtcNow, security.Symbol, 100, 100));

            var fee = _feeModel.GetOrderFee(
                new OrderFeeParameters(
                    security,
                    new MarketOrder(security.Symbol, 1000, DateTime.UtcNow)
                    )
                );

            Assert.AreEqual(Currencies.USD, fee.Value.Currency);
            Assert.AreEqual(5m, fee.Value.Amount);
        }
        public void CalculateEquityMinimumFeeInUSD()
        {
            var feeModel = new AlphaStreamsFeeModel();
            var security = SecurityTests.GetSecurity();

            security.SetMarketPrice(new Tick(DateTime.UtcNow, security.Symbol, 100, 100));

            var fee = feeModel.GetOrderFee(
                new OrderFeeParameters(
                    security,
                    new MarketOrder(security.Symbol, 1, DateTime.UtcNow)
                    )
                );

            Assert.AreEqual(Currencies.USD, fee.Value.Currency);
            Assert.AreEqual(1m, fee.Value.Amount);
        }
Beispiel #7
0
        public void WontBeReturnedBecauseReSelected()
        {
            var orderProvider   = new FakeOrderProcessor();
            var pendingRemovals = new PendingRemovalsManager(orderProvider);
            var security        = SecurityTests.GetSecurity();
            var universe        = new TestUniverse();

            orderProvider.AddOrder(new LimitOrder(security.Symbol, 1, 1, DateTime.UtcNow));
            pendingRemovals.TryRemoveMember(security, universe);

            Assert.IsFalse(pendingRemovals.CheckPendingRemovals(
                               new HashSet <Symbol> {
                security.Symbol
            }, universe).Any());

            // internally it was removed because it was reselected
            Assert.AreEqual(0, pendingRemovals.PendingRemovals.Keys.Count());
            Assert.AreEqual(0, pendingRemovals.PendingRemovals.Values.Count());
        }
        public void CalculateOrderFeeForLongOrShortEquity(int quantity)
        {
            var security = SecurityTests.GetSecurity();

            security.SetMarketPrice(new Tick(DateTime.UtcNow, security.Symbol, 100, 100));

            var feeModel = new AlphaStreamsFeeModel();

            var parameters = new OrderFeeParameters(
                security,
                new MarketOrder(security.Symbol, quantity, DateTime.UtcNow)
                );

            var fee = feeModel.GetOrderFee(parameters);

            Assert.AreEqual(Currencies.USD, fee.Value.Currency);
            var expected = 0m * security.Price * quantity;

            Assert.AreEqual(expected, fee.Value.Amount);
        }
Beispiel #9
0
        public void SetUp()
        {
            _config       = SecurityTests.CreateTradeBarConfig();
            _security     = SecurityTests.GetSecurity();
            orderDateTime = new DateTime(2017, 2, 2, 13, 0, 0);
            orderEvent    = new OrderEvent(
                99,
                _security.Symbol,
                orderDateTime,
                OrderStatus.Submitted,
                OrderDirection.Buy,
                1,
                1,
                new OrderFee(new CashAmount(1, Currencies.USD))
                );
            var reference    = DateTime.Now;
            var referenceUtc = reference.ConvertToUtc(TimeZones.NewYork);
            var timeKeeper   = new TimeKeeper(referenceUtc);

            _security.SetLocalTimeKeeper(timeKeeper.GetLocalTimeKeeper(TimeZones.NewYork));
        }
Beispiel #10
0
        public static void Main()
        {
            string baseAddress = "http://localhost:9022";
            HttpSelfHostConfiguration config = new HttpSelfHostConfiguration(baseAddress);

            config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{action}/{id}", new { action = RouteParameter.Optional, id = RouteParameter.Optional });
            SecurityTests.UpdateConfiguration(config);

            HttpSelfHostServer server = new HttpSelfHostServer(config);

            server.OpenAsync();

            SecurityTests tests = new SecurityTests();

            tests.BaseAddress = baseAddress;
            tests.Client      = new System.Net.Http.HttpClient();

            foreach (var data in SecurityTests.DoSAttackData)
            {
                tests.TestDosAttackWithMultipleThreads(data[0] as string);
            }
        }
Beispiel #11
0
 public TestUniverse()
     : base(SecurityTests.CreateTradeBarConfig())
 {
 }