public void CloseingExecuteChanged() { if (SelectedItem == null) { MessageBox.Show("请选择平仓项", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (CommParameterSetting.OrderVersion != null && CommParameterSetting.OrderVersion.BeforeOrderEnter) { if (MessageBox.Show("确定平仓合约" + SelectedItem.ContractId + "吗?", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel) { return; } } List <DelegationModelViewModel> ckitem = OrderCancelViewModel.Instance().KCDelegations.Where(x => x.ContractID == 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("可平手数不足!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } AutoStopLossComm.OpenCloseing(SelectedItem, ckNum); }
public void QuickBackhandExecuteChanged() { if (SelectedItem == null) { MessageBox.Show("请选择快捷反手项", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } IsReadOnly = false; Action RefreshHandel = Refresh; RefreshHandel.BeginInvoke(null, RefreshHandel); 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("可平手数不足!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } AutoStopLossComm.OpenCloseing(SelectedItem, ckNum); AutoStopLossComm.OpenCloseing(SelectedItem, ckNum, false); }
public void TradeAllExecuteChanged() { if (PMList.Count > 0) { if (MessageBox.Show("对所有持仓执行平仓操作,是否确认?", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel) { return; } bool isUns = false; foreach (PotionDetailModelViewModel item in PMList) { List <DelegationModelViewModel> ckitem = null; ckitem = OrderCancelViewModel.Instance().KCDelegations.Where(x => x.ContractCode == item.ContractId && x.Direction != item.Direction && x.OpenOffset == (int)OffsetType.OFFSET_COVER).ToList(); int ckNum = 0; if (ckitem != null && ckitem.Count > 0) { ckNum = ckitem.Sum(x => x.OrderVolume); } if (item.PositionVolume - ckNum <= 0) { isUns = true; continue; } AutoStopLossComm.OpenCloseing(item, ckNum); // LogHelper.Info(item.ContractCode + " " + (item.PositionVolume - ckNum) + ":总持仓:" + item.PositionVolume + " 挂单数量:" + ckNum); } if (isUns) { MessageBox.Show("持仓中部分合约可平手数不足!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } }
public void QuicklyUnwindExecuteChanged() { if (SelectedItem == null) { MessageBox.Show("请选择平仓项", "提示", MessageBoxButtons.OK, MessageBoxIcon.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("可平手数不足!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } TransactionViewModel.Instance().SelectFutures(SelectedItem.ContractId, SelectedItem.PositionVolume - ckNum); AutoStopLossComm.OpenCloseing(SelectedItem, ckNum); }
/// <summary> /// 提供行情信息 显示要交易的期货行情的信息 /// </summary> /// <param name="futures"></param> public void SendMarket(QuotationEntity futures) { if (futures == null) { return; } if (PMList.Count == 0) { return; } List <PotionDetailModelViewModel> items = PMList.Where(x => x.ContractId == futures.cd).ToList(); VarietyModel vm = null; ParitiesModel pm = null; lock (DetPMList) { foreach (PotionDetailModelViewModel itemde in DetPMList) { if (itemde.ContractCode == futures.cd) { string[] values = futures.cd.Split(' '); if (values.Length != 3) { return; } string varietie = values[1]; if (ContractVariety.Varieties.ContainsKey(varietie)) { vm = ContractVariety.Varieties[varietie]; } if (vm == null) { continue; } if (itemde.Direction == "B") { if (futures.lp > 0) { itemde.PositionProfitLoss = (futures.lp - itemde.OpenPrice) * itemde.PositionVolume * vm.multiple;//合约乘数 } else if (futures.lp == 0 && futures.pslp > 0) { itemde.PositionProfitLoss = (futures.pslp - itemde.OpenPrice) * itemde.PositionVolume * vm.multiple;//合约乘数 } else if (futures.lp == 0 && futures.pslp == 0) { continue; } } else { if (futures.lp > 0) { itemde.PositionProfitLoss = (itemde.OpenPrice - futures.lp) * itemde.PositionVolume * vm.multiple;//合约乘数 } else if (futures.lp == 0 && futures.pslp > 0) { itemde.PositionProfitLoss = (itemde.OpenPrice - futures.pslp) * itemde.PositionVolume * vm.multiple;//合约乘数 } else if (futures.lp == 0 && futures.pslp == 0) { continue; } } } } if (items != null) { foreach (var item in items) { string[] values = futures.cd.Split(' '); if (values.Length != 3) { return; } string varietie = values[1]; if (ContractVariety.Varieties.ContainsKey(varietie)) { vm = ContractVariety.Varieties[varietie]; } if (vm == null) { return; } // if (item.Direction == "B") item.PositionProfitLoss = Math.Round(DetPMList.Where(x => x.ContractId == item.ContractId && x.Direction == item.Direction).Sum(x => x.PositionProfitLoss), vm.precision);//合约乘数 if (ContractVariety.Parities.ContainsKey(vm.currency_code)) { pm = ContractVariety.Parities[vm.currency_code]; } if (pm == null) { return; } // if (item.Direction == "B") item.PositionProfitLossJB = DetPMList.Where(x => x.ContractId == item.ContractId && x.Direction == item.Direction).Sum(x => x.PositionProfitLoss) * pm.exchange_rate; //合约乘数*汇率 // item.PositionProfitLossJB = (item.OpenPrice - futures.lastPrice) * item.PositionVolume * vm.multiple * pm.exchange_rate;//合约乘数*汇率 } AutoStopLossComm.StartAutoStopLoss(futures); } } }