Example #1
0
        /// <summary>
        /// 登录成功
        /// </summary>
        public void LoginSuccess()
        {
            DataTable dt = SQLiteHelper.ExecuteDataset(SQLiteHelper.DBPath, CommandType.Text, "select * from AutoStopLoss where UserID='" + UserInfoHelper.UserId + "'").Tables[0];

            if (dt != null && dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    string ContractID = dr["ContractID"].ToString();
                    string PostionID  = dr["PostionID"].ToString();
                    object lossprice  = dr["LossPrice"];
                    double losspriced = 0;
                    if (lossprice != null)
                    {
                        losspriced = Convert.ToDouble(lossprice);
                    }
                    object newprice  = dr["NewPrice"];
                    double newpriced = 0;
                    if (lossprice != null)
                    {
                        newpriced = Convert.ToDouble(lossprice);
                    }
                    if (!ContractVariety.ContracPostionID.ContainsKey(ContractID))
                    {
                        continue;//不在设置的合约中就不添加进来
                    }
                    ContractVariety.ContracPostionID[ContractID].Add(PostionID);
                    if (!ContractVariety.PostionPrice.ContainsKey(PostionID))
                    {
                        ContractVariety.PostionPrice.Add(PostionID, new AutoLossPrice());
                    }
                    ContractVariety.PostionPrice[PostionID].LossPrice = losspriced;
                    ContractVariety.PostionPrice[PostionID].NewPrice  = newpriced;
                }
            }
            LoginBtnIsEnabled = true;
            //给界面自选赋值
            SetOptionalList();
            _mainVM.TradePanelViewModel    = TradePanelViewModel.GetInstance(_mainVM);
            _mainVM.TradeLoginVisibility   = Visibility.Collapsed;
            ContractVariety.IsLoginSuccess = true;
            UserInfoHelper.IsHaveLogin     = true;
            SendPotion(false);
            SendOrderCancel(false);
            SendConditionBill(false);
            ToDayTrade(false);
            //给界面资金赋值
            var fundsmodel = FundsViewModel.GetInstance();
            var dataModel  = TradeInfoHelper.FundsDataModel;

            fundsmodel.LoginName       = UserInfoHelper.LoginName;
            fundsmodel.AccountName     = UserInfoHelper.AccountName;
            fundsmodel.AbleFund        = dataModel.able_fund;
            fundsmodel.CurrentEquity   = dataModel.current_equity;
            fundsmodel.Floatprofitloss = dataModel.float_profit_loss;
            if (_mainVM.SelectItemViewModel != null)
            {
                TransactionViewModel.Instance().SetXamlValues(_mainVM.SelectItemViewModel);
            }
        }
        public void AddExecuteChanged()
        {
            AutoStopLossModelViewModel aslmv = new AutoStopLossModelViewModel();

            aslmv.Variety = TransactionViewModel.Instance().Variety;
            Aslmvm.Add(aslmv);
        }
Example #3
0
 public void SelectionChangedExecuteChanged()
 {
     if (SelectedItem == null)
     {
         return;
     }
     TransactionViewModel.Instance().SelectFutures(SelectedItem.ContractId, SelectedItem.PositionVolume);
 }
 public void SelectionChangedALLExecuteChanged()
 {
     if (SelectedItemAll == null)
     {
         return;
     }
     TransactionViewModel.Instance().SelectFutures(SelectedItemAll.ContractId);
 }
Example #5
0
 public void SelectionChangedDeExecuteChanged()
 {
     if (DetSelectedItem == null)
     {
         return;
     }
     TransactionViewModel.Instance().SelectFutures(DetSelectedItem.ContractId);
 }
        private void listPrice2_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
        {
            e.Handled   = true;
            pop2.IsOpen = false;
            string priceType = listPrice23.SelectedItem.ToString();

            TransactionViewModel.Instance().TypeChangedCommandExecuteChanged(priceType);
        }
Example #7
0
 public void SelectionChangedKCExecuteChanged()
 {
     if (KCSelectedItem == null)
     {
         return;
     }
     KCSelectedItem.ContractID = KCSelectedItem.ContractCode;
     TransactionViewModel.Instance().SelectFutures(KCSelectedItem.ContractID);
 }
Example #8
0
 public TradePanelViewModel(MainViewModel mainVM)
 {
     _mainVM = mainVM;
     TransactionViewModel = TransactionViewModel.Instance();
     TransactionPannel    = new TransactionPannelViewModel();
     ConditionBill        = UCConditionBillViewModel.Instance();
     PositionAll          = PositionAllViewModel.Instance();
     OrderCancel          = OrderCancelViewModel.Instance();
     TodayTrader          = TodayTraderViewModels.Instance();
     FundsViewModel       = FundsViewModel.GetInstance();
 }
