public void OnMultiLegOrderUpdate(PTEntity.MultiLegOrder multiLegOrder) { if (OnMultiLegOrderUpdated != null) { OnMultiLegOrderUpdated(multiLegOrder); } }
void _client_OnMultiLegOrderUpdated(PTEntity.MultiLegOrder obj) { string info = string.Format("mlOrder: {0}\t{1}\t{2}", obj.OrderId, obj.PortfolioId, obj.Quantity); EventAggregator.GetEvent <MultiLegOrderUpdatedEvent>().Publish( new MultiLegOrderUpdateArgs { AccountId = Id, MultiLegOrder = obj }); }
public MultiLegOrderVM Update(string accountId, PTEntity.MultiLegOrder mlOrder) { lock (_syncObj) { string ordId = mlOrder.OrderId; MultiLegOrderVM mlOrderVm = null; mlOrderVm = GetMlOrderVm(accountId, ordId); if (mlOrderVm != null) { mlOrderVm.From(mlOrder); if (mlOrderVm.IsAllFinished) { if (mlOrderVm.IsPortfolio) { if (!mlOrderVm.IsOpenOrder) { if (!string.IsNullOrEmpty(mlOrder.OpenOrderId)) { var openOrderVm = GetMlOrderVm(accountId, mlOrder.OpenOrderId); if (openOrderVm != null) { mlOrderVm.CalcProfit(openOrderVm); } } } } } return(null); } else { string accountPortfKey = BuildAcctPortfKey(accountId, mlOrder.PortfolioId); if (_accountPortfolioOrderCount.ContainsKey(accountPortfKey)) { _accountPortfolioOrderCount[accountPortfKey] += 1; } else { _accountPortfolioOrderCount.Add(accountPortfKey, 1); } mlOrderVm = new MultiLegOrderVM(accountId); mlOrderVm.From(mlOrder); this.Add(mlOrderVm); return(mlOrderVm); } } }
public void From(PTEntity.MultiLegOrder mlOrder) { LastOrder = mlOrder; OrderId = mlOrder.OrderId; OpenOrderId = mlOrder.OpenOrderId; Reason = GetReasonDisplayText(mlOrder.Reason); PortfolioId = mlOrder.PortfolioId; Quantity = mlOrder.Quantity; IsPortfolio = mlOrder.Offset < PTEntity.MlOrderOffset.ML_OF_OTHER; bool allFinished = false; for (int i = 0; i < mlOrder.Legs.Length; ++i) { if (_orders.Count == i) { _orders.Add(new OrderVM()); } var legOrder = mlOrder.Legs[i]; _orders[i].From(legOrder, true); allFinished = _orders[i].IsFinished; } IsAllFinished = allFinished; IsCanceled = ("高频" == Reason ? CheckMlOrderCanceled(_orders) : string.Empty); if (IsPortfolio) { IsOpenOrder = mlOrder.Offset == PTEntity.MlOrderOffset.ML_OF_OPEN; } else { IsOpenOrder = !IsAllFinished; // For non-portoflio, display } if (!string.IsNullOrEmpty(mlOrder.StatusMsg)) { EventLogger.Write("组合下单({0}) - {1}", mlOrder.OrderId, mlOrder.StatusMsg); } }