public void UpdateStrategy(StrategyVM sVM, bool resetCounter = false)
        {
            var strategy = new PBStrategy();

            strategy.Exchange     = sVM.Exchange;
            strategy.Contract     = sVM.Contract;
            strategy.Symbol       = sVM.StrategySym;
            strategy.Depth        = sVM.Depth;
            strategy.BidQV        = sVM.BidQV;
            strategy.AskQV        = sVM.AskQV;
            strategy.Hedging      = sVM.Hedging;
            strategy.AskEnabled   = sVM.AskEnabled;
            strategy.BidEnabled   = sVM.BidEnabled;
            strategy.MaxAutoTrade = sVM.MaxAutoTrade;
            strategy.BidNotCross  = sVM.BidNotCross;
            strategy.CloseMode    = sVM.CloseMode;
            strategy.Tif          = (int)sVM.TIF;
            strategy.VolCond      = (int)sVM.VolCondition;
            strategy.TickSizeMult = sVM.TickSize;
            if (resetCounter)
            {
                strategy.BidCounter = -1;
                strategy.AskCounter = -1;
            }


            MessageWrapper.SendMessage((uint)BusinessMessageID.MSG_ID_MODIFY_STRATEGY, strategy);
        }
        public void UpdateStrategyModel(StrategyVM sVM, StrategyVM.Model model)
        {
            var strategy = new PBStrategy();

            strategy.Exchange     = sVM.Exchange;
            strategy.Contract     = sVM.Contract;
            strategy.Symbol       = sVM.StrategySym;
            strategy.BaseContract = sVM.BaseContract;

            if (model == StrategyVM.Model.PM)
            {
                strategy.PricingModel = sVM.PricingModel;
            }

            if (model == StrategyVM.Model.IVM)
            {
                strategy.IvModel = sVM.IVModel;
            }

            if (model == StrategyVM.Model.VM)
            {
                strategy.VolModel = sVM.VolModel;
            }

            MessageWrapper.SendMessage((uint)BusinessMessageID.MSG_ID_MODIFY_PRICING_CONTRACT, strategy);
        }
        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 void UpdateStrategyPricingContracts(StrategyVM sVM, StrategyVM.Model model)
        {
            var strategy = new PBStrategy();

            strategy.Exchange = sVM.Exchange;
            strategy.Contract = sVM.Contract;
            strategy.Symbol   = sVM.StrategySym;

            if (model == StrategyVM.Model.PM)
            {
                foreach (var pc in sVM.PricingContractParams)
                {
                    strategy.PricingContracts.Add(new PBPricingContract()
                    {
                        Exchange = pc.Exchange, Contract = pc.Contract, Adjust = pc.Adjust, Weight = pc.Weight
                    });
                }
            }

            if (model == StrategyVM.Model.IVM)
            {
                foreach (var pc in sVM.IVMContractParams)
                {
                    strategy.IvmContracts.Add(new PBPricingContract()
                    {
                        Exchange = pc.Exchange, Contract = pc.Contract, Adjust = pc.Adjust, Weight = pc.Weight
                    });
                }
            }

            if (model == StrategyVM.Model.VM)
            {
                foreach (var pc in sVM.VMContractParams)
                {
                    strategy.VolContracts.Add(new PBPricingContract()
                    {
                        Exchange = pc.Exchange, Contract = pc.Contract, Adjust = pc.Adjust, Weight = pc.Weight
                    });
                }
            }

            MessageWrapper.SendMessage((uint)BusinessMessageID.MSG_ID_MODIFY_PRICING_CONTRACT, strategy);
        }