/// <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); }
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); }
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); }
public void SelectionChangedKCExecuteChanged() { if (KCSelectedItem == null) { return; } KCSelectedItem.ContractID = KCSelectedItem.ContractCode; TransactionViewModel.Instance().SelectFutures(KCSelectedItem.ContractID); }
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(); }
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(); }
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()); } }
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); } }
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)); } } }