public void CloseingExecuteChanged()
        {
            if (SelectedItem == null)
            {
                MessageBox.Show("请选择平仓项", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            if (CommParameterSetting.OrderVersion != null && CommParameterSetting.OrderVersion.BeforeOrderEnter)
            {
                if (MessageBox.Show("确定平仓合约" + SelectedItem.ContractId + "吗?", "", MessageBoxButton.OKCancel, MessageBoxImage.Warning) == MessageBoxResult.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("可平手数不足!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            CommParameterSetting.OpenCloseing(SelectedItem, ckNum);
        }
        public void QuickBackhandExecuteChanged()
        {
            if (SelectedItem == null)
            {
                MessageBox.Show("请选择快捷反手项", "提示", MessageBoxButton.OK, MessageBoxImage.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("可平手数不足!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            CommParameterSetting.OpenCloseing(SelectedItem, ckNum);
            CommParameterSetting.OpenCloseing(SelectedItem, ckNum, false);
        }
        public void TradeAllExecuteChanged()
        {
            if (PMList.Count > 0)
            {
                if (MessageBox.Show("对所有持仓执行平仓操作,是否确认?", "", MessageBoxButton.OKCancel, MessageBoxImage.Warning) == MessageBoxResult.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;
                    }
                    CommParameterSetting.OpenCloseing(item, ckNum);
                    // LogHelper.Info(item.ContractCode + " " + (item.PositionVolume - ckNum) + ":总持仓:" + item.PositionVolume + " 挂单数量:" + ckNum);
                }
                if (isUns)
                {
                    MessageBox.Show("持仓中部分合约可平手数不足!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                    return;
                }
            }
        }
Beispiel #4
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);
        }
Beispiel #5
0
        /// <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;//合约乘数*汇率
                    }
                    CommParameterSetting.StartAutoStopLoss(futures);
                }
            }
        }