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);
            }
        }
Example #2
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);
        }
        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
                    });
                }
            }
        }