/// <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(); }
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); }
/// <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(); }
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); }
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); }
/// <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); }