Exemple #1
0
        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--;
            }
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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));
                }
            }
        }