示例#1
0
        private void LoadContracts()
        {
            OnStatusUpdate("Loading contracts...");

            var cr = new SymbolLookupRequestBuilder()
                     .WithResultCount(10)
                     .WithSymbol(TextSearch.CreateStartsWith("OEW3K19 C2950"))
                     .WithDescription(TextSearch.CreateStartsWith("OEW3K19 C2950"))
                     .WithExpression(new ContractKindsCriterion(Enum.GetValues(typeof(ContractKind)).Cast <ContractKind>().Skip(1).ToArray()))
                     .Build();

            // lookup 5 contracts, which symbol started with _baseContractName
            Cache <SymbolLookupRequestID> .Put(Client.Contracts.Lookup.ByCriteria(cr));

            // lookup 5 contracts, which symbol started with _baseContractName
            Cache <SymbolLookupRequestID> .Put(Client.Contracts.Lookup.ByCriteria(
                                                   new SymbolLookupRequestBuilder()
                                                   .WithResultCount(5)
                                                   .WithBaseSymbol(TextSearch.CreateStartsWith(_baseContractName))
                                                   .Build()));

            // load contracts from Indices group (2 per base contract)
            var indicesGroupID = Client.Contracts.Groups.Get("Indices").ID;

            var requests = Client.Contracts.Base.Get()
                           .Where(bc => bc.IsFuture && bc.ContractGroup.ID == indicesGroupID && bc.Type == ContractType.Electronic)
                           .Select(bc => new ContractLoadRequestBuilder()
                                   .WithResultCount(2)
                                   .WithExpression(new ContractLoadExpressionBuilder()
                                                   .Push(new BaseContractIDCriterion(bc.ID))
                                                   .Push(new ContractKindsCriterion(new [] { ContractKind.Future, ContractKind.Continuous }))
                                                   .Push(ContractLoadExpressionOperator.And)
                                                   .Build())
                                   .Build());

            foreach (var request in requests)
            {
                Cache <ContractLoadRequestID> .Put(Client.Contracts.Load.Request(request));
            }
        }