Beispiel #1
0
        static void Main()
        {
            try
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(Topic);
                Console.ForegroundColor = ConsoleColor.White;

                var options = new KafkaOptions(new Uri("http://localhost:9092"))
                {
                    Log = new ConsoleLog()
                };

                var brokerRouter = new BrokerRouter(options);
                _brokerRoute = brokerRouter.SelectBrokerRoute(Topic);
                List <Topic>     topics          = brokerRouter.GetTopicMetadata(Topic);
                OffsetPosition[] offsetPositions = OffsetFetchRequest(topics.First().Partitions.Select(p => new OffsetFetch
                {
                    Topic       = Topic,
                    PartitionId = p.PartitionId
                })).Select(o => new OffsetPosition {
                    Offset = o.Offset + 1, PartitionId = o.PartitionId
                }).ToArray();
                StartConsumer(offsetPositions);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            finally
            {
                ConsoleLog.WaitOnKeys();
            }
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            try
            {
                var options = new KafkaOptions(new Uri("http://localhost:9092"))
                {
                    Log = new ConsoleLog()
                };
                var brokerRouter = new BrokerRouter(options);
                _brokerRoute = brokerRouter.SelectBrokerRoute(Topic);

                StartConsumer(ConsoleColor.Blue, OffsetFetchRequest().Offset + 1);
                StartConsumer(ConsoleColor.Green, OffsetFetchRequest().Offset + 1);
                StartConsumer(ConsoleColor.Red, OffsetFetchRequest().Offset + 1);
                StartConsumer(ConsoleColor.Yellow, OffsetFetchRequest().Offset + 1);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            finally
            {
                ConsoleLog.WaitOnKeys();
            }
        }
Beispiel #3
0
 protected bool Equals(BrokerRoute other)
 {
     return string.Equals(Topic, other.Topic) && PartitionId == other.PartitionId;
 }
Beispiel #4
0
 protected bool Equals(BrokerRoute other)
 {
     return(string.Equals(Topic, other.Topic) && PartitionId == other.PartitionId);
 }
Beispiel #5
0
        public void TestCase1()
        {
            //trade instrument
            Instrument digicoin = new Instrument() { Name = "DIGICOIN", LotSize = 10, MinLot = 1 };

            //clients
            Account a = new Account("Client A");
            Account b = new Account("Client B");
            Account c = new Account("Client C");

            //brokers
            BrokerRoute broker1 = new BrokerRoute(new FixedCommissionCalculator(5), 10);
            broker1.LastQuote = new Quote(1.49);
            BrokerRoute broker2 = new BrokerRoute(new AmountBasedCommissionCalculator(new decimal[] { 3, 3, 3, 3, 2.5M, 2.5M, 2.5M, 2.5M, 2, 2 }), 10);
            broker2.LastQuote = new Quote(1.52);

            //samrt route AKA 'aggregator'
            SmartRoute smart = new SmartRoute(broker1, broker2);
            smart.MaxLot = 10;

            //trade server
            Server server = new Server();
            server.Route = smart;

            DealTicket ticket;

            //1
            ticket = server.PlaceOrder(new Order() { Instrument = digicoin, Account = a, Amount = 1, Side = Operation.Buy });
            Assert.AreEqual(15.645M, ticket.Gross);

            //2
            ticket = server.PlaceOrder(new Order() { Instrument = digicoin, Account = b, Amount = 4, Side = Operation.Buy });
            Assert.AreEqual(62.58M, ticket.Gross);

            //3
            ticket = server.PlaceOrder(new Order() { Instrument = digicoin, Account = a, Amount = 5, Side = Operation.Buy });
            Assert.AreEqual(77.9M, ticket.Gross);

            //4
            ticket = server.PlaceOrder(new Order() { Instrument = digicoin, Account = b, Amount = 10, Side = Operation.Buy });
            Assert.AreEqual(155.04M, ticket.Gross);

            //5
            ticket = server.PlaceOrder(new Order() { Instrument = digicoin, Account = b, Amount = 8, Side = Operation.Sell });
            Assert.AreEqual(124.64M, ticket.Gross);

            //6
            ticket = server.PlaceOrder(new Order() { Instrument = digicoin, Account = c, Amount = 7, Side = Operation.Sell });
            Assert.AreEqual(109.06M, ticket.Gross);

            //7
            ticket = server.PlaceOrder(new Order() { Instrument = digicoin, Account = a, Amount = 13, Side = Operation.Buy });
            Assert.AreEqual(201.975M, ticket.Gross);

            //8
            ticket = server.PlaceOrder(new Order() { Instrument = digicoin, Account = b, Amount = 6, Side = Operation.Sell });
            Assert.AreEqual(93.48M, ticket.Gross);

            //9
            Assert.AreEqual(296.156M, Math.Round(server.GetTotalAmount(a, digicoin), 3));
            Assert.AreEqual(0M, Math.Round(server.GetTotalAmount(b, digicoin), 3));
            Assert.AreEqual(-109.06M, Math.Round(server.GetTotalAmount(c, digicoin), 3));

            //10
            Assert.AreEqual(80M, server.GetTransactedAmount(broker1, digicoin));
            Assert.AreEqual(460M, server.GetTransactedAmount(broker2, digicoin));
        }