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(); }
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(); }
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); } } } } } } }
private void Border_MouseLeftButtonDown_10(object sender, MouseButtonEventArgs e) { PositionAllViewModel.Instance().DetSorting("OpenPrice", OpenPrice); OpenPrice = !OpenPrice; }
private void Border_MouseLeftButtonDown_11(object sender, MouseButtonEventArgs e) { PositionAllViewModel.Instance().DetSorting("AbleVolume", isdetAbleVolume); isdetAbleVolume = !isdetAbleVolume; }
private void Border_MouseLeftButtonDown_8(object sender, MouseButtonEventArgs e) { PositionAllViewModel.Instance().DetSorting("ContractCode", ContractCode); ContractCode = !ContractCode; }
private void Border_MouseLeftButtonDown_9(object sender, MouseButtonEventArgs e) { PositionAllViewModel.Instance().DetSorting("Direction", Direction); Direction = !Direction; }
private void Border_MouseLeftButtonDown_7(object sender, MouseButtonEventArgs e) { PositionAllViewModel.Instance().Sorting("UseMargin", UseMargin); UseMargin = !UseMargin; }
private void Border_MouseLeftButtonDown_6(object sender, MouseButtonEventArgs e) { PositionAllViewModel.Instance().Sorting("PositionProfitLossJB", PositionProfitLossJB); PositionProfitLossJB = !PositionProfitLossJB; }
private void Border_MouseLeftButtonDown_5(object sender, MouseButtonEventArgs e) { PositionAllViewModel.Instance().Sorting("PositionProfitLoss", isPositionProfitLoss); isPositionProfitLoss = !isPositionProfitLoss; }
private void Border_MouseLeftButtonDown_3(object sender, MouseButtonEventArgs e) { PositionAllViewModel.Instance().Sorting("PositionVolume", isPositionVolume); isPositionVolume = !isPositionVolume; }
private void Border_MouseLeftButtonDown_13(object sender, MouseButtonEventArgs e) { PositionAllViewModel.Instance().DetSorting("ShadowTradeId", ShadowTradeId); ShadowTradeId = !ShadowTradeId; }