private void metroLabel5_Click(object sender, EventArgs e) { string code = tbSelectedCode2.Text; TimeIntervalEnum timeInterval = chkTD.Checked ? TimeIntervalEnum.Day : TimeIntervalEnum.Week; string timeIntervalStr = chkTD.Checked ? "2" : "3"; Task.Factory.StartNew(() => { var sourceDatas = XingContext.Instance.ClientContext.GetJongmokSiseData(code, timeIntervalStr, "0", "300"); if (sourceDatas == null || sourceDatas.Count == 0) { return; } int totalCnt = sourceDatas.Count; if (totalCnt > 300) { sourceDatas.RemoveRange(0, totalCnt - 300); } var averageDatas = PPUtils.GetAverageDatas(code, sourceDatas, 9); sourceDatas = PPUtils.GetCutDatas(sourceDatas, averageDatas[0].DTime); chart.LoadDataAndApply(code, sourceDatas, averageDatas, averageDatas, timeInterval, 9); chart.SetYFormat("N0"); }); }
protected void SetChangeOpenPrice(string itemCode, List <S_CandleItemData> sourceDatas) { if (itemCode == "101" || itemCode == "301") { PPUtils.SetModifyOpenPriceByClosePrice(sourceDatas); } }
// Purposefully ignore modifiers here - only 2 maps have them enabled and it doesn't make much sense to just filter to those two private static float GetHighestPP(IPreviewBeatmapLevel previewBeatmapLevel, bool ppGain) { float maxPP = 0; var id = SongDataUtils.GetHash(previewBeatmapLevel.levelID); // Check if in SDC if (SongDataCore.Plugin.Songs.Data.Songs.ContainsKey(id)) { // Loop through each diff foreach (var diff in SongDataCore.Plugin.Songs.Data.Songs[id].diffs) { var difficulty = SongDataUtils.GetBeatmapDifficulty(diff.diff); var songID = new SongID(id, difficulty); // Only go through ranked songs if (SongDataUtils.IsRankedSong(songID)) { float pp = PPUtils.CalculatePP(songID, AccLoader.instance.GetAcc(songID)); if (ppGain) { pp = PPUtils.GetPPGain(pp, songID); } maxPP = pp > maxPP ? pp : maxPP; } } return(maxPP); } return(0); }
private void dgv_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex < 0 || e.RowIndex < 0) { return; } string code = dgv.Rows[e.RowIndex].Cells[0].Value as string; string name = dgv.Rows[e.RowIndex].Cells[1].Value as string; tbSelectedCode2.Text = code; tbSelectedName2.Text = name; Task.Factory.StartNew(() => { var sourceDatas = XingContext.Instance.ClientContext.GetJongmokSiseData(code, "2", "0", "300"); if (sourceDatas == null || sourceDatas.Count == 0) { return; } int totalCnt = sourceDatas.Count; if (totalCnt > 300) { sourceDatas.RemoveRange(0, totalCnt - 300); } var averageDatas = PPUtils.GetBalancedAverageDatas(code, sourceDatas, 4); sourceDatas = PPUtils.GetCutDatas(sourceDatas, averageDatas[0].DTime); chart.LoadDataAndApply(code, sourceDatas, averageDatas, TimeIntervalEnum.Day, 9); chart.SetYFormat("N0"); }); }
public override void loadData() { if (base.SelectedItemData == null) { return; } if (string.IsNullOrEmpty(base.SelectedItemData.Code)) { return; } string itemCode = base.SelectedItemData.Code; var sourceDatas = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( itemCode , base.timeInterval); if (sourceDatas == null || sourceDatas.Count == 0) { return; } //표시할 갯수를 맞춘다. RemoveSourceData(sourceDatas); //원천 데이터를 변경하는 로직 추가 sourceDatas = T_CandleAntiCandleItemData.GetFlow(sourceDatas); var averageDatas = PPUtils.GetAverageDatas(itemCode, sourceDatas, 9); sourceDatas = PPUtils.GetCutDatas(sourceDatas, averageDatas[0].DTime); chart.LoadDataAndApply(itemCode, sourceDatas, base.timeInterval, 9); chart2.LoadDataAndApply(itemCode, averageDatas, base.timeInterval, 9); }
public override void loadData() { if (base.SelectedItemData == null) { return; } if (string.IsNullOrEmpty(base.SelectedItemData.Code)) { return; } string itemCode = base.SelectedItemData.Code; var sourceDatas1 = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( base.SelectedItemData.Code , TimeIntervalEnum.Minute_300); var sourceDatas2 = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( base.SelectedItemData.Code , TimeIntervalEnum.Day); if (sourceDatas1 != null && sourceDatas1.Count > 0) { var averageDatas1 = PPUtils.GetAverageDatas(itemCode, sourceDatas1, 9); qMin1.LoadDataAndApply(itemCode, averageDatas1, TimeIntervalEnum.Minute_300, 3); } if (sourceDatas2 != null && sourceDatas2.Count > 0) { var averageDatas2 = PPUtils.GetAverageDatas(itemCode, sourceDatas2, 9); qMin2.LoadDataAndApply(itemCode, averageDatas2, TimeIntervalEnum.Day, 3); } }
public override void loadData() { if (base.SelectedItemData == null) { return; } if (string.IsNullOrEmpty(base.SelectedItemData.Code)) { return; } string itemCode = base.SelectedItemData.Code; var sourceDatas = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( itemCode , base.timeInterval); if (sourceDatas == null || sourceDatas.Count == 0) { return; } //표시할 갯수를 맞춘다. RemoveSourceData(sourceDatas); //국내지수인 경우 시간갭이 크기 때문에.. 전일종가를 당일시가로 해야한다. SetChangeOpenPrice(itemCode, sourceDatas); var averageDatas = PPUtils.GetAverageDatas(itemCode, sourceDatas, 9); sourceDatas = PPUtils.GetCutDatas(sourceDatas, averageDatas[0].DTime); chart.LoadDataAndApply(itemCode, sourceDatas, base.timeInterval, 9); chart2.LoadDataAndApply(itemCode, averageDatas, base.timeInterval, 9); }
public override void loadData() { if (isLoading) { return; } if (base.SelectedItemData == null) { return; } if (string.IsNullOrEmpty(base.SelectedItemData.Code)) { return; } string itemCode = base.SelectedItemData.Code; string selectedType = this.SelectedType; if (string.IsNullOrEmpty(selectedType)) { selectedType = SharedData.SelectedType; } isLoading = true; List <S_CandleItemData> sourceDatas = LoadData(itemCode, selectedType); isLoading = false; if (sourceDatas == null || sourceDatas.Count == 0) { return; } //표시할 갯수를 맞춘다. RemoveSourceData(sourceDatas); //국내지수인 경우 시간갭이 크기 때문에.. 전일종가를 당일시가로 해야한다. //var removeGapSourceDatas = PPUtils.RemoveGapPrice(sourceDatas); var quantumDatas = PPUtils.GetANodeDatas(sourceDatas); var plusQuantumDatas = quantumDatas.plusList; var minusQuantumDatas = quantumDatas.minusList; int averageCount = 9; if (timeInterval == TimeIntervalEnum.Minute_01 || timeInterval == TimeIntervalEnum.Minute_05 || timeInterval == TimeIntervalEnum.Minute_10 || timeInterval == TimeIntervalEnum.Minute_30) { averageCount = 9; } var pAverageDatas = PPUtils.GetAverageDatas(itemCode, plusQuantumDatas, averageCount); var mAverageDatas = PPUtils.GetAverageDatas(itemCode, minusQuantumDatas, averageCount); sourceDatas = PPUtils.GetCutDatas(sourceDatas, pAverageDatas[0].DTime); chart.LoadDataAndApply(itemCode, sourceDatas, pAverageDatas, mAverageDatas, base.timeInterval, 5); }
private void FillRenkoChart(List <S_CandleItemData> listCandles, double basePrice) { if (listCandles == null) { return; } int blockSize = 30; chart2.Series[0].Points.Clear(); int candleCount = 0; S_CandleItemData bdc = null; foreach (var dc in listCandles) { int idx = -1; if (bdc != null) { int renko = PPUtils.GetRenko(dc, bdc, basePrice); if (renko != 0) { int r = Math.Abs(renko); for (int i = 0; i < r; i++) { if (renko > 0) { idx = chart2.Series[0].Points.AddXY(dc.DTime, 1, 0, 0, 1); } else { idx = chart2.Series[0].Points.AddXY(dc.DTime, 1, 0, 1, 0); } chart2.Series[0].Points[idx].Tag = dc; candleCount++; } } } bdc = dc; } var chartArea = chart2.ChartAreas[chart2.Series[0].ChartArea]; chartArea.AxisX.Minimum = 0; chartArea.AxisX.Maximum = candleCount + 1; chartArea.CursorX.AutoScroll = true; chartArea.AxisX.ScaleView.Zoomable = true; chartArea.AxisX.ScaleView.SizeType = DateTimeIntervalType.Number; int position = candleCount - blockSize; int size = candleCount; chartArea.AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.All; chartArea.AxisX.ScaleView.SmallScrollSize = 10; chartArea.AxisY2.Maximum = 1.0; chartArea.AxisY2.Minimum = 0.0; chartArea.AxisY2.Enabled = AxisEnabled.False; chartArea.AxisX.ScaleView.Zoom(position, size + 1); }
/// <summary> /// /// </summary> /// <param name="t"></param> public void CreateItem(Item t) { using (IDataContext ctx = DataContext.Instance()) { t = (Item)PPUtils.NullableToDbNull(t); var rep = ctx.GetRepository <Item>(); rep.Insert(t); } }
public override void loadData() { if (base.SelectedItemData == null) { return; } if (string.IsNullOrEmpty(base.SelectedItemData.Code)) { return; } string itemCode = base.SelectedItemData.Code; var sourceDatas = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( itemCode , base.timeInterval); if (sourceDatas == null || sourceDatas.Count == 0) { return; } int cnt = 7; List <S_CandleItemData> sourceDatas1 = sourceDatas.GetRange(sourceDatas.Count - cnt, cnt); chart1.LoadDataAndApply(itemCode, sourceDatas1, base.timeInterval); cnt = 19; List <S_CandleItemData> sourceDatas2 = sourceDatas.GetRange(sourceDatas.Count - cnt, cnt); chart2.LoadDataAndApply(itemCode, sourceDatas2, base.timeInterval); cnt = 29; List <S_CandleItemData> sourceDatas3 = sourceDatas.GetRange(sourceDatas.Count - cnt, cnt); chart3.LoadDataAndApply(itemCode, sourceDatas3, base.timeInterval); cnt = 37; List <S_CandleItemData> sourceDatas4 = sourceDatas.GetRange(sourceDatas.Count - cnt, cnt); chart4.LoadDataAndApply(itemCode, sourceDatas4, base.timeInterval); var averageDatas = PPUtils.GetAverageDatas(itemCode, sourceDatas, 7); cnt = 7; List <S_CandleItemData> sourceDatas5 = averageDatas.GetRange(averageDatas.Count - cnt, cnt); chart5.LoadDataAndApply(itemCode, sourceDatas5, base.timeInterval); cnt = 19; List <S_CandleItemData> sourceDatas6 = averageDatas.GetRange(averageDatas.Count - cnt, cnt); chart6.LoadDataAndApply(itemCode, sourceDatas6, base.timeInterval); cnt = 29; List <S_CandleItemData> sourceDatas7 = averageDatas.GetRange(averageDatas.Count - cnt, cnt); chart7.LoadDataAndApply(itemCode, sourceDatas7, base.timeInterval); cnt = 37; List <S_CandleItemData> sourceDatas8 = averageDatas.GetRange(averageDatas.Count - cnt, cnt); chart8.LoadDataAndApply(itemCode, sourceDatas8, base.timeInterval); }
public override void loadData() { if (base.SelectedItemData == null) { return; } if (string.IsNullOrEmpty(base.SelectedItemData.Code)) { return; } string itemCode = base.SelectedItemData.Code; var sourceDatas180 = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( base.SelectedItemData.Code , TimeIntervalEnum.Tick_180); var sourceDatas360 = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( base.SelectedItemData.Code , TimeIntervalEnum.Tick_360); var sourceDatas720 = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( base.SelectedItemData.Code , TimeIntervalEnum.Tick_720); var sourceDatas1080 = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( base.SelectedItemData.Code , TimeIntervalEnum.Tick_1080); var sourceDatas1440 = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( base.SelectedItemData.Code , TimeIntervalEnum.Tick_1440); if (sourceDatas180 != null && sourceDatas180.Count > 0) { var averageDatas = PPUtils.GetAverageDatas(itemCode, sourceDatas180, 7); qTick180.LoadDataAndApply(itemCode, averageDatas, TimeIntervalEnum.Tick_180, 3); } if (sourceDatas360 != null && sourceDatas360.Count > 0) { var averageDatas = PPUtils.GetAverageDatas(itemCode, sourceDatas360, 7); qTick360.LoadDataAndApply(itemCode, averageDatas, TimeIntervalEnum.Tick_360, 3); } if (sourceDatas720 != null && sourceDatas720.Count > 0) { var averageDatas = PPUtils.GetAverageDatas(itemCode, sourceDatas720, 7); qTick720.LoadDataAndApply(itemCode, averageDatas, TimeIntervalEnum.Tick_720, 3); qTick721.LoadDataAndApply(itemCode, averageDatas, TimeIntervalEnum.Tick_720, 3); } if (sourceDatas1080 != null && sourceDatas1080.Count > 0) { var averageDatas = PPUtils.GetAverageDatas(itemCode, sourceDatas1080, 7); qTick1080.LoadDataAndApply(itemCode, averageDatas, TimeIntervalEnum.Tick_1080, 3); } if (sourceDatas1440 != null && sourceDatas1440.Count > 0) { var averageDatas = PPUtils.GetAverageDatas(itemCode, sourceDatas1440, 7); qTick1440.LoadDataAndApply(itemCode, averageDatas, TimeIntervalEnum.Tick_1440, 3); } }
public void ModifiersChanged() { var gameplayModifiersPanelController = Resources.FindObjectsOfTypeAll <GameplayModifiersPanelController>().FirstOrDefault(); _modifiers = gameplayModifiersPanelController.GetPrivateField <GameplayModifiers>("_gameplayModifiers"); if (SongDataUtils.IsRankedSong(_id)) { SetPPText(PPUtils.AllowedModifiers(_id.id, _modifiers)); } }
public override void loadData() { if (isLoading) { return; } if (base.SelectedItemData == null) { return; } if (string.IsNullOrEmpty(base.SelectedItemData.Code)) { return; } string itemCode = base.SelectedItemData.Code; string selectedType = this.SelectedType; if (string.IsNullOrEmpty(selectedType)) { selectedType = SharedData.SelectedType; } isLoading = true; List <S_CandleItemData> sourceDatas = LoadData(itemCode, selectedType); isLoading = false; if (sourceDatas == null || sourceDatas.Count == 0) { return; } int averageCount = 9; if (timeInterval == TimeIntervalEnum.Minute_01 || timeInterval == TimeIntervalEnum.Minute_05 || timeInterval == TimeIntervalEnum.Minute_10 || timeInterval == TimeIntervalEnum.Minute_30) { averageCount = 9; } var averageDatas1 = PPUtils.GetBalancedAverageDatas(itemCode, sourceDatas, averageCount); //국내지수인 경우 시간갭이 크기 때문에.. 전일종가를 당일시가로 해야한다. var removeGapSourceDatas = PPUtils.RemoveGapPrice(sourceDatas); var averageDatas2 = PPUtils.GetBalancedAverageDatas(itemCode, removeGapSourceDatas, averageCount); chart1.LoadDataAndApply(itemCode, averageDatas1, averageDatas1, timeInterval, 5); chart2.LoadDataAndApply(itemCode, averageDatas2, averageDatas2, timeInterval, 5); }
private void SetPPText(bool canUsePositiveModifiers) { float ppValue = canUsePositiveModifiers ? PPUtils.CalculatePP(_rawPP, BeatSaberUtils.GetModifiedAcc(_accuracy, _modifiersModel, _modifiers)) : PPUtils.CalculatePP(_rawPP, BeatSaberUtils.GetModifiedAcc(_accuracy, _modifiersModel, BeatSaberUtils.RemovePositiveModifiers(_modifiers))); string ppText = Math.Round(ppValue, 2).ToString("0.00"); var ppGain = Math.Round(PPUtils.GetPPGain(ppValue, _id), 2); string ppGainText = ppGain.ToString("0.00"); var color = ppGain > 0 ? "green" : "red"; _ppText.SetText($"{ppText} (<color=\"{color}\">+{ppGain}</color>)"); }
public void OnMenuSceneLoadedFresh(ScenesTransitionSetupDataSO transitionSetupDataSO) { PP_HelperController.OnLoad(); if (!RawPPLoader.IsInit()) { RawPPLoader.Initialize(); } PPUtils.Initialize(); ProfileDataLoader.instance.Initialize(); AccLoader.instance.Initialize(); if (Config.playHistory) { PlayHistoryTracker.Initialize(); } }
public override void loadData() { if (base.SelectedItemData == null) { return; } if (string.IsNullOrEmpty(base.SelectedItemData.Code)) { return; } string itemCode = base.SelectedItemData.Code; var sourceDatas = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( itemCode , base.timeInterval); if (sourceDatas == null || sourceDatas.Count == 0) { return; } //표시할 갯수를 맞춘다. RemoveSourceData(sourceDatas); //국내지수인 경우 시간갭이 크기 때문에.. 전일종가를 당일시가로 해야한다. //SetChangeOpenPrice(itemCode, sourceDatas); //if (true) //{ // double rate = 0.0; // if (timeInterval == TimeIntervalEnum.Week) rate = 2.5; // if (timeInterval == TimeIntervalEnum.Day) rate = 1.0; // if (timeInterval == TimeIntervalEnum.Minute_180) rate = 0.7; // if (timeInterval == TimeIntervalEnum.Minute_120) rate = 0.5; // if (timeInterval == TimeIntervalEnum.Minute_60) rate = 0.3; // sourceDatas = PPUtils.GetRecreateWhimDatas(itemCode, sourceDatas, true, rate, null); //} var averageDatas = PPUtils.GetAverageDatas(itemCode, sourceDatas, 9); //var averageDatas = PPUtils.GetBalancedAverageDatas(itemCode, sourceDatas, 9); //var averageDatas = PPUtils.GetAccumulatedAverageDatas(itemCode, sourceDatas, 9); sourceDatas = PPUtils.GetCutDatas(sourceDatas, averageDatas[0].DTime); chart.LoadDataAndApply(itemCode, sourceDatas, base.timeInterval, 9); chart2.LoadDataAndApply(itemCode, averageDatas, base.timeInterval, 9); }
public void CreateVirtualData(List <S_CandleItemData> sourceDatas) { if (!appendVirtualData) { return; } if (string.IsNullOrEmpty(appendVirtualDataType)) { return; } var virtualList = PPUtils.GetVirtualCandle(appendVirtualDataType, sourceDatas.GetRange(sourceDatas.Count - 5, 5)); foreach (var m in virtualList) { sourceDatas.Add(m); } }
public void SubmitPlay(SongID songID, double acc) { // Unplayed or better than previous acc if (!songDataInfo.ContainsKey(songID) || acc > songDataInfo[songID].acc) { Logger.log.Debug("Unplayed or better score"); double pp = PPUtils.CalculatePP(songID, (float)(acc * 100)); int oldIndex = songDataInfo.ContainsKey(songID) ? songIndex[songID] : songIndex.Count; double weight = Double.NegativeInfinity; // Find first song that it's worth more than var i = 0; foreach (var song in songOrder) { var songWorth = songDataInfo[song].pp; if (songWorth < pp) { weight = songDataInfo[song].weight; break; } i++; } // found a song it's worth more than, decrease weight of songs below it that are above original if (weight != Double.NegativeInfinity) { for (; i < oldIndex; i++) { var song = songOrder[i]; songDataInfo[song].weight *= PPUtils.FALLOFF_RATE; } } // Lowest value song else { Logger.log.Debug("Lowest value song"); weight = songDataInfo[songOrder.Last()].weight * PPUtils.FALLOFF_RATE; } // Add/update this song songDataInfo[songID] = new SongData(acc, pp, weight); // recalculate and save data CalculateSums(); SaveSongData(); } }
private void UpdateCounter() { var maxScore = ScoreModel.MaxRawScoreForNumberOfNotes(_totalNotes); float acc; if (maxScore == 0) { acc = 1; } else { acc = (float)_score / (float)maxScore; } var pp = PPUtils.CalculatePP(_rawPP, acc * 100); _counter.text = $"{Math.Round(pp, Config.decimalPrecision)}pp"; }
public void LevelCleared(StandardLevelScenesTransitionSetupDataSO standardLevelScenesTransitionSetupDataSO, LevelCompletionResults levelCompletionResults) { Logger.log.Debug("Level cleared"); // Score submission disabled or using practice mode if (BS_Utils.Gameplay.ScoreSubmission.WasDisabled || BS_Utils.Gameplay.ScoreSubmission.ProlongedDisabled || ((GameplayCoreSceneSetupData)standardLevelScenesTransitionSetupDataSO.sceneSetupDataArray.First(x => x.GetType().Equals(typeof(GameplayCoreSceneSetupData)))).practiceSettings != null) { Logger.log.Debug("Practice mode or score disabled"); return; } var gameplayCoreSceneSetupData = ((GameplayCoreSceneSetupData)standardLevelScenesTransitionSetupDataSO.sceneSetupDataArray[1]); var difficultyBeatmap = gameplayCoreSceneSetupData.difficultyBeatmap; SongID songID = SongDataUtils.GetSongID(difficultyBeatmap); // I don't like putting play history here but until I do a refactor I'm gonna keep it here if (SongDataUtils.IsRankedSong(songID) || Config.playHistory) { Logger.log.Debug("Beat song"); GameplayModifiers modifiers = new GameplayModifiers(levelCompletionResults.gameplayModifiers); // Remove positive modifiers if not allowed if (!PPUtils.AllowedModifiers(songID.id, modifiers)) { Logger.log.Debug("Using invalid modifiers, removing from score"); modifiers = BeatSaberUtils.RemovePositiveModifiers(modifiers); } var multiplier = levelCompletionResults.gameplayModifiersModel.GetTotalMultiplier(modifiers); var score = levelCompletionResults.rawScore * multiplier; var maxScore = ScoreModel.MaxRawScoreForNumberOfNotes(difficultyBeatmap.beatmapData.notesCount); double acc = (double)score / (double)maxScore; Logger.log.Debug($"acc: {acc}"); if (SongDataUtils.IsRankedSong(songID)) { SubmitPlay(songID, acc); } else { PlayHistoryTracker.UpdatePlayHistory(songID, acc); } } }
public override void loadData() { if (base.SelectedItemData == null) { return; } if (string.IsNullOrEmpty(base.SelectedItemData.Code)) { return; } string itemCode = base.SelectedItemData.Code; var candles = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( itemCode , base.timeInterval); if (candles == null || candles.Count == 0) { return; } List <S_LineItemData> sourceDatas = new List <S_LineItemData>(); var list = PPUtils.GetSixPointsByCandles(candles); foreach (var m in list) { //S_LineItemData sourceData = new S_LineItemData( // itemCode // , m.OpenPrice // , m.HighPrice // , m.LowPrice // , m.ClosePrice // , m.DTime // ); //sourceDatas.Add(sourceData); } chart.loadDataAndApply(itemCode, sourceDatas, base.timeInterval, 7); var averageDatas = PPUtils.GetAverageDatas(itemCode, sourceDatas, 7); chart2.loadDataAndApply(itemCode, averageDatas, base.timeInterval, 7); }
public override void loadData() { if (isLoading) { return; } if (base.SelectedItemData == null) { return; } if (string.IsNullOrEmpty(base.SelectedItemData.Code)) { return; } string itemCode = base.SelectedItemData.Code; string selectedType = this.SelectedType; if (string.IsNullOrEmpty(selectedType)) { selectedType = SharedData.SelectedType; } isLoading = true; List <S_CandleItemData> sourceDatas = LoadData(itemCode, selectedType); isLoading = false; if (sourceDatas == null || sourceDatas.Count == 0) { return; } var averageDatas = PPUtils.GetBalancedAverageDatas(itemCode, sourceDatas, 9); var averageDatas2 = PPUtils.GetMovingAverageDurationFlow(itemCode, averageDatas, isStrengthed, inflectionPoint); var sourceDatas2 = PPUtils.GetDurationSum(itemCode, averageDatas2, sourceDatas); chart.LoadDataAndApply(itemCode, sourceDatas2, base.timeInterval, 9); chart2.LoadDataAndApply(itemCode, averageDatas2, base.timeInterval, 9); chart2.SetYFormat("N0"); }
private void lblTitlePgr_Click(object sender, EventArgs e) { string code = tbSelectedCode.Text; Task.Factory.StartNew(() => { var sourceDatas = XingContext.Instance.ClientContext.GetUpJongSiseData(code, "2", "0", "100"); if (sourceDatas == null || sourceDatas.Count == 0) { return; } int totalCnt = sourceDatas.Count; if (totalCnt > 100) { sourceDatas.RemoveRange(0, totalCnt - 100); } var averageDatas = PPUtils.GetAverageDatas(code, sourceDatas, 9); sourceDatas = PPUtils.GetCutDatas(sourceDatas, averageDatas[0].DTime); chart.LoadDataAndApply(code, sourceDatas, averageDatas, averageDatas, TimeIntervalEnum.Day, 9); chart.SetYFormat("N0"); }); }
public override void loadData() { if (base.SelectedItemData == null) { return; } if (string.IsNullOrEmpty(base.SelectedItemData.Code)) { return; } string itemCode = base.SelectedItemData.Code; TimeIntervalEnum timeInterval = TimeIntervalEnum.Minute_60; var sourceDatas = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( base.SelectedItemData.Code , timeInterval); //표시할 갯수를 맞춘다. RemoveSourceData(sourceDatas); //국내지수인 경우 시간갭이 크기 때문에.. 전일종가를 당일시가로 해야한다. SetChangeOpenPrice(itemCode, sourceDatas); if (sourceDatas != null && sourceDatas.Count > 0) { var averageDatas1 = PPUtils.GetAverageDatas(itemCode, sourceDatas, 9); var averageDatas2 = PPUtils.GetBalancedAverageDatas(itemCode, sourceDatas, 9); var averageDatas3 = PPUtils.GetAccumulatedAverageDatas(itemCode, sourceDatas, 9); sourceDatas = PPUtils.GetCutDatas(sourceDatas, averageDatas1[0].DTime); qMin1.LoadDataAndApply(itemCode, sourceDatas, timeInterval, 3); qMin2.LoadDataAndApply(itemCode, averageDatas1, timeInterval, 3); qMin3.LoadDataAndApply(itemCode, averageDatas2, timeInterval, 3); qMin4.LoadDataAndApply(itemCode, averageDatas3, timeInterval, 3); } }
private void dgv_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex < 0 || e.RowIndex < 0) { return; } string code = dgv.Rows[e.RowIndex].Cells[1].Value as string; string name = dgv.Rows[e.RowIndex].Cells[2].Value as string; DateTime dt = Convert.ToDateTime(dgv.Rows[e.RowIndex].Cells[0].Value); tbSelectedCode2.Text = code; tbSelectedName2.Text = name; selectedNode = dgv.Rows[e.RowIndex].Tag as XmlNode; selectedIndex = e.RowIndex; TimeIntervalEnum timeInterval = chkTD.Checked ? TimeIntervalEnum.Day : TimeIntervalEnum.Week; string timeIntervalStr = chkTD.Checked ? "2" : "3"; Task.Factory.StartNew(() => { var sourceDatas = XingContext.Instance.ClientContext.GetJongmokSiseData(code, timeIntervalStr, "0", "300"); if (sourceDatas == null || sourceDatas.Count == 0) { return; } int totalCnt = sourceDatas.Count; if (totalCnt > 300) { sourceDatas.RemoveRange(0, totalCnt - 300); } var averageDatas = PPUtils.GetAverageDatas(code, sourceDatas, 9); sourceDatas = PPUtils.GetCutDatas(sourceDatas, averageDatas[0].DTime); chart.LoadDataAndApply(code, sourceDatas, averageDatas, averageDatas, timeInterval, 9); chart.SetYFormat("N0"); chart.ClearChartLabel("↓"); chart.DisplayChartLabel(dt, Color.DarkRed, "↓", "↓"); }); }
internal void Refresh(string id) { if (!Config.showInfo) { _parentObject.SetActive(false); return; } try { IDifficultyBeatmap difficultyBeatmap = _standardLevelDetailView.selectedDifficultyBeatmap; var newId = new ProfileDataLoader.SongID(id, difficultyBeatmap.difficulty); if (SongDataUtils.IsRankedSong(newId)) { _parentObject.SetActive(true); _rawPP = SongDataUtils.GetRawPP(newId); // Only load the acc in when a new song is selected if (_id == null || !newId.Equals(_id)) { _id = newId; LoadAcc(); } SetPPText(PPUtils.AllowedModifiers(_id.id, _modifiers)); } else { _parentObject.SetActive(false); } } catch (Exception) { Logger.log.Debug($"error with difficulty for song {id}"); _parentObject.SetActive(false); } }
public override void loadData() { if (base.SelectedItemData == null) { return; } if (string.IsNullOrEmpty(base.SelectedItemData.Code)) { return; } string itemCode = base.SelectedItemData.Code; var sourceDatas1 = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( base.SelectedItemData.Code , TimeIntervalEnum.Hour_01); var sourceDatas2 = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( base.SelectedItemData.Code , TimeIntervalEnum.Hour_02); var sourceDatas3 = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( base.SelectedItemData.Code , TimeIntervalEnum.Hour_03); var sourceDatas4 = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( base.SelectedItemData.Code , TimeIntervalEnum.Hour_06); var sourceDatas5 = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( base.SelectedItemData.Code , TimeIntervalEnum.Hour_12); var sourceDatas6 = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( base.SelectedItemData.Code , TimeIntervalEnum.Day); if (sourceDatas1 != null && sourceDatas1.Count > 0) { var averageDatas = PPUtils.GetAverageDatas(itemCode, sourceDatas1, 9); qMin1.LoadDataAndApply(itemCode, averageDatas, TimeIntervalEnum.Hour_01, 3); } if (sourceDatas2 != null && sourceDatas2.Count > 0) { var averageDatas = PPUtils.GetAverageDatas(itemCode, sourceDatas2, 9); qMin2.LoadDataAndApply(itemCode, averageDatas, TimeIntervalEnum.Hour_02, 3); } if (sourceDatas3 != null && sourceDatas3.Count > 0) { var averageDatas = PPUtils.GetAverageDatas(itemCode, sourceDatas3, 9); qMin3.LoadDataAndApply(itemCode, averageDatas, TimeIntervalEnum.Hour_03, 3); } if (sourceDatas4 != null && sourceDatas4.Count > 0) { var averageDatas = PPUtils.GetAverageDatas(itemCode, sourceDatas4, 9); qMin4.LoadDataAndApply(itemCode, averageDatas, TimeIntervalEnum.Hour_06, 3); } if (sourceDatas5 != null && sourceDatas5.Count > 0) { var averageDatas = PPUtils.GetAverageDatas(itemCode, sourceDatas5, 9); qMin5.LoadDataAndApply(itemCode, averageDatas, TimeIntervalEnum.Hour_12, 3); } if (sourceDatas6 != null && sourceDatas6.Count > 0) { var averageDatas = PPUtils.GetAverageDatas(itemCode, sourceDatas6, 9); qMin6.LoadDataAndApply(itemCode, averageDatas, TimeIntervalEnum.Day, 3); } }
protected List <S_CandleItemData> loadData() { DateTime?dtS = null; if (dtpS.Checked) { dtS = dtpS.Value; } DateTime?dtE = null; if (dtpE.Checked) { dtE = dtpE.Value; } return(PPUtils.LoadData(selectedType, selectedTimeInterval, selectedItem, dtS, dtE)); //List<S_CandleItemData> sourceDatas = null; //if (selectedType == "국내업종") //{ // if (selectedTimeInterval == TimeIntervalEnum.Day) // sourceDatas = XingContext.Instance.ClientContext.GetUpJongSiseData(selectedItem, "2", "0", "500"); // else if (selectedTimeInterval == TimeIntervalEnum.Week) // sourceDatas = XingContext.Instance.ClientContext.GetUpJongSiseData(selectedItem, "3", "0", "500"); //} //else if (selectedType == "국내지수") //{ // //if (selectedTimeInterval == TimeIntervalEnum.Day) // // sourceDatas = XingContext.Instance.ClientContext.GetUpJongSiseData(selectedItem, "2", "0", "500"); // //else if (selectedTimeInterval == TimeIntervalEnum.Week) // // sourceDatas = XingContext.Instance.ClientContext.GetUpJongSiseData(selectedItem, "3", "0", "500"); // //else if (selectedTimeInterval == TimeIntervalEnum.Minute_01) // // sourceDatas = XingContext.Instance.ClientContext.GetUpJongSiseData(selectedItem, "1", "1", "500"); // //else if (selectedTimeInterval == TimeIntervalEnum.Minute_05) // // sourceDatas = XingContext.Instance.ClientContext.GetUpJongSiseData(selectedItem, "1", "5", "500"); // //else if (selectedTimeInterval == TimeIntervalEnum.Minute_10) // // sourceDatas = XingContext.Instance.ClientContext.GetUpJongSiseData(selectedItem, "1", "10", "500"); // //else if (selectedTimeInterval == TimeIntervalEnum.Minute_30) // // sourceDatas = XingContext.Instance.ClientContext.GetUpJongSiseData(selectedItem, "1", "30", "500"); // //else if (selectedTimeInterval == TimeIntervalEnum.Hour_01) // // sourceDatas = XingContext.Instance.ClientContext.GetUpJongSiseData(selectedItem, "1", "60", "500"); // if (dtpS.Checked && dtpE.Checked) // { // if (selectedTimeInterval == TimeIntervalEnum.Day) // sourceDatas = XingContext.Instance.ClientContext.GetKoreaIndexSiseDataByRange(selectedItem, "D", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Week) // sourceDatas = XingContext.Instance.ClientContext.GetKoreaIndexSiseDataByRange(selectedItem, "W", dtpS.Value, dtpE.Value); // } // else // { // if (selectedTimeInterval == TimeIntervalEnum.Day) // sourceDatas = XingContext.Instance.ClientContext.GetKoreaIndexSiseData(selectedItem, "D"); // else if (selectedTimeInterval == TimeIntervalEnum.Week) // sourceDatas = XingContext.Instance.ClientContext.GetKoreaIndexSiseData(selectedItem, "W"); // } //} //else if (selectedType == "국내종목") //{ // if (selectedTimeInterval == TimeIntervalEnum.Day) // sourceDatas = XingContext.Instance.ClientContext.GetJongmokSiseData(selectedItem, "2", "0", "500"); // else if (selectedTimeInterval == TimeIntervalEnum.Week) // sourceDatas = XingContext.Instance.ClientContext.GetJongmokSiseData(selectedItem, "3", "0", "500"); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_01) // sourceDatas = XingContext.Instance.ClientContext.GetJongmokSiseData(selectedItem, "1", "1", "500"); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_05) // sourceDatas = XingContext.Instance.ClientContext.GetJongmokSiseData(selectedItem, "1", "5", "500"); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_10) // sourceDatas = XingContext.Instance.ClientContext.GetJongmokSiseData(selectedItem, "1", "10", "500"); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_30) // sourceDatas = XingContext.Instance.ClientContext.GetJongmokSiseData(selectedItem, "1", "30", "500"); // else if (selectedTimeInterval == TimeIntervalEnum.Hour_01) // sourceDatas = XingContext.Instance.ClientContext.GetJongmokSiseData(selectedItem, "1", "60", "500"); //} //else if (selectedType == "해외지수") //{ // //if (selectedTimeInterval == TimeIntervalEnum.Day) // // sourceDatas = XingContext.Instance.ClientContext.GetWorldIndexSiseData(selectedItem, "0"); // //else if (selectedTimeInterval == TimeIntervalEnum.Week) // // sourceDatas = XingContext.Instance.ClientContext.GetWorldIndexSiseData(selectedItem, "1"); // if (dtpS.Checked && dtpE.Checked) // { // if (selectedTimeInterval == TimeIntervalEnum.Day) // sourceDatas = XingContext.Instance.ClientContext.GetWorldIndexSiseDataByRange(selectedItem, "D", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Week) // sourceDatas = XingContext.Instance.ClientContext.GetWorldIndexSiseDataByRange(selectedItem, "W", dtpS.Value, dtpE.Value); // } // else // { // if (selectedTimeInterval == TimeIntervalEnum.Day) // sourceDatas = XingContext.Instance.ClientContext.GetWorldIndexSiseData(selectedItem, "D"); // else if (selectedTimeInterval == TimeIntervalEnum.Week) // sourceDatas = XingContext.Instance.ClientContext.GetWorldIndexSiseData(selectedItem, "W"); // } //} //else if (selectedType == "해외선물") //{ // if (dtpS.Checked && dtpE.Checked) // { // if (selectedTimeInterval == TimeIntervalEnum.Day) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseDataByRange(selectedItem, "D", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Week) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseDataByRange(selectedItem, "W", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Hour_01) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseDataByRange(selectedItem, "H", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Hour_02) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseDataByRange(selectedItem, "2H", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Hour_05) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseDataByRange(selectedItem, "5H", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_01) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseDataByRange(selectedItem, "M", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_05) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseDataByRange(selectedItem, "5M", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_15) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseDataByRange(selectedItem, "15M", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_30) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseDataByRange(selectedItem, "30M", dtpS.Value, dtpE.Value); // } // else // { // if (selectedTimeInterval == TimeIntervalEnum.Day) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseData(selectedItem, "D"); // else if (selectedTimeInterval == TimeIntervalEnum.Week) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseData(selectedItem, "W"); // else if (selectedTimeInterval == TimeIntervalEnum.Hour_01) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseData(selectedItem, "H"); // else if (selectedTimeInterval == TimeIntervalEnum.Hour_02) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseData(selectedItem, "2H"); // else if (selectedTimeInterval == TimeIntervalEnum.Hour_05) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseData(selectedItem, "5H"); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_01) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseData(selectedItem, "M"); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_05) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseData(selectedItem, "5M"); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_15) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseData(selectedItem, "15M"); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_30) // sourceDatas = XingContext.Instance.ClientContext.GetWorldFutureSiseData(selectedItem, "30M"); // } //} //else if (selectedType == "암호화폐") //{ // if (dtpS.Checked && dtpE.Checked) // { // if (selectedTimeInterval == TimeIntervalEnum.Day) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseDataByRange(selectedItem, "D", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Week) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseDataByRange(selectedItem, "W", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Hour_01) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseDataByRange(selectedItem, "H", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Hour_02) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseDataByRange(selectedItem, "2H", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Hour_05) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseDataByRange(selectedItem, "5H", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_01) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseDataByRange(selectedItem, "M", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_05) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseDataByRange(selectedItem, "5M", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_15) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseDataByRange(selectedItem, "15M", dtpS.Value, dtpE.Value); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_30) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseDataByRange(selectedItem, "30M", dtpS.Value, dtpE.Value); // } // else // { // if (selectedTimeInterval == TimeIntervalEnum.Day) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseData(selectedItem, "D"); // else if (selectedTimeInterval == TimeIntervalEnum.Week) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseData(selectedItem, "W"); // else if (selectedTimeInterval == TimeIntervalEnum.Hour_01) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseData(selectedItem, "H"); // else if (selectedTimeInterval == TimeIntervalEnum.Hour_02) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseData(selectedItem, "2H"); // else if (selectedTimeInterval == TimeIntervalEnum.Hour_05) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseData(selectedItem, "5H"); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_01) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseData(selectedItem, "M"); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_05) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseData(selectedItem, "5M"); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_15) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseData(selectedItem, "15M"); // else if (selectedTimeInterval == TimeIntervalEnum.Minute_30) // sourceDatas = XingContext.Instance.ClientContext.GetCryptoSiseData(selectedItem, "30M"); // } //} //else // sourceDatas = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( // selectedItem // , selectedTimeInterval); //return sourceDatas; }
private void BtnLoadCandle_Click(object sender, EventArgs e) { try { int loadCnt = 5; if (chkIsUseLastCandle.Checked) { loadCnt = 6; } TimeIntervalEnum timeInterval = TimeIntervalEnum.Minute_05; if (cbxTime.SelectedIndex == 1) { timeInterval = TimeIntervalEnum.Minute_10; } else if (cbxTime.SelectedIndex == 2) { timeInterval = TimeIntervalEnum.Minute_30; } else if (cbxTime.SelectedIndex == 3) { timeInterval = TimeIntervalEnum.Hour_01; } else if (cbxTime.SelectedIndex == 4) { timeInterval = TimeIntervalEnum.Hour_02; } var list = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc(rule.ItemCode, timeInterval); var avglist = PPUtils.GetAverageDatas(rule.ItemCode, list, 5); var displayList = list.GetRange(list.Count - 10, 10); chart1.IsAutoScrollX = false; chart1.LoadDataAndApply(rule.ItemCode, displayList, timeInterval, 0); //챠크라 if (rule.BaseCandleItemType == "1") { var newList = list.GetRange(list.Count - 6, loadCnt); var newItem = PP.Chakra.PPUtils.GetMergeCandle(newList); var newList2 = new List <PP.Chakra.S_CandleItemData>(); newList2.Add(newItem); rule.BaseCandleItem = newItem; chartChakra.IsAutoScrollX = false; chartChakra.LoadDataAndApply(rule.ItemCode, newList2, timeInterval, 0); } //양자평균 else if (rule.BaseCandleItemType == "2") { var newList = avglist.GetRange(avglist.Count - 6, loadCnt); var newItem = PP.Chakra.PPUtils.GetMergeCandle(newList); var newList2 = new List <PP.Chakra.S_CandleItemData>(); newList2.Add(newItem); rule.BaseCandleItem = newItem; chartChakra.IsAutoScrollX = false; chartChakra.loadDataAndApply(rule.ItemCode, newList2, timeInterval, 0); } //다이아몬드 else if (rule.BaseCandleItemType == "3") { var newList = list.GetRange(list.Count - 6, loadCnt); var newItem = PP.Chakra.PPUtils.GetMergeDiamondCandle(newList); var newList2 = new List <PP.Chakra.S_CandleItemData>(); var sCandle = newItem.GetCandleItem(); newList2.Add(sCandle); rule.BaseCandleItem = sCandle; chartChakra.IsAutoScrollX = false; chartChakra.loadDataAndApply(rule.ItemCode, newList2, timeInterval, 0); } chartReal.LoadDataAndApply(rule.ItemCode, list, timeInterval, 0); } catch (Exception ex) { MessageBox.Show(ex.Message); } }