Example #9
0
        public void GotFocusExecuteChanged()
        {
            if (SelectedItem == null)
            {
                return;
            }
            List <DelegationModelViewModel> ckitem = OrderCancelViewModel.Instance().KCDelegations.Where(x => x.ContractCode == SelectedItem.ContractId && x.Direction != SelectedItem.Direction && x.OpenOffset == (int)OffsetType.OFFSET_COVER).ToList();
            int ckNum = 0;

            if (ckitem != null && ckitem.Count > 0)
            {
                ckNum = ckitem.Sum(x => x.OrderVolume);
            }
            TransactionViewModel.Instance().dic = SelectedItem.Direction;
            TransactionViewModel.Instance().SelectFutures(SelectedItem.ContractId, SelectedItem.PositionVolume - ckNum);
            TransactionViewModel.Instance().IsEnabled = true;
        }
        public void ExecuteDelegationData(object para)
        {
            try
            {
                DelegationModel      rtm  = para as DelegationModel;
                OrderCancelViewModel ocvm = OrderCancelViewModel.Instance();
                if (ocvm.Delegations.FirstOrDefault(x => x.OrderId == rtm.order_id) != null)
                {
                    return;
                }
                if (rtm.bLast)
                {
                    //PositionViewModel.Instance().JSAbleVolume();
                    TransactionViewModel.Instance().FigureUpNum(TransactionViewModel.Instance()._futures);
                    return;
                }
                VarietyModel vm     = null;
                string[]     values = rtm.contract_code.Split(' ');
                if (values.Length == 3)
                {
                    string varietie = values[1];
                    if (ContractVariety.Varieties.ContainsKey(varietie))
                    {
                        vm = ContractVariety.Varieties[varietie];
                    }
                    if (vm != null)
                    {
                        rtm.precision = vm.precision;
                    }
                }


                DelegationModelViewModel dmvm = new DelegationModelViewModel(rtm);

                ocvm.Delegations.Add(dmvm);
                if (rtm.order_status == (int)DeleteType.CreateSuccess || rtm.order_status == (int)DeleteType.PortionTakeEffect)
                {
                    ocvm.KCDelegations.Add(dmvm);
                }
            }
            catch (Exception ex)
            {
                LogHelper.Info(ex.ToString());
            }
        }
        private void LoadPara()
        {
            StopLossModelViewModel.BuyNum             = CommParameterSetting.StopLossModel.BuyNum;
            StopLossModelViewModel.CkBuy              = CommParameterSetting.StopLossModel.CkBuy;
            StopLossModelViewModel.CkSell             = CommParameterSetting.StopLossModel.CkSell;
            StopLossModelViewModel.SellNum            = CommParameterSetting.StopLossModel.SellNum;
            StopLossModelViewModel.StopLossDelegation = CommParameterSetting.StopLossModel.StopLossDelegation;
            StopLossModelViewModel.StopLossPrice      = CommParameterSetting.StopLossModel.StopLossPrice;
            // comStopProfit.Text = CommParameterSetting.StopLossModel.StopProfitPrice;
            //加载自动止盈止损 自动盈亏是用;分割行,分割列;
            if (CommParameterSetting.AutoStopLossModel != null && CommParameterSetting.AutoStopLossModel.Count > 0)
            {
                foreach (AutoStopLossModel item in CommParameterSetting.AutoStopLossModel)
                {
                    AutoStopLossModelViewModel asmvm = new AutoStopLossModelViewModel();
                    asmvm.VarietySelectedItem   = item.Variety;
                    asmvm.Agreement             = item.Agreement;
                    asmvm.Direction             = item.Direction == "B"? "买":"卖";
                    asmvm.FloatingProfitAndLoss = item.FloatingProfitAndLoss;
                    asmvm.StopLossPotion        = item.StopLossPotion;
                    asmvm.StopProfitPotion      = item.StopProfitPotion;
                    asmvm.Variety      = TransactionViewModel.Instance().Variety;
                    asmvm.ContractCode = MainViewModel.GetInstance().VarietyList[asmvm.VarietySelectedItem].ToList();
                    Aslmvm.Add(asmvm);
                }
            }
            //下单版设置
            OrderVersion.BeforeOrderEnter = CommParameterSetting.OrderVersion.BeforeOrderEnter;
            OrderVersion.DefaultLot       = CommParameterSetting.OrderVersion.DefaultLot;
            OrderVersion.MaxLot           = CommParameterSetting.OrderVersion.MaxLot;


            //快捷键设置
            ShortcutKey.LockMenu    = CommParameterSetting.ShortcutKey.LockMenu;
            ShortcutKey.BuyOpen     = CommParameterSetting.ShortcutKey.BuyOpen;
            ShortcutKey.Clearance   = CommParameterSetting.ShortcutKey.Clearance;
            ShortcutKey.ClosingBuy  = CommParameterSetting.ShortcutKey.ClosingBuy;
            ShortcutKey.ClosingSell = CommParameterSetting.ShortcutKey.ClosingSell;
            ShortcutKey.Revoke      = CommParameterSetting.ShortcutKey.Revoke;
            ShortcutKey.SellOpen    = CommParameterSetting.ShortcutKey.SellOpen;
            //消息提示
            MessageAlert.OrderAlert  = CommParameterSetting.MessageAlert.OrderAlert;
            MessageAlert.RevokeAlert = CommParameterSetting.MessageAlert.RevokeAlert;
            MessageAlert.TradeAlert  = CommParameterSetting.MessageAlert.TradeAlert;
        }
        public void CheckFullStopExecuteChanged()
        {
            if (SelectedItem == null)
            {
                MessageBox.Show("请选择持仓项!");
                return;
            }
            List <DelegationModelViewModel> ckitem = OrderCancelViewModel.Instance().KCDelegations.Where(x => x.ContractCode == SelectedItem.ContractId && x.Direction != SelectedItem.Direction && x.OpenOffset == (int)OffsetType.OFFSET_COVER).ToList();
            int ckNum = 0;

            if (ckitem != null && ckitem.Count > 0)
            {
                ckNum = ckitem.Sum(x => x.OrderVolume);
            }
            TransactionViewModel.Instance().dic = SelectedItem.Direction;
            TransactionViewModel.Instance().SelectFutures(SelectedItem.ContractId, SelectedItem.PositionVolume - ckNum);
            TransactionViewModel.Instance().IsEnabled = true;
            //CheckFullStop cfs = new CheckFullStop(SelectedItem);
            //cfs.Owner = ContractVariety.main;
            //cfs.ShowDialog();
        }
