コード例 #1
0
 /// <summary>
 /// Initialize the result handler with this result packet.
 /// </summary>
 /// <param name="job">Algorithm job packet for this result handler</param>
 /// <param name="messagingHandler">The handler responsible for communicating messages to listeners</param>
 /// <param name="api">The api instance used for handling logs</param>
 /// <param name="transactionHandler">The transaction handler used to get the algorithms <see cref="Order"/> information</param>
 public virtual void Initialize(AlgorithmNodePacket job, IMessagingHandler messagingHandler, IApi api, ITransactionHandler transactionHandler)
 {
     MessagingHandler        = messagingHandler;
     TransactionHandler      = transactionHandler;
     CompileId               = job.CompileId;
     AlgorithmId             = job.AlgorithmId;
     ProjectId               = job.ProjectId;
     OrderEventJsonConverter = new OrderEventJsonConverter(AlgorithmId);
     _updateRunner           = new Thread(Run, 0)
     {
         IsBackground = true, Name = "Result Thread"
     };
     _updateRunner.Start();
 }
コード例 #2
0
ファイル: OrderEventTests.cs プロジェクト: Mkhan666/Lean
        public void NonNullOrderFee()
        {
            var order      = new MarketOrder(Symbols.BTCUSD, 0.123m, DateTime.UtcNow);
            var orderEvent = new OrderEvent(order, DateTime.UtcNow, new OrderFee(new CashAmount(88, Currencies.USD)));

            var converter         = new OrderEventJsonConverter("id");
            var serializeObject   = JsonConvert.SerializeObject(orderEvent, converter);
            var deserializeObject = JsonConvert.DeserializeObject <OrderEvent>(serializeObject, converter);

            Assert.IsTrue(serializeObject.Contains("order-fee-amount"));
            Assert.IsTrue(serializeObject.Contains("order-fee-currency"));

            Assert.AreEqual(orderEvent.OrderFee.Value.Amount, deserializeObject.OrderFee.Value.Amount);
            Assert.AreEqual(orderEvent.OrderFee.Value.Currency, deserializeObject.OrderFee.Value.Currency);
        }
コード例 #3
0
 /// <summary>
 /// Initialize the result handler with this result packet.
 /// </summary>
 /// <param name="job">Algorithm job packet for this result handler</param>
 /// <param name="messagingHandler">The handler responsible for communicating messages to listeners</param>
 /// <param name="api">The api instance used for handling logs</param>
 /// <param name="transactionHandler">The transaction handler used to get the algorithms <see cref="Order"/> information</param>
 public virtual void Initialize(AlgorithmNodePacket job, IMessagingHandler messagingHandler, IApi api, ITransactionHandler transactionHandler)
 {
     _hostName               = job.HostName ?? Environment.MachineName;
     MessagingHandler        = messagingHandler;
     TransactionHandler      = transactionHandler;
     CompileId               = job.CompileId;
     AlgorithmId             = job.AlgorithmId;
     ProjectId               = job.ProjectId;
     RamAllocation           = job.RamAllocation.ToStringInvariant();
     OrderEventJsonConverter = new OrderEventJsonConverter(AlgorithmId);
     _updateRunner           = new Thread(Run, 0)
     {
         IsBackground = true, Name = "Result Thread"
     };
     _updateRunner.Start();
 }
