protected void OnUpdateStrategySuccessAction(PBStrategy strategy) { var strategyVM = StrategyVMCollection.FindContract(strategy.Exchange, strategy.Contract); if (strategyVM != null) { strategyVM.Hedging = strategy.Hedging; strategyVM.Depth = strategy.Depth; strategyVM.BidEnabled = strategy.BidEnabled; strategyVM.AskEnabled = strategy.AskEnabled; strategyVM.BidQV = strategy.BidQV; strategyVM.AskQV = strategy.AskQV; strategyVM.MaxAutoTrade = strategy.MaxAutoTrade; strategyVM.BidNotCross = strategy.BidNotCross; strategyVM.BidCounter = strategy.BidCounter; strategyVM.AskCounter = strategy.AskCounter; strategyVM.OrderCounter = strategy.LimitOrderCounter; strategyVM.CloseMode = strategy.CloseMode; strategyVM.TickSize = strategy.TickSizeMult; if (strategyVM.AskCounter >= strategyVM.MaxAutoTrade) { strategyVM.CounterAskDirection = 1; } else { strategyVM.CounterAskDirection = -1; } if (strategyVM.BidCounter >= strategyVM.MaxAutoTrade) { strategyVM.CounterBidDirection = 1; } else { strategyVM.CounterBidDirection = -1; } if (strategyVM.OrderCounter >= StrategyVM.MaxLimitOrder && strategyVM.TIF == OrderTIFType.GFD && strategy.VolCond == (int)OrderVolType.ANYVOLUME) { strategyVM.OrderCounterDirection = 1; } else { strategyVM.OrderCounterDirection = -1; } OnStrategyUpdated?.Invoke(strategyVM); } }
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); }
protected void OnQueryStrategySuccessAction(PBStrategyList PB) { foreach (var strategy in PB.Strategy) { var strategyVM = StrategyVMCollection.FindContract(strategy.Exchange, strategy.Contract); if (strategyVM == null) { strategyVM = new StrategyVM(this); StrategyVMCollection.Add(strategyVM); } strategyVM.Exchange = strategy.Exchange; strategyVM.Contract = strategy.Contract; strategyVM.Hedging = strategy.Hedging; strategyVM.Underlying = strategy.Underlying; strategyVM.StrategySym = strategy.Symbol; strategyVM.Depth = strategy.Depth; strategyVM.AskEnabled = strategy.AskEnabled; strategyVM.BidEnabled = strategy.BidEnabled; strategyVM.BidQV = strategy.BidQV; strategyVM.AskQV = strategy.AskQV; strategyVM.IVModel = strategy.IvModel; strategyVM.VolModel = strategy.VolModel; strategyVM.PricingModel = strategy.PricingModel; strategyVM.BaseContract = strategy.BaseContract; strategyVM.Portfolio = strategy.Portfolio; strategyVM.MaxAutoTrade = strategy.MaxAutoTrade; strategyVM.BidNotCross = strategy.BidNotCross; strategyVM.AskCounter = strategy.AskCounter; strategyVM.BidCounter = strategy.BidCounter; strategyVM.CloseMode = strategy.CloseMode; strategyVM.TickSize = strategy.TickSizeMult; strategyVM.OrderCounter = strategy.LimitOrderCounter; strategyVM.PricingContractParams.Clear(); foreach (var wtContract in strategy.PricingContracts) { strategyVM.PricingContractParams.Add( new PricingContractParamVM() { Exchange = wtContract.Exchange, Contract = wtContract.Contract, Adjust = wtContract.Adjust, Weight = wtContract.Weight }); } strategyVM.IVMContractParams.Clear(); foreach (var wtContract in strategy.IvmContracts) { strategyVM.IVMContractParams.Add( new PricingContractParamVM() { Exchange = wtContract.Exchange, Contract = wtContract.Contract, Adjust = wtContract.Adjust, Weight = wtContract.Weight }); } strategyVM.VMContractParams.Clear(); foreach (var wtContract in strategy.VolContracts) { strategyVM.VMContractParams.Add( new PricingContractParamVM() { Exchange = wtContract.Exchange, Contract = wtContract.Contract, Adjust = wtContract.Adjust, Weight = wtContract.Weight }); } } }