Ejemplo n.º 1
0
 public TradePanelViewModel(MainViewModel mainVM)
 {
     _mainVM = mainVM;
     TransactionViewModel = TransactionViewModel.Instance();
     TransactionPannel    = new TransactionPannelViewModel();
     ConditionBill        = UCConditionBillViewModel.Instance();
     PositionAll          = PositionAllViewModel.Instance();
     OrderCancel          = OrderCancelViewModel.Instance();
     TodayTrader          = TodayTraderViewModels.Instance();
     FundsViewModel       = FundsViewModel.GetInstance();
 }
Ejemplo n.º 2
0
        public void ClearTradeList()
        {
            PositionAllViewModel.Instance().DetPMList.Clear();
            PositionAllViewModel.Instance().PMList.Clear();
            PositionViewModel.Instance().PMList.Clear();

            OrderCancelViewModel.Instance().KCDelegations.Clear();
            OrderCancelViewModel.Instance().Delegations.Clear();

            UCConditionBillViewModel.Instance().ConditionBillList.Clear();

            TodayTraderViewModels.Instance().TodayTraderList.Clear();
        }
Ejemplo n.º 3
0
        private void SendPotion(bool isClear = true)
        {
            ReqPotion rpd = new ReqPotion();

            rpd.cmdcode = RequestCmdCode.SelectPotionDetialCode;
            rpd.content = new ReqLoginName()
            {
                user_id = UserInfoHelper.UserId
            };
            ScoketManager.GetInstance().SendTradeWSInfo(JsonConvert.SerializeObject(rpd));
            if (isClear)
            {
                PositionAllViewModel.Instance().DetPMList.Clear();
                PositionAllViewModel.Instance().PMList.Clear();
                PositionViewModel.Instance().PMList.Clear();
            }
        }
        /// <summary>
        /// 触发自动止盈止损
        /// </summary>
        public static void StartAutoStopLoss(QuotationEntity futures)
        {
            if (ContractVariety.ContracPostionID.Count == 0)
            {
                return;
            }
            if (ContractVariety.ContracPostionID.ContainsKey(futures.cd))
            {
                //如果自动止盈止损包含此合约号
                //循环查询持仓明细,进行比较
                foreach (string value in ContractVariety.ContracPostionID[futures.cd])
                {
                    PotionDetailModelViewModel item = PositionAllViewModel.Instance().DetPMList.FirstOrDefault(x => x.PsitionId == value);
                    if (item != null)
                    {
                        AutoStopLossModel aslm = CommParameterSetting.AutoStopLossModel.FirstOrDefault(x => x.Direction == item.Direction && x.Agreement == item.ContractId);
                        if (aslm == null)
                        {
                            break;
                        }
                        string[] VarietiesKey = futures.cd.Split(' ');
                        if (VarietiesKey.Length != 3)
                        {
                            return;
                        }
                        string       varietie = VarietiesKey[1];
                        VarietyModel vm       = null;
                        if (ContractVariety.Varieties.ContainsKey(varietie))
                        {
                            vm = ContractVariety.Varieties[varietie];
                        }
                        if (vm == null)
                        {
                            break;
                        }

                        if (aslm.StopLossPotion > 0)
                        {
                            //止损价》最新价触发止损
                            if (item.Direction == "B")
                            {
                                if (ContractVariety.PostionPrice[item.PsitionId].LossPrice >= futures.lp)
                                {
                                    //平仓
                                    if (!PostinIds.Contains(item.PsitionId))
                                    {
                                        OpenCloseing(item, 0);
                                        PostinIds.Add(item.PsitionId);
                                        int count = SQLiteHelper.ExecuteNonQuery(SQLiteHelper.DBPath, CommandType.Text, "delete from AutoStopLoss where ContractID='" + item.ContractId + "' and PostionID='" + item.PsitionId + "';");

                                        LogHelper.Debug("买:持仓的止损价" + ContractVariety.PostionPrice[item.PsitionId].LossPrice + ": 行情最新价" + futures.lp);
                                        continue;
                                    }
                                }
                            }
                            else
                            {
                                if (ContractVariety.PostionPrice[item.PsitionId].LossPrice <= futures.lp)
                                {
                                    //平仓
                                    if (!PostinIds.Contains(item.PsitionId))
                                    {
                                        OpenCloseing(item, 0);
                                        PostinIds.Add(item.PsitionId);
                                        int count = SQLiteHelper.ExecuteNonQuery(SQLiteHelper.DBPath, CommandType.Text, "delete from AutoStopLoss where ContractID='" + item.ContractId + "' and PostionID='" + item.PsitionId + "';");

                                        LogHelper.Debug("卖:持仓的止损价" + ContractVariety.PostionPrice[item.PsitionId].LossPrice + ": 行情最新价" + futures.lp);
                                        continue;
                                    }
                                }
                            }
                        }
                        if (aslm.StopProfitPotion > 0)
                        {
                            //止盈价《最新价触发止盈
                            if (item.Direction == "B")
                            {
                                if ((item.OpenPrice + aslm.StopProfitPotion * vm.tick_size) <= futures.lp)
                                {
                                    //平仓
                                    if (!PostinIds.Contains(item.PsitionId))
                                    {
                                        OpenCloseing(item, 0);
                                        PostinIds.Add(item.PsitionId);
                                        int count = SQLiteHelper.ExecuteNonQuery(SQLiteHelper.DBPath, CommandType.Text, "delete from AutoStopLoss where ContractID='" + item.ContractId + "' and PostionID='" + item.PsitionId + "';");

                                        LogHelper.Debug("买:持仓的止盈价" + ContractVariety.PostionPrice[item.PsitionId].LossPrice + ": 行情最新价" + futures.lp);
                                        continue;
                                    }
                                }
                            }
                            else
                            {
                                if ((item.OpenPrice - aslm.StopProfitPotion * vm.tick_size) >= futures.lp)
                                {
                                    //平仓
                                    if (!PostinIds.Contains(item.PsitionId))
                                    {
                                        OpenCloseing(item, 0);
                                        PostinIds.Add(item.PsitionId);
                                        int count = SQLiteHelper.ExecuteNonQuery(SQLiteHelper.DBPath, CommandType.Text, "delete from AutoStopLoss where ContractID='" + item.ContractId + "' and PostionID='" + item.PsitionId + "';");

                                        LogHelper.Debug("卖:持仓的止盈价" + ContractVariety.PostionPrice[item.PsitionId].LossPrice + ": 行情最新价" + futures.lp);
                                        continue;
                                    }
                                }
                            }
                        }
                        if (aslm.FloatingProfitAndLoss > 0 && aslm.StopLossPotion > 0)
                        {
                            if (item.Direction == "B")
                            {
                                double cha = futures.lp - ContractVariety.PostionPrice[item.PsitionId].NewPrice;
                                if (cha > aslm.FloatingProfitAndLoss * vm.tick_size)
                                {
                                    int bs = (int)(cha / aslm.FloatingProfitAndLoss * vm.tick_size);
                                    ContractVariety.PostionPrice[item.PsitionId].NewPrice  = ContractVariety.PostionPrice[item.PsitionId].NewPrice + (bs * (aslm.FloatingProfitAndLoss * vm.tick_size));
                                    ContractVariety.PostionPrice[item.PsitionId].LossPrice = ContractVariety.PostionPrice[item.PsitionId].LossPrice + (bs * (aslm.FloatingProfitAndLoss * vm.tick_size));
                                    // 修改数据库中数据
                                    int count = SQLiteHelper.ExecuteNonQuery(SQLiteHelper.DBPath, CommandType.Text, "UPDATE AutoStopLoss set LossPrice=" + ContractVariety.PostionPrice[item.PsitionId].LossPrice + ",newprice=" + ContractVariety.PostionPrice[item.PsitionId].NewPrice + " WHERE UserID='" + UserInfoHelper.UserId + "' and PostionID='" + item.PsitionId + "' and ContractID='" + item.ContractId + "';");
                                    LogHelper.Debug("买:更新止损价:" + ContractVariety.PostionPrice[item.PsitionId].LossPrice + ":止损价基数" + ContractVariety.PostionPrice[item.PsitionId].NewPrice);
                                }
                            }
                            else
                            {
                                double cha = ContractVariety.PostionPrice[item.PsitionId].NewPrice - futures.lp;//买就是反过来减
                                if (cha > aslm.FloatingProfitAndLoss * vm.tick_size)
                                {
                                    int bs = (int)(cha / aslm.FloatingProfitAndLoss * vm.tick_size);
                                    ContractVariety.PostionPrice[item.PsitionId].NewPrice  = ContractVariety.PostionPrice[item.PsitionId].NewPrice - (bs * (aslm.FloatingProfitAndLoss * vm.tick_size));
                                    ContractVariety.PostionPrice[item.PsitionId].LossPrice = ContractVariety.PostionPrice[item.PsitionId].LossPrice - (bs * (aslm.FloatingProfitAndLoss * vm.tick_size));
                                    // 修改数据库中数据
                                    int count = SQLiteHelper.ExecuteNonQuery(SQLiteHelper.DBPath, CommandType.Text, "UPDATE AutoStopLoss set LossPrice=" + ContractVariety.PostionPrice[item.PsitionId].LossPrice + ",newprice=" + ContractVariety.PostionPrice[item.PsitionId].NewPrice + " WHERE UserID='" + UserInfoHelper.UserId + "' and PostionID='" + item.PsitionId + "' and ContractID='" + item.ContractId + "';");
                                    LogHelper.Debug("卖:更新止损价:" + ContractVariety.PostionPrice[item.PsitionId].LossPrice + ":止损价基数" + ContractVariety.PostionPrice[item.PsitionId].NewPrice);
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 5
0
 private void Border_MouseLeftButtonDown_10(object sender, MouseButtonEventArgs e)
 {
     PositionAllViewModel.Instance().DetSorting("OpenPrice", OpenPrice);
     OpenPrice = !OpenPrice;
 }
Ejemplo n.º 6
0
 private void Border_MouseLeftButtonDown_11(object sender, MouseButtonEventArgs e)
 {
     PositionAllViewModel.Instance().DetSorting("AbleVolume", isdetAbleVolume);
     isdetAbleVolume = !isdetAbleVolume;
 }
Ejemplo n.º 7
0
 private void Border_MouseLeftButtonDown_8(object sender, MouseButtonEventArgs e)
 {
     PositionAllViewModel.Instance().DetSorting("ContractCode", ContractCode);
     ContractCode = !ContractCode;
 }
Ejemplo n.º 8
0
 private void Border_MouseLeftButtonDown_9(object sender, MouseButtonEventArgs e)
 {
     PositionAllViewModel.Instance().DetSorting("Direction", Direction);
     Direction = !Direction;
 }
Ejemplo n.º 9
0
 private void Border_MouseLeftButtonDown_7(object sender, MouseButtonEventArgs e)
 {
     PositionAllViewModel.Instance().Sorting("UseMargin", UseMargin);
     UseMargin = !UseMargin;
 }
Ejemplo n.º 10
0
 private void Border_MouseLeftButtonDown_6(object sender, MouseButtonEventArgs e)
 {
     PositionAllViewModel.Instance().Sorting("PositionProfitLossJB", PositionProfitLossJB);
     PositionProfitLossJB = !PositionProfitLossJB;
 }
Ejemplo n.º 11
0
 private void Border_MouseLeftButtonDown_5(object sender, MouseButtonEventArgs e)
 {
     PositionAllViewModel.Instance().Sorting("PositionProfitLoss", isPositionProfitLoss);
     isPositionProfitLoss = !isPositionProfitLoss;
 }
Ejemplo n.º 12
0
 private void Border_MouseLeftButtonDown_3(object sender, MouseButtonEventArgs e)
 {
     PositionAllViewModel.Instance().Sorting("PositionVolume", isPositionVolume);
     isPositionVolume = !isPositionVolume;
 }
Ejemplo n.º 13
0
 private void Border_MouseLeftButtonDown_13(object sender, MouseButtonEventArgs e)
 {
     PositionAllViewModel.Instance().DetSorting("ShadowTradeId", ShadowTradeId);
     ShadowTradeId = !ShadowTradeId;
 }