コード例 #4
0
ファイル: OrderEventTests.cs プロジェクト: Mkhan666/Lean
        public void RoundTripSerialization()
        {
            var order      = new MarketOrder(Symbols.BTCUSD, 0.123m, DateTime.UtcNow);
            var orderEvent = new OrderEvent(order, DateTime.UtcNow, OrderFee.Zero)
            {
                Message           = "Pepe",
                Status            = OrderStatus.PartiallyFilled,
                StopPrice         = 1,
                LimitPrice        = 2,
                FillPrice         = 11,
                FillQuantity      = 12,
                FillPriceCurrency = "USD",
                Id       = 55,
                Quantity = 16
            };

            var converter       = new OrderEventJsonConverter("id");
            var serializeObject = JsonConvert.SerializeObject(orderEvent, converter);

            // OrderFee zero uses null currency and should be ignored when serializing
            Assert.IsFalse(serializeObject.Contains(Currencies.NullCurrency));
            Assert.IsFalse(serializeObject.Contains("order-fee-amount"));
            Assert.IsFalse(serializeObject.Contains("order-fee-currency"));

            var deserializeObject = JsonConvert.DeserializeObject <OrderEvent>(serializeObject, converter);

            Assert.AreEqual(orderEvent.Symbol, deserializeObject.Symbol);
            Assert.AreEqual(orderEvent.StopPrice, deserializeObject.StopPrice);
            // there is a small loss of precision because we use double
            Assert.AreEqual(orderEvent.UtcTime.Ticks, deserializeObject.UtcTime.Ticks, 5);
            Assert.AreEqual(orderEvent.OrderId, deserializeObject.OrderId);
            Assert.AreEqual(orderEvent.AbsoluteFillQuantity, deserializeObject.AbsoluteFillQuantity);
            Assert.AreEqual(orderEvent.Direction, deserializeObject.Direction);
            Assert.AreEqual(orderEvent.FillPrice, deserializeObject.FillPrice);
            Assert.AreEqual(orderEvent.FillPriceCurrency, deserializeObject.FillPriceCurrency);
            Assert.AreEqual(orderEvent.FillQuantity, deserializeObject.FillQuantity);
            Assert.AreEqual(orderEvent.Id, deserializeObject.Id);
            Assert.AreEqual(orderEvent.IsAssignment, deserializeObject.IsAssignment);
            Assert.AreEqual(orderEvent.LimitPrice, deserializeObject.LimitPrice);
            Assert.AreEqual(orderEvent.Message, deserializeObject.Message);
            Assert.AreEqual(orderEvent.Quantity, deserializeObject.Quantity);
            Assert.AreEqual(orderEvent.Status, deserializeObject.Status);
            Assert.AreEqual(orderEvent.OrderFee.Value.Amount, deserializeObject.OrderFee.Value.Amount);
            Assert.AreEqual(orderEvent.OrderFee.Value.Currency, deserializeObject.OrderFee.Value.Currency);
        }
コード例 #5
0
        public void RoundTripSerialization()
        {
            var order      = new MarketOrder(Symbols.BTCUSD, 0.123m, DateTime.UtcNow);
            var orderEvent = new OrderEvent(order, DateTime.UtcNow, OrderFee.Zero)
            {
                OrderFee          = new OrderFee(new CashAmount(99, "EUR")),
                Message           = "Pepe",
                Status            = OrderStatus.PartiallyFilled,
                StopPrice         = 1,
                LimitPrice        = 2,
                FillPrice         = 11,
                FillQuantity      = 12,
                FillPriceCurrency = "USD",
                Id       = 55,
                Quantity = 16
            };

            var converter         = new OrderEventJsonConverter("id");
            var serializeObject   = JsonConvert.SerializeObject(orderEvent, converter);
            var deserializeObject = JsonConvert.DeserializeObject <OrderEvent>(serializeObject, converter);

            Assert.AreEqual(orderEvent.Symbol, deserializeObject.Symbol);
            Assert.AreEqual(orderEvent.StopPrice, deserializeObject.StopPrice);
            // there is a small loss of precision because we use double
            Assert.AreEqual(orderEvent.UtcTime.Ticks, deserializeObject.UtcTime.Ticks, 5);
            Assert.AreEqual(orderEvent.OrderId, deserializeObject.OrderId);
            Assert.AreEqual(orderEvent.AbsoluteFillQuantity, deserializeObject.AbsoluteFillQuantity);
            Assert.AreEqual(orderEvent.Direction, deserializeObject.Direction);
            Assert.AreEqual(orderEvent.FillPrice, deserializeObject.FillPrice);
            Assert.AreEqual(orderEvent.FillPriceCurrency, deserializeObject.FillPriceCurrency);
            Assert.AreEqual(orderEvent.FillQuantity, deserializeObject.FillQuantity);
            Assert.AreEqual(orderEvent.Id, deserializeObject.Id);
            Assert.AreEqual(orderEvent.IsAssignment, deserializeObject.IsAssignment);
            Assert.AreEqual(orderEvent.LimitPrice, deserializeObject.LimitPrice);
            Assert.AreEqual(orderEvent.Message, deserializeObject.Message);
            Assert.AreEqual(orderEvent.Quantity, deserializeObject.Quantity);
            Assert.AreEqual(orderEvent.Status, deserializeObject.Status);
            Assert.AreEqual(orderEvent.OrderFee.Value.Amount, deserializeObject.OrderFee.Value.Amount);
            Assert.AreEqual(orderEvent.OrderFee.Value.Currency, deserializeObject.OrderFee.Value.Currency);
        }
コード例 #6
0
 /// <summary>
 /// Set the user communication channel
 /// </summary>
 /// <param name="job"></param>
 public void SetAuthentication(AlgorithmNodePacket job)
 {
     _job = job;
     _orderEventJsonConverter = new OrderEventJsonConverter(job.AlgorithmId);
     Transmit(_job);
 }