void UpdateAccounts() { OrderExecutionSourceStub stub = _stub; FXCMConnectionManager manager = Manager; if (stub == null || manager == null) { return; } // The newly produced accounts have no Guids. List <AccountInfo> accounts = manager.GetAvailableAccounts(IntegrationAdapter.AdvisedAccountDecimalsPrecision); foreach (AccountInfo info in accounts) {// Update / insert accounts. AccountInfo actualInfo = info; AccountInfo?existingInfo = stub.GetAccountInfo(info.Id); if (existingInfo.HasValue == false) {// New info, assign a Guid. actualInfo.Guid = Guid.NewGuid(); } else { actualInfo.Guid = existingInfo.Value.Guid; } stub.UpdateAccountInfo(actualInfo); } }
/// <summary> /// Event executed on a new thread. /// </summary> void Manager_OrderUpdatedEvent(FXCMConnectionManager manager, string accountId, OrderInfo orderInfo) { OrderExecutionSourceStub stub = _stub; if (stub == null) { SystemMonitor.OperationWarning(string.Format("Failed to update order information, since account [{0}] not found.", accountId)); return; } AccountInfo?accountInfo = stub.GetAccountInfo(accountId); if (accountInfo.HasValue) { stub.UpdateOrderInfo(accountInfo.Value, Order.UpdateTypeEnum.Update, orderInfo); } else { SystemMonitor.OperationWarning(string.Format("Failed to find account [{0}] for order [{1}].", accountId, orderInfo.Id)); } UpdatePositions(); }