Example #13
0
        public void QuicklyUnwindExecuteChanged()
        {
            if (SelectedItem == null)
            {
                MessageBox.Show("请选择平仓项", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            List <DelegationModelViewModel> ckitem = OrderCancelViewModel.Instance().KCDelegations.Where(x => x.ContractCode == SelectedItem.ContractId && x.Direction != SelectedItem.Direction && x.OpenOffset == (int)OffsetType.OFFSET_COVER).ToList();
            int ckNum = 0;

            if (ckitem != null && ckitem.Count > 0)
            {
                ckNum = ckitem.Sum(x => x.OrderVolume);
            }
            if (SelectedItem.PositionVolume - ckNum <= 0)
            {
                MessageBox.Show("可平手数不足!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            TransactionViewModel.Instance().SelectFutures(SelectedItem.ContractId, SelectedItem.PositionVolume - ckNum);
            CommParameterSetting.OpenCloseing(SelectedItem, ckNum);
        }
        public void ExecutePositionDetialData(object para)
        {
            try
            {
                PotionDetailModel    pm   = para as PotionDetailModel;
                PositionAllViewModel pavm = PositionAllViewModel.Instance();
                if (pavm.DetPMList.FirstOrDefault(x => x.PsitionId == pm.position_id) != null)
                {
                    return;
                }
                if (pm.bLast)
                {
                    PotionDetailModelViewModel[] temp = pavm.DetPMList.ToArray();
                    //合约名加方向作为K
                    Dictionary <string, PotionDetailModelViewModel> dicod = new Dictionary <string, PotionDetailModelViewModel>();
                    foreach (PotionDetailModelViewModel item in temp)
                    {
                        PotionDetailModelViewModel pm1 = item.Clone(item);
                        if (!dicod.Keys.Contains(pm1.ContractCode + pm1.Direction))
                        {
                            pm1.AllPrice = pm1.OpenPrice * pm1.PositionVolume;
                            dicod.Add(pm1.ContractCode + pm1.Direction, pm1);
                            MainViewModel.GetInstance().SubscribedStocks.Add(pm1.ContractCode);
                        }
                        else
                        {
                            dicod[item.ContractCode + item.Direction].AbleVolume         = dicod[item.ContractCode + item.Direction].AbleVolume + item.AbleVolume;
                            dicod[item.ContractCode + item.Direction].PositionProfitLoss = dicod[item.ContractCode + item.Direction].PositionProfitLoss + item.PositionProfitLoss;
                            dicod[item.ContractCode + item.Direction].PositionVolume     = dicod[item.ContractCode + item.Direction].PositionVolume + item.PositionVolume;
                            dicod[item.ContractCode + item.Direction].UseMargin          = dicod[item.ContractCode + item.Direction].UseMargin + item.UseMargin;
                            dicod[item.ContractCode + item.Direction].SysUseMargin       = dicod[item.ContractCode + item.Direction].SysUseMargin + item.SysUseMargin;
                            dicod[item.ContractCode + item.Direction].AllPrice          += item.PositionVolume * item.OpenPrice;
                            dicod[item.ContractCode + item.Direction].OpenPrice          = dicod[item.ContractCode + item.Direction].AllPrice / dicod[item.ContractCode + item.Direction].PositionVolume;
                        }
                    }
                    if (dicod.Keys.Count > 0)
                    {
                        foreach (PotionDetailModelViewModel item in dicod.Values)
                        {
                            pavm.PMList.Add(item);
                            PositionViewModel.Instance().PMList.Add(item);
                        }
                    }
                    ScoketManager.GetInstance().SendSubscribeInfo(7, MainViewModel.GetInstance().SubscribedStocks);
                    //发送命令
                    ReqPotion rp = new ReqPotion();
                    rp.cmdcode = RequestCmdCode.SelectStopLoss;
                    rp.content = new ReqLoginName()
                    {
                        user_id = UserInfoHelper.UserId
                    };
                    ScoketManager.GetInstance().SendTradeWSInfo(JsonConvert.SerializeObject(rp));
                    //PositionViewModel.Instance().JSAbleVolume();
                    TransactionViewModel.Instance().FigureUpNum(TransactionViewModel.Instance()._futures);
                    return;
                }

                VarietyModel vm     = null;
                string[]     values = pm.contract_id.Split(' ');
                if (values.Length == 3)
                {
                    string varietie = values[1];
                    if (ContractVariety.Varieties.ContainsKey(varietie))
                    {
                        vm = ContractVariety.Varieties[varietie];
                    }
                    if (vm != null)
                    {
                        pm.precision = vm.precision;
                    }
                }

                PotionDetailModelViewModel pvm = new PotionDetailModelViewModel(pm);
                pavm.DetPMList.Add(pvm);
            }
            catch (Exception ex)
            {
                LogHelper.Info(ex.ToString());
            }
        }
Example #15
0
 private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
 {
     if (ContractVariety.IsLoginSuccess)
     {
         if ((int)e.Key == CommParameterSetting.ShortcutKey.IntBuyOpen && CommParameterSetting.ShortcutKey.IntBuyOpen != 0)
         {
             if (viewModel.SelectItemViewModel == null)
             {
                 MessageBox.Show("请锁定合约", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                 return;
             }
             TransactionViewModel.Instance().SJBuyExecuteChanged();
         }
         else if ((int)e.Key == CommParameterSetting.ShortcutKey.IntClearance && CommParameterSetting.ShortcutKey.IntClearance != 0)
         {
             if (viewModel.SelectItemViewModel == null)
             {
                 MessageBox.Show("请锁定合约", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                 return;
             }
             PositionViewModel.Instance().TradeAllExecuteChanged();
         }
         else if ((int)e.Key == CommParameterSetting.ShortcutKey.IntClosingBuy && CommParameterSetting.ShortcutKey.IntClosingBuy != 0)
         {
             if (viewModel.SelectItemViewModel == null)
             {
                 MessageBox.Show("请锁定合约", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                 return;
             }
             TransactionViewModel.Instance().IsByClose   = false;
             TransactionViewModel.Instance().IsSellClose = true;
             TransactionViewModel.Instance().BuyExecuteChanged();
         }
         else if ((int)e.Key == CommParameterSetting.ShortcutKey.IntClosingSell && CommParameterSetting.ShortcutKey.IntClosingSell != 0)
         {
             if (viewModel.SelectItemViewModel == null)
             {
                 MessageBox.Show("请锁定合约", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                 return;
             }
             TransactionViewModel.Instance().IsSellClose = true;
             TransactionViewModel.Instance().IsByClose   = false;
             TransactionViewModel.Instance().SellExecuteChanged();
         }
         else if ((int)e.Key == CommParameterSetting.ShortcutKey.IntRevoke && CommParameterSetting.ShortcutKey.IntRevoke != 0)
         {
             if (viewModel.SelectItemViewModel == null)
             {
                 MessageBox.Show("请锁定合约", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                 return;
             }
             OrderCancelViewModel.Instance().SelectedItem = OrderCancelViewModel.Instance().Delegations.FirstOrDefault(x => x.ContractID == viewModel.SelectItemViewModel.ContractCode);
             if (OrderCancelViewModel.Instance().SelectedItem == null)
             {
                 return;
             }
             OrderCancelViewModel.Instance().OrderCancelExecuteChanged();
         }
         else if ((int)e.Key == CommParameterSetting.ShortcutKey.IntSellOpen && CommParameterSetting.ShortcutKey.IntSellOpen != 0)
         {
             if (viewModel.SelectItemViewModel == null)
             {
                 MessageBox.Show("请锁定合约", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                 return;
             }
             TransactionViewModel.Instance().SJSellExecuteChanged();
         }
         //  Window_KeyUp(sender, e);
     }
     if (UserInfoHelper.IsHaveLogin)
     {
         Window_KeyUp(sender, e);
     }
 }
        public void EnterCommandExecuteChanged()
        {
            ReqConditionBillModel rcbm = new ReqConditionBillModel();

            RConditionBillModel cbm = new RConditionBillModel();

            cbm.resource     = (int)OperatorTradeType.OPERATOR_TRADE_PC;
            cbm.contract_id  = ContractCode;
            cbm.order_price  = Price; //提供
            cbm.order_volume = Num;   //提供
            cbm.user_id      = UserInfoHelper.UserId;
            if (IsBuy)
            {
                cbm.direction = "B";
            }
            else if (IsSell)
            {
                cbm.direction = "S";
            }
            else
            {
                MessageBox.Show("请选择买卖方向", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if (IsOpen)
            {
                cbm.open_offset = (int)OffsetType.OFFSET_OPEN;
            }
            else if (IsCloseing)
            {
                cbm.open_offset = (int)OffsetType.OFFSET_COVER;
            }
            else
            {
                MessageBox.Show("请选择买卖方向", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (IsFirst)
            {
                cbm.condition_type = (int)YunConditionType.Y_PRICE;
                cbm.trriger_price  = OrderPrice;
                if (PriceItem == null)
                {
                    MessageBox.Show("请选择触发价格类型", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                cbm.trriger_price_type = PriceItem.Id;
                if (TrrigerConditionItem == null)
                {
                    MessageBox.Show("请选择触条件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                cbm.trriger_condition = TrrigerConditionItem.Id;
                if (cbm.trriger_price_type == 0)
                {
                    if (cbm.trriger_condition == 0)
                    {
                        if (OrderPrice <= TransactionViewModel.Instance().Futures.Tick.LastPrice)
                        {
                            MessageBox.Show("设置的最新价不能小于当前的行情最新价", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                    }
                    else
                    {
                        if (OrderPrice >= TransactionViewModel.Instance().Futures.Tick.LastPrice)
                        {
                            MessageBox.Show("设置的最新价不能大于当前的行情最新价", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                    }
                }
                else if (cbm.trriger_price_type == 1)
                {
                    if (cbm.trriger_condition == 0)
                    {
                        if (OrderPrice <= TransactionViewModel.Instance().Futures.Tick.BidP1)
                        {
                            MessageBox.Show("设置的买一价不能小于当前的行情最新价", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                    }
                    else
                    {
                        if (OrderPrice >= TransactionViewModel.Instance().Futures.Tick.BidP1)
                        {
                            MessageBox.Show("设置的买一价不能大于当前的行情最新价", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                    }
                }
                else if (cbm.trriger_price_type == 2)
                {
                    if (cbm.trriger_condition == 0)
                    {
                        if (OrderPrice <= TransactionViewModel.Instance().Futures.Tick.AskP1)
                        {
                            MessageBox.Show("设置的卖一价不能小于当前的行情最新价", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                    }
                    else
                    {
                        if (OrderPrice >= TransactionViewModel.Instance().Futures.Tick.AskP1)
                        {
                            MessageBox.Show("设置的卖一价不能大于当前的行情最新价", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                    }
                }
            }
            else if (IsSecond)
            {
                cbm.condition_type  = (int)YunConditionType.Y_TIME;
                cbm.trriger_contime = TrrigerTime;
            }
            else if (IsThird)
            {
                cbm.condition_type = (int)YunConditionType.Y_TIMEPRICE;
                cbm.trriger_price  = OrderPrice3;
                if (PriceItem3 == null)
                {
                    MessageBox.Show("请选择触发价格类型", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                cbm.trriger_price_type = PriceItem3.Id;
                if (TrrigerConditionItem3 == null)
                {
                    MessageBox.Show("请选择触条件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                cbm.trriger_condition = TrrigerConditionItem3.Id;
                cbm.trriger_contime   = TrrigerTime3;
                if (cbm.trriger_price_type == 0)
                {
                    if (cbm.trriger_condition == 0)
                    {
                        if (OrderPrice3 <= TransactionViewModel.Instance().Futures.Tick.LastPrice)
                        {
                            MessageBox.Show("设置的最新价不能小于当前的行情最新价", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                    }
                    else
                    {
                        if (OrderPrice3 >= TransactionViewModel.Instance().Futures.Tick.LastPrice)
                        {
                            MessageBox.Show("设置的最新价不能大于当前的行情最新价", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                    }
                }
                else if (cbm.trriger_price_type == 1)
                {
                    if (cbm.trriger_condition == 0)
                    {
                        if (OrderPrice3 <= TransactionViewModel.Instance().Futures.Tick.BidP1)
                        {
                            MessageBox.Show("设置的买一价不能小于当前的行情最新价", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                    }
                    else
                    {
                        if (OrderPrice3 >= TransactionViewModel.Instance().Futures.Tick.BidP1)
                        {
                            MessageBox.Show("设置的买一价不能大于当前的行情最新价", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                    }
                }
                else if (cbm.trriger_price_type == 2)
                {
                    if (cbm.trriger_condition == 0)
                    {
                        if (OrderPrice3 <= TransactionViewModel.Instance().Futures.Tick.AskP1)
                        {
                            MessageBox.Show("设置的卖一价不能小于当前的行情最新价", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                    }
                    else
                    {
                        if (OrderPrice3 >= TransactionViewModel.Instance().Futures.Tick.AskP1)
                        {
                            MessageBox.Show("设置的卖一价不能大于当前的行情最新价", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show("请选择条件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            cbm.price_type = typePrice;
            rcbm.content   = cbm;
            if (Upatatecondtion == null)
            {
                rcbm.cmdcode = RequestCmdCode.AddConditionBill;
                ScoketManager.GetInstance().SendTradeWSInfo(JsonConvert.SerializeObject(rcbm));
            }
            else
            {
                rcbm.content.condition_orderID = Upatatecondtion.ConditionOrderID;
                rcbm.content.trriger_condate   = Upatatecondtion.TrrigerCondate;
                rcbm.content.price_type        = Upatatecondtion.PriceType;
                rcbm.cmdcode = RequestCmdCode.UpConditionBill;
                ScoketManager.GetInstance().SendTradeWSInfo(JsonConvert.SerializeObject(rcbm));
            }
        }
        public void ExecuteSendPlaceOrderData(object para)
        {
            try
            {
                DelegationModel rtm    = para as DelegationModel;
                VarietyModel    vm     = null;
                string[]        values = rtm.contract_code.Split(' ');
                if (values.Length == 3)
                {
                    string varietie = values[1];
                    if (ContractVariety.Varieties.ContainsKey(varietie))
                    {
                        vm = ContractVariety.Varieties[varietie];
                    }
                    if (vm != null)
                    {
                        rtm.precision = vm.precision;
                    }
                }

                DelegationModelViewModel dmvm = OrderCancelViewModel.Instance().Delegations.FirstOrDefault(x => x.OrderId == rtm.order_id);
                if (dmvm == null)
                {
                    return;
                    //OrderCancelViewModel.Instance().Delegations.Add(new DelegationModelViewModel(rtm));
                }
                //DelegationModelViewModel dmvmisHave = OrderCancelViewModel.Instance().Delegations.FirstOrDefault(x => x.OrderId == rtm.order_id && x.OrderStatus == (int)DeleteType.CreateSuccess);
                ////if (dmvmisHave != null)
                //{
                //    return;
                //    //OrderCancelViewModel.Instance().Delegations.Add(new DelegationModelViewModel(rtm));
                //}
                if (rtm.order_status == (int)DeleteType.CreateSuccess || rtm.order_status == (int)DeleteType.PortionTakeEffect)
                {
                    DelegationModelViewModel dmvm1 = OrderCancelViewModel.Instance().KCDelegations.FirstOrDefault(x => x.OrderId == rtm.order_id && rtm.user_id == UserInfoHelper.UserId);
                    if (dmvm1 == null)
                    {
                        OrderCancelViewModel.Instance().KCDelegations.Add(new DelegationModelViewModel(rtm));
                        LogHelper.Info("4003  增加 可撤" + rtm.contract_code + ":" + rtm.direction + ":" + rtm.open_offset + ":" + rtm.order_status);
                    }

                    dmvm.OrderStatus = rtm.order_status;
                    //详细状态
                    dmvm.FailMsg = rtm.fail_msg;
                }
                else
                {
                    dmvm.LeftVolume  = dmvm.OrderVolume - rtm.trade_volume;
                    dmvm.TradeVolume = rtm.trade_volume;
                    dmvm.OrderStatus = rtm.order_status;
                    dmvm.LeftVolume  = rtm.left_volume;

                    //详细状态
                    dmvm.FailMsg = rtm.fail_msg;
                    DelegationModelViewModel dmvm1 = OrderCancelViewModel.Instance().KCDelegations.FirstOrDefault(x => x.OrderId == rtm.order_id && rtm.user_id == UserInfoHelper.UserId);

                    if (dmvm1 != null)
                    {
                        OrderCancelViewModel.Instance().KCDelegations.Remove(dmvm1);
                        LogHelper.Info("4003  移除 可撤" + rtm.contract_code + ":" + rtm.direction + ":" + rtm.open_offset + ":" + rtm.order_status);
                    }
                }

                DelegationModelViewModel tem1 = OrderCancelViewModel.Instance().KCDelegations.FirstOrDefault(x => x.OrderId == rtm.order_id && rtm.user_id == UserInfoHelper.UserId);
                if (tem1 != null)
                {
                    tem1.LeftVolume  = tem1.OrderVolume - rtm.trade_volume;
                    tem1.TradeVolume = rtm.trade_volume;
                    tem1.OrderStatus = rtm.order_status;
                    //详细状态
                    dmvm.FailMsg = rtm.fail_msg;
                }
                if (rtm.order_status == (int)DeleteType.UnTakeEffecUserCannel)
                {
                    if (CommParameterSetting.MessageAlert.RevokeAlert == "窗口提示")
                    {
                        MessageBox.Show(rtm.contract_id + " 委托撤单成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    else if (CommParameterSetting.MessageAlert.RevokeAlert == "声音提示")
                    {
                        SoundPlayerHelper.Play();
                    }
                }
                TransactionViewModel.Instance().SelectNumExecuteChanged();
            }
            catch (Exception ex)
            {
                LogHelper.Info(ex.ToString());
            }
        }
        public void ExecutePositionInfoData(object para)
        {
            try
            {
                PotionModel                rtm       = para as PotionModel;
                PositionAllViewModel       pavm      = PositionAllViewModel.Instance();
                PositionViewModel          pvm       = PositionViewModel.Instance();
                PotionDetailModelViewModel pdmvmtemp = pavm.DetPMList.FirstOrDefault(x => x.PsitionId == rtm.position_id);

                if (rtm.position_volume == 0)
                {
                    if (pdmvmtemp != null)
                    {
                        pavm.DetPMList.Remove(pdmvmtemp);
                        LogHelper.Info("4007  移除 " + rtm.contract_code + ":" + rtm.direction);
                        pavm.PMList.Clear();
                        pvm.PMList.Clear();
                    }

                    int count = SQLiteHelper.ExecuteNonQuery(SQLiteHelper.DBPath, CommandType.Text, "delete from AutoStopLoss where ContractID='" + rtm.contract_id + "' and PostionID='" + rtm.position_id + "';");
                }
                else
                {
                    if (pdmvmtemp != null)
                    {
                        pdmvmtemp.PositionVolume = rtm.position_volume;
                        pdmvmtemp.AbleVolume     = rtm.position_volume;
                        pdmvmtemp.UseMargin      = rtm.use_margin;
                        pdmvmtemp.SysUseMargin   = rtm.sys_margin;
                    }
                    else
                    {
                        PotionDetailModel pdm = new PotionDetailModel();
                        pdm.able_volume       = rtm.position_volume;
                        pdm.contract_code     = rtm.contract_code;
                        pdm.contract_id       = rtm.contract_id;
                        pdm.direction         = rtm.direction;
                        pdm.open_date         = rtm.position_date;
                        pdm.open_price        = rtm.position_price;
                        pdm.open_time         = rtm.position_time;
                        pdm.position_volume   = rtm.position_volume;
                        pdm.position_id       = rtm.position_id;
                        pdm.shadow_orderID    = rtm.shadow_orderID;
                        pdm.shadow_positionid = rtm.shadow_positionid;
                        pdm.shadow_tradeid    = rtm.shadow_tradeid;

                        pdm.trade_id   = "";
                        pdm.user_id    = rtm.user_id;
                        pdm.use_margin = rtm.use_margin;
                        pdm.sys_margin = rtm.sys_margin;
                        VarietyModel vm     = null;
                        string[]     values = pdm.contract_id.Split(' ');
                        if (values.Length == 3)
                        {
                            string varietie = values[1];
                            if (ContractVariety.Varieties.ContainsKey(varietie))
                            {
                                vm = ContractVariety.Varieties[varietie];
                            }
                            if (vm != null)
                            {
                                pdm.precision = vm.precision;
                            }
                        }

                        pdmvmtemp = new PotionDetailModelViewModel(pdm);
                        pavm.DetPMList.Add(pdmvmtemp);
                    }
                }
                if (ContractVariety.ContracPostionID.ContainsKey(rtm.contract_id))
                {
                    AutoStopLossModel aslm = CommParameterSetting.AutoStopLossModel.FirstOrDefault(x => x.Direction == rtm.direction && x.Agreement == rtm.contract_id);
                    if (aslm != null)
                    {
                        if (!ContractVariety.PostionPrice.ContainsKey(rtm.position_id))
                        {
                            ContractVariety.PostionPrice.Add(rtm.position_id, new AutoLossPrice());
                        }
                        string[] VarietiesKey = rtm.contract_id.Split(' ');
                        if (VarietiesKey.Length == 3)
                        {
                            string       varietie = VarietiesKey[1];
                            VarietyModel vm       = null;
                            if (ContractVariety.Varieties.ContainsKey(varietie))
                            {
                                vm = ContractVariety.Varieties[varietie];
                            }
                            if (vm != null)
                            {
                                if (rtm.direction == "B")
                                {
                                    ContractVariety.PostionPrice[rtm.position_id].LossPrice = rtm.position_price - aslm.StopLossPotion * vm.tick_size;
                                }
                                else
                                {
                                    ContractVariety.PostionPrice[rtm.position_id].LossPrice = rtm.position_price + aslm.StopLossPotion * vm.tick_size;
                                }
                                ContractVariety.PostionPrice[rtm.position_id].NewPrice = rtm.position_price;
                                if (!ContractVariety.ContracPostionID.ContainsKey(rtm.contract_id))
                                {
                                    ContractVariety.ContracPostionID.Add(rtm.contract_id, new List <string>());
                                }
                                ContractVariety.ContracPostionID[rtm.contract_id].Add(rtm.position_id);
                                int count = SQLiteHelper.ExecuteNonQuery(SQLiteHelper.DBPath, CommandType.Text, "insert INTO AutoStopLoss VALUES('" + rtm.position_id + "','" + rtm.contract_id + "','" + UserInfoHelper.UserId + "'," + ContractVariety.PostionPrice[rtm.position_id].LossPrice + "," + ContractVariety.PostionPrice[rtm.position_id].NewPrice + ");");
                            }
                        }
                    }
                }
                PotionDetailModelViewModel[] temp = pavm.DetPMList.ToArray();
                //合约名加方向作为K
                Dictionary <string, PotionDetailModelViewModel> dicod = new Dictionary <string, PotionDetailModelViewModel>();

                foreach (PotionDetailModelViewModel item in temp)
                {
                    PotionDetailModelViewModel pm1 = item.Clone(item);
                    if (!dicod.Keys.Contains(pm1.ContractCode + pm1.Direction))
                    {
                        pm1.AllPrice = pm1.OpenPrice * pm1.PositionVolume;
                        dicod.Add(pm1.ContractCode + pm1.Direction, pm1);
                        //MainViewModel.GetInstance().SubscribedStocks.Add(pm1.ContractCode);
                    }
                    else
                    {
                        dicod[item.ContractCode + item.Direction].AbleVolume         = dicod[item.ContractCode + item.Direction].AbleVolume + item.AbleVolume;
                        dicod[item.ContractCode + item.Direction].PositionProfitLoss = dicod[item.ContractCode + item.Direction].PositionProfitLoss + item.PositionProfitLoss;
                        dicod[item.ContractCode + item.Direction].PositionVolume     = dicod[item.ContractCode + item.Direction].PositionVolume + item.PositionVolume;
                        dicod[item.ContractCode + item.Direction].UseMargin          = dicod[item.ContractCode + item.Direction].UseMargin + item.UseMargin;
                        dicod[item.ContractCode + item.Direction].SysUseMargin       = dicod[item.ContractCode + item.Direction].SysUseMargin + item.SysUseMargin;
                        dicod[item.ContractCode + item.Direction].AllPrice          += item.PositionVolume * item.OpenPrice;
                        dicod[item.ContractCode + item.Direction].OpenPrice          = dicod[item.ContractCode + item.Direction].AllPrice / dicod[item.ContractCode + item.Direction].PositionVolume;
                    }
                }
                if (dicod.Keys.Count > 0)
                {
                    pavm.PMList.Clear();
                    pvm.PMList.Clear();
                    foreach (PotionDetailModelViewModel item in dicod.Values)
                    {
                        pavm.PMList.Add(item);
                        pvm.PMList.Add(item);
                    }
                    pvm.SelectedItem = pvm.PMList.FirstOrDefault(x => x.ContractCode == rtm.contract_code && x.Direction == rtm.direction);
                }
                if (!MainViewModel.GetInstance().SubscribedStocks.Contains(rtm.contract_code))
                {
                    MainViewModel.GetInstance().SubscribedStocks.Add(rtm.contract_code);
                    ScoketManager.GetInstance().SendSubscribeInfo(7, rtm.contract_code);
                }

                foreach (string key in CommHelper.CFSmvmList.Keys)
                {
                    PotionDetailModelViewModel temp1 = PositionViewModel.Instance().PMList.FirstOrDefault(x => (x.ContractId + x.Direction) == key);
                    if (temp1 == null)
                    {
                        continue;
                    }
                    double maxprice  = 99999999999;
                    double minprice  = 0;
                    double maxprice1 = 0;
                    double minprice1 = 99999999999;
                    int    maxnum    = 0;
                    int    minnum    = 0;
                    foreach (CheckFullStopModelViewModel item in CommHelper.CFSmvmList[key])
                    {
                        if (item == null)
                        {
                            continue;
                        }
                        if (item.StoplossPrice > 0 || item.StopprofitPrice > 0)
                        {
                            if (item.Direction == "B")
                            {
                                if (item.StopprofitPrice > 0)
                                {
                                    if (item.StopprofitPrice < maxprice)
                                    {
                                        maxprice = item.StopprofitPrice;
                                        maxnum   = item.OrderVolume;
                                    }
                                    else if (item.StopprofitPrice == maxprice)
                                    {
                                        maxnum += item.OrderVolume;
                                    }
                                }
                                if (item.StoplossPrice > 0)
                                {
                                    if (item.StoplossPrice > minprice)
                                    {
                                        minprice = item.StoplossPrice;
                                        minnum   = item.OrderVolume;
                                    }
                                    else if (item.StoplossPrice == minprice)
                                    {
                                        minnum += item.OrderVolume;
                                    }
                                }
                                if (maxprice < 99999999999 && maxnum > 0)
                                {
                                    temp1.ProfitVolume = maxprice + "/" + maxnum;
                                }
                                if (minprice > 0 && minnum > 0)
                                {
                                    temp1.LossVolume = minprice + "/" + minnum;
                                }
                            }
                            else
                            {
                                if (item.StopprofitPrice > 0)
                                {
                                    if (item.StopprofitPrice > maxprice1)
                                    {
                                        maxprice1 = item.StopprofitPrice;
                                        maxnum    = item.OrderVolume;
                                    }
                                    else if (item.StopprofitPrice == maxprice1)
                                    {
                                        maxnum += item.OrderVolume;
                                    }
                                }
                                if (item.StoplossPrice > 0)
                                {
                                    if (item.StoplossPrice < minprice1)
                                    {
                                        minprice1 = item.StoplossPrice;
                                        minnum    = item.OrderVolume;
                                    }
                                    else if (item.StoplossPrice == minprice1)
                                    {
                                        minnum += item.OrderVolume;
                                    }
                                }
                                if (maxprice1 > 0 && maxnum > 0)
                                {
                                    temp1.ProfitVolume = maxprice1 + "/" + maxnum;
                                }
                                if (minprice < 99999999999 && minnum > 0)
                                {
                                    temp1.LossVolume = minprice1 + "/" + minnum;
                                }
                            }
                        }
                    }
                }
                TransactionViewModel.Instance().AgreementChangedExecuteChanged();
                if (pavm.PMList.FirstOrDefault(x => x.ContractCode == rtm.contract_code && x.Direction == rtm.direction) == null)
                {
                    if (CommHelper.CFSmvmList.ContainsKey(rtm.contract_code + rtm.direction))
                    {
                        CommHelper.CFSmvmList[rtm.contract_code + rtm.direction].Clear();
                        LogHelper.Info("4007中移除止盈止损" + rtm.contract_id + rtm.direction + "清除数据");
                    }
                }

                //PositionViewModel.Instance().JSAbleVolume();
                TransactionViewModel.Instance().FigureUpNum(TransactionViewModel.Instance()._futures);
            }
            catch (Exception ex)
            {
                LogHelper.Info(ex.ToString());
            }
        }
        public void EnterExecuteChanged()
        {
            try
            {
                if (OrderVersion.DefaultLot > OrderVersion.MaxLot && OrderVersion.MaxLot > 0)
                {
                    MessageBox.Show("下单默认数量不能大于最大数量!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                CommParameterSetting.StopLossModel.BuyNum             = StopLossModelViewModel.BuyNum;
                CommParameterSetting.StopLossModel.CkBuy              = StopLossModelViewModel.CkBuy;
                CommParameterSetting.StopLossModel.CkSell             = StopLossModelViewModel.CkSell;
                CommParameterSetting.StopLossModel.SellNum            = StopLossModelViewModel.SellNum;
                CommParameterSetting.StopLossModel.StopLossDelegation = StopLossModelViewModel.StopLossDelegation;
                CommParameterSetting.StopLossModel.StopLossPrice      = StopLossModelViewModel.StopLossPrice;
                IniHelper.ProfileWriteValue("CheckFullStop", "BuyNum", CommParameterSetting.StopLossModel.BuyNum.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("CheckFullStop", "CkBuy", CommParameterSetting.StopLossModel.CkBuy.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("CheckFullStop", "CkSell", CommParameterSetting.StopLossModel.CkSell.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("CheckFullStop", "SellNum", CommParameterSetting.StopLossModel.SellNum.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("CheckFullStop", "StopLossDelegation", CommParameterSetting.StopLossModel.StopLossDelegation.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("CheckFullStop", "StopLossPrice", CommParameterSetting.StopLossModel.StopLossPrice.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("CheckFullStop", "StopProfitDelegation", CommParameterSetting.StopLossModel.StopProfitDelegation.ToString(), IniHelper.parameterSetting);


                //加载自动止盈止损 自动盈亏是用;分割行,分割列;

                if (Aslmvm != null)
                {
                    string para = "";
                    lock (CommParameterSetting.AutoStopLossModel)
                    {
                        CommParameterSetting.AutoStopLossModel.Clear();
                    }
                    List <string> AgreementList = new List <string>();
                    foreach (AutoStopLossModelViewModel item in Aslmvm)
                    {
                        if (string.IsNullOrEmpty(item.Agreement) || string.IsNullOrEmpty(item.VarietySelectedItem) || string.IsNullOrEmpty(item.Direction))
                        {
                            continue;
                        }
                        AutoStopLossModel asmvm = new AutoStopLossModel();
                        asmvm.Variety               = item.VarietySelectedItem;
                        asmvm.Agreement             = item.Agreement;
                        asmvm.Direction             = item.Direction == "买" ? "B" : "S";
                        asmvm.FloatingProfitAndLoss = item.FloatingProfitAndLoss;
                        asmvm.StopLossPotion        = item.StopLossPotion;
                        asmvm.StopProfitPotion      = item.StopProfitPotion;
                        CommParameterSetting.AutoStopLossModel.Add(asmvm);
                        if (!AgreementList.Contains(asmvm.Agreement))
                        {
                            AgreementList.Add(asmvm.Agreement);
                        }
                        para += item.VarietySelectedItem + "," + item.Agreement + "," + asmvm.Direction + "," + item.FloatingProfitAndLoss + "," + item.StopLossPotion + "," + item.StopProfitPotion + ";";

                        //将新增的添加到现有的集合中
                        if (!ContractVariety.ContracPostionID.ContainsKey(asmvm.Agreement))
                        {
                            ContractVariety.ContracPostionID.Add(asmvm.Agreement, new List <string>());
                        }
                    }

                    List <string> tempKeys   = ContractVariety.ContracPostionID.Keys.ToList();
                    string        Agreements = "";
                    foreach (string item in tempKeys)
                    {
                        if (!AgreementList.Contains(item))
                        {
                            lock (ContractVariety.ContracPostionID)
                            {
                                ContractVariety.ContracPostionID.Remove(item);
                            }
                            Agreements += item + ",";
                        }
                    }
                    if (!string.IsNullOrEmpty(Agreements))
                    {
                        int count = SQLiteHelper.ExecuteNonQuery(SQLiteHelper.DBPath, CommandType.Text, "delete from AutoStopLoss where ContractID in ('" + Agreements.TrimEnd(',') + "')");
                    }
                    IniHelper.ProfileWriteValue("AutoCheckFullStop", "AutoStopLoss", para.TrimEnd(';'), IniHelper.parameterSetting);
                }
                //}
                //下单版设置
                CommParameterSetting.OrderVersion.BeforeOrderEnter = OrderVersion.BeforeOrderEnter;
                CommParameterSetting.OrderVersion.DefaultLot       = OrderVersion.DefaultLot;
                CommParameterSetting.OrderVersion.MaxLot           = OrderVersion.MaxLot;

                IniHelper.ProfileWriteValue("OrderVersion", "BeforeOrderEnter", CommParameterSetting.OrderVersion.BeforeOrderEnter.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("OrderVersion", "DefaultLot", CommParameterSetting.OrderVersion.DefaultLot.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("OrderVersion", "MaxLot", CommParameterSetting.OrderVersion.MaxLot.ToString(), IniHelper.parameterSetting);
                if (OrderVersion.DefaultLot > 0)
                {
                    TransactionViewModel.Instance().FTNum = OrderVersion.DefaultLot;
                }
                if (OrderVersion.MaxLot > 0)
                {
                    TransactionViewModel.Instance().MaxLot = OrderVersion.MaxLot;
                }

                //快捷键设置
                CommParameterSetting.ShortcutKey.LockMenu    = ShortcutKey.LockMenu;
                CommParameterSetting.ShortcutKey.BuyOpen     = ShortcutKey.BuyOpen;
                CommParameterSetting.ShortcutKey.Clearance   = ShortcutKey.Clearance;
                CommParameterSetting.ShortcutKey.ClosingBuy  = ShortcutKey.ClosingBuy;
                CommParameterSetting.ShortcutKey.ClosingSell = ShortcutKey.ClosingSell;
                CommParameterSetting.ShortcutKey.Revoke      = ShortcutKey.Revoke;
                CommParameterSetting.ShortcutKey.SellOpen    = ShortcutKey.SellOpen;
                IniHelper.ProfileWriteValue("ShortcutKey", "LockMenu", CommParameterSetting.ShortcutKey.LockMenu.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("ShortcutKey", "BuyOpen", CommParameterSetting.ShortcutKey.BuyOpen.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("ShortcutKey", "Clearance", CommParameterSetting.ShortcutKey.Clearance.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("ShortcutKey", "ClosingBuy", CommParameterSetting.ShortcutKey.ClosingBuy.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("ShortcutKey", "ClosingSell", CommParameterSetting.ShortcutKey.ClosingSell.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("ShortcutKey", "Revoke", CommParameterSetting.ShortcutKey.Revoke.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("ShortcutKey", "SellOpen", CommParameterSetting.ShortcutKey.SellOpen.ToString(), IniHelper.parameterSetting);

                IniHelper.ProfileWriteValue("ShortcutKey", "IntBuyOpen", CommParameterSetting.ShortcutKey.IntBuyOpen.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("ShortcutKey", "IntClearance", CommParameterSetting.ShortcutKey.IntClearance.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("ShortcutKey", "IntClosingBuy", CommParameterSetting.ShortcutKey.IntClosingBuy.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("ShortcutKey", "IntClosingSell", CommParameterSetting.ShortcutKey.IntClosingSell.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("ShortcutKey", "IntRevoke", CommParameterSetting.ShortcutKey.IntRevoke.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("ShortcutKey", "IntSellOpen", CommParameterSetting.ShortcutKey.IntSellOpen.ToString(), IniHelper.parameterSetting);

                //消息提示
                CommParameterSetting.MessageAlert.OrderAlert  = MessageAlert.OrderAlert;
                CommParameterSetting.MessageAlert.RevokeAlert = MessageAlert.RevokeAlert;
                CommParameterSetting.MessageAlert.TradeAlert  = MessageAlert.TradeAlert;
                IniHelper.ProfileWriteValue("MessageAlert", "OrderAlert", CommParameterSetting.MessageAlert.OrderAlert.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("MessageAlert", "RevokeAlert", CommParameterSetting.MessageAlert.RevokeAlert.ToString(), IniHelper.parameterSetting);
                IniHelper.ProfileWriteValue("MessageAlert", "TradeAlert", CommParameterSetting.MessageAlert.TradeAlert.ToString(), IniHelper.parameterSetting);
                this.Close();
            }
            catch (Exception ex)
            {
                LogHelper.Info(ex.Message);
            }
        }
Example #20
0
        public void EnterExecuteChanged()
        {
            List <CheckFullStopModelViewModel> temps    = CFSMVMList.ToList();
            List <CheckFullStopModel>          cfsmList = new List <CheckFullStopModel>();

            foreach (CheckFullStopModelViewModel item in temps)
            {
                if ((item.StoplossPrice > 0 || item.StopprofitPrice > 0) && item.OrderVolume > 0)
                {
                    CheckFullStopModel cfsm = new CheckFullStopModel();
                    cfsm.user_id          = item.UserId;
                    cfsm.contract_id      = _PositionModelViewModel.ContractId;
                    cfsm.direction        = _PositionModelViewModel.Direction;
                    cfsm.open_offset      = (int)OffsetType.OFFSET_COVER;
                    cfsm.order_volume     = item.OrderVolume;
                    cfsm.stoploss_price   = item.StoplossPrice;
                    cfsm.stopprofit_price = item.StopprofitPrice;
                    cfsm.float_loss       = item.FloatLoss;
                    cfsm.float_loss_flag  = (int)FloatLossFlag.FLF_FloatLoss;
                    if (CommParameterSetting.StopLossModel.StopLossPrice == "最新价")
                    {
                        cfsm.trriger_price_type = (int)YunTrrigerStyle.Y_LASTPRICE;
                        if (_PositionModelViewModel.Direction == "B")
                        {
                            if (cfsm.stoploss_price >= TransactionViewModel.Instance().Futures.Tick.LastPrice&& cfsm.stoploss_price != 0)
                            {
                                MessageBox.Show("设置的止损价不能大于当前的行情最新价", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                                return;
                            }
                            if (cfsm.stopprofit_price <= TransactionViewModel.Instance().Futures.Tick.LastPrice&& cfsm.stopprofit_price != 0)
                            {
                                MessageBox.Show("设置的止盈价不能小于当前的行情最新价", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                                return;
                            }
                        }
                        else
                        {
                            if (cfsm.stoploss_price <= TransactionViewModel.Instance().Futures.Tick.LastPrice&& cfsm.stoploss_price != 0)
                            {
                                MessageBox.Show("设置的止损价不能小于当前的行情最新价", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                                return;
                            }
                            if (cfsm.stopprofit_price >= TransactionViewModel.Instance().Futures.Tick.LastPrice&& cfsm.stopprofit_price != 0)
                            {
                                MessageBox.Show("设置的止盈价不能大于当前的行情最新价", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                                return;
                            }
                        }
                    }
                    else
                    {
                        if (_PositionModelViewModel.Direction == "S")
                        {
                            cfsm.trriger_price_type = (int)YunTrrigerStyle.Y_SELLONEPRICE;
                        }
                        else
                        {
                            cfsm.trriger_price_type = (int)YunTrrigerStyle.Y_BUYONEPRICE;
                        }

                        if (_PositionModelViewModel.Direction == "B")
                        {
                            if (cfsm.stoploss_price >= TransactionViewModel.Instance().Futures.Tick.BidP1&& cfsm.stoploss_price != 0)
                            {
                                MessageBox.Show("设置的止损价不能大于当前的行情的对手价", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                                return;
                            }
                            if (cfsm.stopprofit_price <= TransactionViewModel.Instance().Futures.Tick.BidP1&& cfsm.stopprofit_price != 0)
                            {
                                MessageBox.Show("设置的止盈价不能小于当前的行情的对手价", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                                return;
                            }
                        }
                        else
                        {
                            if (cfsm.stoploss_price <= TransactionViewModel.Instance().Futures.Tick.AskP1&& cfsm.stoploss_price != 0)
                            {
                                MessageBox.Show("设置的止损价不能小于当前的行情的对手价", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                                return;
                            }
                            if (cfsm.stopprofit_price >= TransactionViewModel.Instance().Futures.Tick.AskP1&& cfsm.stopprofit_price != 0)
                            {
                                MessageBox.Show("设置的止盈价不能大于当前的行情的对手价", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                                return;
                            }
                        }
                    }
                    if (CommParameterSetting.StopLossModel.StopLossDelegation == "市价")
                    {
                        cfsm.price_type = "M";
                    }
                    else if (CommParameterSetting.StopLossModel.StopLossDelegation == "最新价")
                    {
                        cfsm.price_type = "L";
                        if (_PositionModelViewModel.Direction == "S")
                        {
                            cfsm.order_add_price = CommParameterSetting.StopLossModel.BuyNum * Increment;
                        }
                        else
                        {
                            cfsm.order_add_price = CommParameterSetting.StopLossModel.SellNum * Increment;
                        }
                    }
                    else
                    {
                        cfsm.price_type = "R";
                        if (_PositionModelViewModel.Direction == "S")
                        {
                            cfsm.order_add_price = CommParameterSetting.StopLossModel.BuyNum * Increment;
                        }
                        else
                        {
                            cfsm.order_add_price = CommParameterSetting.StopLossModel.SellNum * Increment;
                        }
                    }
                    cfsm.create_date = DateTime.Now.ToString("yyyy-MM-dd");
                    cfsm.create_time = DateTime.Now.ToString("HH:mm:ss");
                    cfsmList.Add(cfsm);

                    CheckFullStopModelViewModel cfsmvm = new CheckFullStopModelViewModel(cfsm);
                    // ContractVariety.CFSmvmList[_PositionModelViewModel.ContractId + _PositionModelViewModel.Direction].Add(cfsmvm);
                }
            }
            if (cfsmList.Count > 0)
            {
                ReqCheckFullStopModel rcfsmv = new ReqCheckFullStopModel();
                rcfsmv.cmdcode = RequestCmdCode.AddStopLoss;
                rcfsmv.content = cfsmList;
                ScoketManager.GetInstance().SendTradeWSInfo(JsonConvert.SerializeObject(rcfsmv));
                if (ContractVariety.CFSmvmList.ContainsKey(_PositionModelViewModel.ContractId + _PositionModelViewModel.Direction))
                {
                    ContractVariety.CFSmvmList[_PositionModelViewModel.ContractId + _PositionModelViewModel.Direction].Clear();
                }
                else
                {
                    ContractVariety.CFSmvmList.Add(_PositionModelViewModel.ContractId + _PositionModelViewModel.Direction, new List <CheckFullStopModelViewModel>());
                }

                ContractVariety.CFSmvmList[_PositionModelViewModel.ContractId + _PositionModelViewModel.Direction].Clear();
            }
            else
            {
                if (IsHaveData)
                {
                    ReqDeleteCheckFullStop rdmv = new ReqDeleteCheckFullStop();
                    DeleteCheckFullStop    scfm = new DeleteCheckFullStop();
                    scfm.contract_id = _PositionModelViewModel.ContractId;
                    scfm.direction   = _PositionModelViewModel.Direction;
                    scfm.resource    = (int)OperatorTradeType.OPERATOR_TRADE_MC;
                    scfm.user_id     = UserInfoHelper.UserId;
                    rdmv.cmdcode     = RequestCmdCode.DeleteStopLoss;
                    rdmv.content     = scfm;
                    ScoketManager.GetInstance().SendTradeWSInfo(JsonConvert.SerializeObject(rdmv));
                }
            }
        }