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); }