public void OneExecuteChanged() { IsAuto = false; IsOne = true; int countNum = 0;//表示已经设置过了价格的数量 List <CheckFullStopModelViewModel> temps = CFSMVMList.ToList(); CFSMVMList.Clear(); foreach (CheckFullStopModelViewModel item in temps) { if (item.StoplossPrice > 0 || item.StopprofitPrice > 0) { countNum += item.OrderVolume; CFSMVMList.Add(item); } } int shengcount = _AllNum - countNum; while (shengcount > 0) { CheckFullStopModel cfsm = new CheckFullStopModel(); cfsm.contract_code = _PositionModelViewModel.ContractCode; cfsm.contract_id = _PositionModelViewModel.ContractId; cfsm.create_date = DateTime.Now.ToString("yyyy-MM-dd"); cfsm.create_time = DateTime.Now.ToString("HH:mm:ss"); cfsm.user_id = UserInfoHelper.UserId; cfsm.order_volume = 1; cfsm.resource = (int)OperatorTradeType.OPERATOR_TRADE_PC; CheckFullStopModelViewModel cfsvm = new CheckFullStopModelViewModel(cfsm); cfsvm.Increment = Increment; cfsvm.Precision = length; CFSMVMList.Add(cfsvm); shengcount--; } }
public void Result() { List <CheckFullStopModelViewModel> temps = CFSMVMList.ToList(); double maxprice = 99999999999; double minprice = 0; int maxnum = 0; int minnum = 0; 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(); foreach (CheckFullStopModelViewModel item in temps) { if (item.StoplossPrice > 0 || item.StopprofitPrice > 0) { 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; } } 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; } else { if (_PositionModelViewModel.Direction == "S") { cfsm.trriger_price_type = (int)YunTrrigerStyle.Y_BUYONEPRICE; cfsm.order_add_price = CommParameterSetting.StopLossModel.BuyNum; } else { cfsm.order_add_price = CommParameterSetting.StopLossModel.SellNum; cfsm.trriger_price_type = (int)YunTrrigerStyle.Y_SELLONEPRICE; } } if (CommParameterSetting.StopLossModel.StopProfitDelegation == "市价") { cfsm.price_type = "M"; } else { cfsm.price_type = "L"; } cfsm.create_date = DateTime.Now.ToString("yyyy-MM-dd"); cfsm.create_time = DateTime.Now.ToString("HH:mm:ss"); CheckFullStopModelViewModel cfsmvm = new CheckFullStopModelViewModel(cfsm); ContractVariety.CFSmvmList[_PositionModelViewModel.ContractId + _PositionModelViewModel.Direction].Add(cfsmvm); } } if (maxprice < 99999999999 && maxnum > 0) { _PositionModelViewModel.ProfitVolume = maxprice + "/" + maxnum; } if (minprice > 0 && minnum > 0) { _PositionModelViewModel.LossVolume = minprice + "/" + minnum; } this.Close(); }
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)); } } }