示例#1
0
        public IList <CallPutTDOptionVM> MakeCallPutTDOptionData(IList <double> strikeList, IList <ContractKeyVM> callList, IList <ContractKeyVM> putList, IList <MarketDataVM> marketDataList = null)
        {
            var retList = new List <CallPutTDOptionVM>();

            for (int i = 0; i < callList.Count; i++)
            {
                var callOption = new TradingDeskOptionVM {
                    Exchange = callList[i].Exchange, Contract = callList[i].Contract
                };
                var putOption = new TradingDeskOptionVM {
                    Exchange = putList[i].Exchange, Contract = putList[i].Contract
                };
                if (marketDataList != null)
                {
                    callOption.MarketDataVM = marketDataList.FirstOrDefault(c => c.Contract == callList[i].Contract);
                    putOption.MarketDataVM  = marketDataList.FirstOrDefault(c => c.Contract == putList[i].Contract);
                }
                callOption.InitProperties();
                putOption.InitProperties();

                var callStrategyVM = StrategyVMCollection.FirstOrDefault(s => s.EqualContract(callList[i]));
                if (callStrategyVM != null)
                {
                    callStrategyVM.Depth = 1;
                }
                var putStrategyVM = StrategyVMCollection.FirstOrDefault(s => s.EqualContract(putList[i]));
                if (putStrategyVM != null)
                {
                    putStrategyVM.Depth = 1;
                }
                retList.Add(new CallPutTDOptionVM()
                {
                    StrikePrice    = strikeList[i],
                    CallOptionVM   = callOption,
                    PutOptionVM    = putOption,
                    CallStrategyVM = callStrategyVM,
                    PutStrategyVM  = putStrategyVM
                });
            }

            return(retList);
        }