예제 #1
0
        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);
            }
        }
예제 #2
0
        /// <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();
        }