예제 #1
0
파일: Account.cs 프로젝트: qadmium/ibapi
        public Account(string name, IConnection connection, IApiObjectsFactory factory, IExecutionStorageInternal executionStorage,
            IPositionsStorageInternal positionsesStorageInternal, IOrdersStorageInternal ordersStorageInternal,
            IIdsDispenser idsDispenser, CancellationTokenSource internalCancelationTokenSource,
            AccountCurrenciesFields accountCurrenciesFields)
        {
            CodeContract.Requires(!string.IsNullOrEmpty(name));
            CodeContract.Requires(connection != null);
            CodeContract.Requires(factory != null);
            CodeContract.Requires(executionStorage != null);
            CodeContract.Requires(positionsesStorageInternal != null);
            CodeContract.Requires(ordersStorageInternal != null);
            CodeContract.Requires(accountCurrenciesFields != null);
            CodeContract.Requires(idsDispenser != null);

            this.AccountName = name;
            this.AccountId = name;

            this.factory = factory;
            this.executionStorage = executionStorage;
            this.positionsesStorage = positionsesStorageInternal;
            this.ordersStorage = ordersStorageInternal;
            this.accountCurrenciesFields = accountCurrenciesFields;
            this.idsDispenser = idsDispenser;
            this.internalCancelationTokenSource = internalCancelationTokenSource;

            this.subscription =
                connection.Subscribe((AccountValueMessage message) => message.AccountName == this.AccountName,
                    this.OnAccountValueMessage);
        }
예제 #2
0
 public IAccountInternal CreateAccount(string accountName, IExecutionStorageInternal executionStorage,
     IPositionsStorageInternal positionsStorage, IOrdersStorageInternal ordersStorage,
     AccountCurrenciesFields accountCurrenciesFields)
 {
     return new Account(accountName, this.connection, this, executionStorage, positionsStorage, ordersStorage,
         this.idsDispenser, this.internalCancellationTokenSource,
         accountCurrenciesFields);
 }
예제 #3
0
        public CreateAccountOperation(IConnection connection, IApiObjectsFactory factory, string account,
            CancellationToken cancellationToken)
        {
            Contract.Requires(connection != null);
            Contract.Requires(factory != null);
            Contract.Requires(!string.IsNullOrEmpty(account));

            this.factory = factory;
            this.account = account;
            this.cancellationToken = cancellationToken;
            this.cancellationToken.Register(() => this.taskCompletionSource.TrySetCanceled());
            this.positionStorage = this.factory.CreatePositionStorage(account);
            this.ordersStorage = this.factory.CreateOrdersStorage(account);
            this.createExecutionsStorage = factory.CreateExecutionStorageOperation(account, cancellationToken);
            this.Subscribe(connection);
            this.SendRequest(connection);
        }
예제 #4
0
        public PlaceOrderOperation(RequestPlaceOrderMessage requestPlaceOrderMessage, IConnection connection, IOrdersStorageInternal ordersStorage, CancellationToken cancellationToken)
        {
            Contract.Requires(connection != null);
            Contract.Requires(ordersStorage != null);
            this.orderId = requestPlaceOrderMessage.OrderId;
            this.ordersStorage = ordersStorage;
            this.ordersStorage.OrderAdded += this.OnOrderAdded;

            cancellationToken.Register(() =>
            {
                this.Unsubscribe();
                this.taskCompletionSource.TrySetCanceled();
            });

            this.subscription = connection.SubscribeForErrors(error => error.RequestId == this.orderId, this.OnError);

            connection.SendMessage(requestPlaceOrderMessage);
        }
예제 #5
0
 public Task<int> CreatePlaceOrderOperation(RequestPlaceOrderMessage requestPlaceOrderMessage,
     IOrdersStorageInternal ordersStorage,
     CancellationToken cancellationToken)
 {
     return
         new PlaceOrderOperation(requestPlaceOrderMessage, this.connection, ordersStorage, cancellationToken)
             .Result;
 }