internal void AddData() { if (CFSMVMList.Count == 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 = _PositionModelViewModel.PositionVolume; cfsm.resource = (int)OperatorTradeType.OPERATOR_TRADE_PC; CheckFullStopModelViewModel cfsvm = new CheckFullStopModelViewModel(cfsm); cfsvm.MaxNum = _AllNum; cfsvm.Increment = Increment; cfsvm.Precision = length; CFSMVMList.Add(cfsvm); } else { int num = _AllNum - CFSMVMList.Sum(s => s.OrderVolume); if (num > 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 = num; cfsm.resource = (int)OperatorTradeType.OPERATOR_TRADE_PC; CheckFullStopModelViewModel cfsvm = new CheckFullStopModelViewModel(cfsm); cfsvm.MaxNum = _AllNum; cfsvm.Precision = length; cfsvm.Increment = Increment; CFSMVMList.Add(cfsvm); } } }
public void NumChangedExecuteChanged() { int countNum = 0; int count = 0;//表示止损或止盈价已经设置了 foreach (CheckFullStopModelViewModel item in CFSMVMList) { if (item.StoplossPrice > 0 || item.StopprofitPrice > 0) { count++; } countNum += item.OrderVolume; } if (countNum < _AllNum && CFSMVMList.Count - count <= 1) { 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 = _AllNum - countNum; cfsm.resource = (int)OperatorTradeType.OPERATOR_TRADE_PC; CheckFullStopModelViewModel cfsvm = new CheckFullStopModelViewModel(cfsm); if (SelectedItem.OrderVolume == 0) { CFSMVMList.Remove(SelectedItem); } cfsvm.Increment = Increment; cfsvm.Precision = length; CFSMVMList.Add(cfsvm); } else if (countNum < _AllNum && CFSMVMList.Count - count >= 2) { int tempcount = CFSMVMList.Sum(x => x.OrderVolume); foreach (CheckFullStopModelViewModel item in CFSMVMList) { if (item.StoplossPrice == 0 && item.StopprofitPrice == 0 && (item.CreateDate + item.CreateTime) != (SelectedItem.CreateDate + SelectedItem.CreateTime)) { item.OrderVolume = _AllNum - tempcount + item.OrderVolume; if (item.OrderVolume == 0) { CFSMVMList.Remove(item); } break; } } if (SelectedItem.OrderVolume == 0) { CFSMVMList.Remove(SelectedItem); } } else if (countNum > _AllNum && count <= CFSMVMList.Count - 1) { List <CheckFullStopModelViewModel> CFSMVMListtemp = CFSMVMList.Where(x => x.StoplossPrice == 0 && x.StopprofitPrice == 0).ToList(); int num = CFSMVMList.Where(x => x.StoplossPrice > 0 || x.StopprofitPrice > 0).Sum(o => o.OrderVolume); if (CFSMVMListtemp.Count > 1) { if (CFSMVMListtemp[0] == SelectedItem) { CFSMVMListtemp[1].OrderVolume = _AllNum - SelectedItem.OrderVolume - num; if (CFSMVMListtemp[1].OrderVolume == 0) { CFSMVMListtemp.Remove(CFSMVMListtemp[1]); } } else if (CFSMVMListtemp[1] == SelectedItem) { CFSMVMListtemp[0].OrderVolume = _AllNum - SelectedItem.OrderVolume - num; if (CFSMVMListtemp[0].OrderVolume == 0) { CFSMVMListtemp.Remove(CFSMVMListtemp[0]); } } } else if (CFSMVMListtemp.Count == 1) { if (CFSMVMListtemp[0] == SelectedItem) { CFSMVMListtemp[1].OrderVolume = _AllNum - SelectedItem.OrderVolume - num; if (CFSMVMListtemp[1].OrderVolume == 0) { CFSMVMListtemp.Remove(CFSMVMListtemp[1]); } } else { CFSMVMListtemp[0].OrderVolume = _AllNum - num; if (CFSMVMListtemp[0].OrderVolume == 0) { CFSMVMListtemp.Remove(CFSMVMListtemp[0]); } } } foreach (CheckFullStopModelViewModel item in CFSMVMList) { if (item.OrderVolume == 0) { CFSMVMList.Remove(item); break; } } } }