/// <summary> /// 분 쿼리일때는 qrycnt /// 일 이상 쿼리일때는 날짜로 가져온다. /// </summary> /// <param name="shcode">101</param> /// <param name="ncnt"></param> /// <param name="qrycnt"></param> /// <param name="cts_date"></param> /// <param name="cts_time"></param> /// <param name="cts_daygb">연속당일구분(0. 연속전체, 1.연속당)</param> public void Query( string shcode , string gubun = "1" , string qrycnt = "100" , string sdate = "" , string edate = "") { ItemCode = shcode; TimeInterval = EnumUtil.GetTimeIntervalValue(gubun, "1"); if (edate == "") { edate = DateTime.Now.AddDays(1).ToString("yyyyMMdd"); } if (gubun == "2") { gubun = "0"; } if (gubun == "3") { gubun = "1"; } if (gubun == "4") { gubun = "2"; } query.SetFieldData(inBlock, "shcode", 0, shcode + ".1"); query.SetFieldData(inBlock, "gubun", 0, gubun); query.SetFieldData(inBlock, "qrycnt", 0, qrycnt); query.SetFieldData(inBlock, "cts_date", 0, ""); query.SetFieldData(inBlock, "sdate", 0, sdate); query.SetFieldData(inBlock, "edate", 0, edate); query.Request(false); }
/// <summary> /// 분 쿼리일때는 qrycnt /// 일 이상 쿼리일때는 날짜로 가져온다. /// </summary> public List <S_CandleItemData> Query( string shcode , string gubun = "1" //1:분 2:일 3:주 , string ncnt = "" // 분일때 60 120 일일때 0 , string qrycnt = "500" ) { TimeInterval = EnumUtil.GetTimeIntervalValue(gubun, ncnt); string tdgb = "0"; //당일구분 string sdate = DateTime.Now.AddYears(Convert.ToInt32(qrycnt) * -1).ToString("yyyyMMdd"); string edate = DateTime.Now.ToString("yyyyMMdd");; string cts_date = ""; string cts_time = ""; string cts_daygb = "0"; if (gubun == "1") { qrycnt = "500"; sdate = edate = ""; } query.SetFieldData(inBlock, "shcode", 0, shcode); query.SetFieldData(inBlock, "gubun", 0, gubun); query.SetFieldData(inBlock, "ncnt", 0, ncnt); query.SetFieldData(inBlock, "qrycnt", 0, qrycnt); query.SetFieldData(inBlock, "tdgb", 0, tdgb); query.SetFieldData(inBlock, "sdate", 0, sdate); query.SetFieldData(inBlock, "edate", 0, edate); query.SetFieldData(inBlock, "cts_date", 0, cts_date); query.SetFieldData(inBlock, "cts_time", 0, cts_time); query.SetFieldData(inBlock, "cts_daygb", 0, cts_daygb); query.Request(false); manualEvent.WaitOne(); return(returnList.OrderBy(t => t.DTime).ToList());; }
public void Query( string shcode , string gubun = "1" , string ncnt = "1" , string qrycnt = "100" , string cts_date = "" , string cts_time = "") { Task.Factory.StartNew(() => { ItemCode = shcode; TimeInterval = EnumUtil.GetTimeIntervalValue(gubun, ncnt); if (cts_date == "") { cts_date = DateTime.Now.ToString("yyyyMMdd"); } query.SetFieldData(inBlock, "shcode", 0, shcode + ".1"); query.SetFieldData(inBlock, "ncnt", 0, ncnt); query.SetFieldData(inBlock, "readcnt", 0, qrycnt); query.SetFieldData(inBlock, "cts_date", 0, cts_date); query.SetFieldData(inBlock, "cts_time", 0, cts_time); query.Request(true); }); }
public static TimeInterval Interval(TimeIntervalEnum interval, int range = 0) { var now = DateTime.Now; TimeInterval timeInterval = new TimeInterval { }; switch (interval) { case TimeIntervalEnum.Day: timeInterval.From = now.Date.AddDays(range); timeInterval.To = timeInterval.From.AddDays(1).AddSeconds(-1); break; case TimeIntervalEnum.Week: timeInterval.From = now.AddDays(-1 * ((7 + now.DayOfWeek - DayOfWeek.Monday) % 7) + range * 7); timeInterval.To = timeInterval.From.AddDays(7).AddSeconds(-1); break; case TimeIntervalEnum.Month: timeInterval.From = new DateTime(now.Year, now.Month, 1).AddMonths(range); timeInterval.To = timeInterval.From.AddMonths(1).AddSeconds(-1); break; case TimeIntervalEnum.Year: timeInterval.From = new DateTime(now.Year, 1, 1).AddYears(range); timeInterval.To = timeInterval.From.AddYears(1).AddSeconds(-1); break; } return(timeInterval); }
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; 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"); }); }
/// <summary> /// 분 쿼리일때는 qrycnt /// 일 이상 쿼리일때는 날짜로 가져온다. /// </summary> /// <param name="shcode">101</param> /// <param name="ncnt"></param> /// <param name="qrycnt"></param> /// <param name="cts_date"></param> /// <param name="cts_time"></param> /// <param name="cts_daygb">연속당일구분(0. 연속전체, 1.연속당)</param> public void Query( string shcode , string gubun = "1" , string ncnt = "1" , string qrycnt = "100" , string cts_date = "" , string cts_time = "") { ItemCode = shcode; TimeInterval = EnumUtil.GetTimeIntervalValue(gubun, ncnt); query.SetFieldData(inBlock, "shcode", 0, shcode + ".1"); query.SetFieldData(inBlock, "ncnt", 0, ncnt); query.SetFieldData(inBlock, "qrycnt", 0, qrycnt); query.SetFieldData(inBlock, "nday", 0, "0"); query.SetFieldData(inBlock, "sdate", 0, cts_date); query.SetFieldData(inBlock, "stime", 0, cts_time); query.SetFieldData(inBlock, "edate", 0, DateTime.Now.AddDays(1).ToString("yyyyMMdd")); query.SetFieldData(inBlock, "etime", 0, cts_time); query.SetFieldData(inBlock, "cts_date", 0, cts_date); query.SetFieldData(inBlock, "cts_time", 0, cts_time); query.SetFieldData(inBlock, "comp_yn", 0, "N"); query.Request(false); }
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"); }); }
public void OnCandleMassPatternHandler(string itemCode, TimeIntervalEnum timeInterval, CandleMassPatternEnum mass) { if (CandleMassPatternHandler != null) { CandleMassPatternHandler(itemCode, timeInterval, mass); } }
private void btnLoadDaemon_Click(object sender, EventArgs e) { try { Button btn = sender as Button; TimeIntervalEnum timeInterval = TimeIntervalEnum.Day; if (btn.Text == "분") { timeInterval = TimeIntervalEnum.Minute_30; } if (btn.Text == "시") { timeInterval = TimeIntervalEnum.Hour_01; } if (btn.Text == "일") { timeInterval = TimeIntervalEnum.Day; } if (btn.Text == "주") { timeInterval = TimeIntervalEnum.Week; } Task.Factory.StartNew(() => { loadSiseDataFromDaemon(timeInterval); }); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public void OnCandleChartPatternHandler(string itemCode, TimeIntervalEnum timeInterval, CandleChartPatternEnum updown) { if (CandleChartPatternHandler != null) { CandleChartPatternHandler(itemCode, timeInterval, updown); } }
public void OnCandleOccurHandler(string itemCode, TimeIntervalEnum timeInterval, int occurCount, PlusMinusTypeEnum pmType) { if (CandleOccurHandler != null) { CandleOccurHandler(itemCode, timeInterval, occurCount, pmType); } }
private void UserToolStrip1_TimerIntervalChangedEvent(object sender, EventArgs e) { timeInterval = (TimeIntervalEnum)sender; Task.Factory.StartNew(() => { loadData(); }); }
public MovingAverageFlowChartForm(TimeIntervalEnum timeInterval = TimeIntervalEnum.Day) { InitializeComponent(); base.setToolStrip(userToolStrip1); InitializeControls(); base.timeInterval = timeInterval; }
private void IntervalButton_Click(object sender, EventArgs e) { var b = sender as ToolStripButton; int n = Convert.ToInt32(b.Tag); if (n == 1) { timeInterval = TimeIntervalEnum.Minute_60; } else if (n == 2) { timeInterval = TimeIntervalEnum.Minute_120; } else if (n == 3) { timeInterval = TimeIntervalEnum.Minute_180; } else if (n == 4) { timeInterval = TimeIntervalEnum.Minute_240; } else if (n == 5) { timeInterval = TimeIntervalEnum.Minute_300; } else if (n == 6) { timeInterval = TimeIntervalEnum.Minute_360; } else if (n == 7) { timeInterval = TimeIntervalEnum.Minute_480; } else if (n == 8) { timeInterval = TimeIntervalEnum.Minute_720; } else if (n == 10) { timeInterval = TimeIntervalEnum.Day; } else if (n == 20) { timeInterval = TimeIntervalEnum.Week; } if (TimerIntervalChangedEvent != null) { TimerIntervalChangedEvent(timeInterval, e); SharedData.SelectedInterval = timeInterval; } setInterval(); }
private void Instance_CandleChartPatternHandler(string itemCode, TimeIntervalEnum timeInterval, CandleChartPatternEnum updown) { this.Invoke(new Action(() => { dgv.Rows.Insert(0, "캔들패턴 ", DateTime.Now.ToString("yy-MM-dd HH:mm:ss"), itemCode, EnumUtil.GetTimeIntervalText(timeInterval), updown, ""); string title = "캔들패턴 시그널"; string msg = $"{itemCode}::{EnumUtil.GetTimeIntervalText(timeInterval)}::{updown}"; ShowNotifyIcon(title, msg); })); }
private void btnLoadDaemon_Click(object sender, EventArgs e) { try { btnLoadDaemonM.BackColor = btnLoadDaemonH.BackColor = btnLoadDaemon2H.BackColor = btnLoadDaemon5H.BackColor = btnLoadDaemonD.BackColor = btnLoadDaemonW.BackColor = Color.White; Button btn = sender as Button; if (btn.Text == "M") { selectedTimeInterval = TimeIntervalEnum.Minute_30; btnLoadDaemonM.BackColor = Color.Red; } if (btn.Text == "H") { selectedTimeInterval = TimeIntervalEnum.Hour_01; btnLoadDaemonH.BackColor = Color.Red; } if (btn.Text == "2H") { selectedTimeInterval = TimeIntervalEnum.Hour_02; btnLoadDaemonH.BackColor = Color.Red; } if (btn.Text == "5H") { selectedTimeInterval = TimeIntervalEnum.Hour_05; btnLoadDaemonH.BackColor = Color.Red; } if (btn.Text == "D") { selectedTimeInterval = TimeIntervalEnum.Day; btnLoadDaemonD.BackColor = Color.Red; } if (btn.Text == "W") { selectedTimeInterval = TimeIntervalEnum.Week; btnLoadDaemonW.BackColor = Color.Red; } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void IntervalButton_Click(object sender, EventArgs e) { var b = sender as ToolStripButton; string n = Convert.ToString(b.Tag); switch (n) { case "01m": timeInterval = TimeIntervalEnum.Minute_01; break; case "05m": timeInterval = TimeIntervalEnum.Minute_05; break; case "10m": timeInterval = TimeIntervalEnum.Minute_10; break; case "15m": timeInterval = TimeIntervalEnum.Minute_15; break; case "30m": timeInterval = TimeIntervalEnum.Minute_30; break; case "01h": timeInterval = TimeIntervalEnum.Hour_01; break; case "02h": timeInterval = TimeIntervalEnum.Hour_02; break; case "03h": timeInterval = TimeIntervalEnum.Hour_03; break; case "04h": timeInterval = TimeIntervalEnum.Hour_04; break; case "05h": timeInterval = TimeIntervalEnum.Hour_05; break; case "06h": timeInterval = TimeIntervalEnum.Hour_06; break; case "08h": timeInterval = TimeIntervalEnum.Hour_08; break; case "12h": timeInterval = TimeIntervalEnum.Hour_12; break; case "D": timeInterval = TimeIntervalEnum.Day; break; case "W": timeInterval = TimeIntervalEnum.Week; break; default: timeInterval = TimeIntervalEnum.Day; break; } if (TimerIntervalChangedEvent != null) { TimerIntervalChangedEvent(timeInterval, e); SharedData.SelectedInterval = timeInterval; } setInterval(); }
/// <summary> /// 분 쿼리일때는 qrycnt /// 일 이상 쿼리일때는 날짜로 가져온다. /// </summary> /// <param name="shcode">101</param> /// <param name="gubun">주기구분(0.틱, 1.분, 2.일, 3.주, 4.월)</param> /// <param name="ncnt"></param> /// <param name="qrycnt"></param> /// <param name="tdgb">당일구분(0.전체, 1.당일만)</param> /// <param name="sdate"></param> /// <param name="edate"></param> /// <param name="cts_date"></param> /// <param name="cts_time"></param> /// <param name="cts_daygb">연속당일구분(0. 연속전체, 1.연속당)</param> public void Query( string shcode = "101" , string gubun = "1" , string ncnt = "1" , string qrycnt = "500" , string tdgb = "0" , string sdate = "" , string edate = "" , string cts_date = "" , string cts_time = "" , string cts_daygb = "0") { if (gubun != "1") { sdate = DateTime.Now.AddYears(-10).ToString("yyyyMMdd"); edate = DateTime.Now.AddDays(1).ToString("yyyyMMdd"); } ItemCode = shcode; TimeInterval = EnumUtil.GetTimeIntervalValue(gubun, ncnt); query.SetFieldData(inBlock, "shcode", 0, shcode); query.SetFieldData(inBlock, "gubun", 0, gubun); query.SetFieldData(inBlock, "ncnt", 0, ncnt); query.SetFieldData(inBlock, "qrycnt", 0, qrycnt); query.SetFieldData(inBlock, "tdgb", 0, tdgb); query.SetFieldData(inBlock, "sdate", 0, sdate); query.SetFieldData(inBlock, "edate", 0, edate); query.SetFieldData(inBlock, "cts_date", 0, cts_date); query.SetFieldData(inBlock, "cts_time", 0, cts_time); if (string.IsNullOrEmpty(cts_date)) { query.Request(false); } else { query.Request(true); } waitHandle.WaitOne(); }
public void SetSourceData( string itemCode , TimeIntervalEnum timeInterval , LitePurushaPrakriti entity) { Task.Factory.StartNew(() => { PurushaPrakriti pp = new PurushaPrakriti(); pp.MappingProperty(entity); try { pp.Interval = (int)timeInterval; pp.Create(); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } }); }
/// <summary> /// 분 쿼리일때는 qrycnt /// 일 이상 쿼리일때는 날짜로 가져온다. /// </summary> public void Query( string shcode , string gubun = "1" //1:분 2:일 3:주 , string ncnt = "" // 분일때 60 120 일일때 0 ) { Task.Factory.StartNew(() => { ItemCode = shcode; TimeInterval = EnumUtil.GetTimeIntervalValue(gubun, ncnt); string qrycnt = "500"; //건수 string tdgb = "0"; //당일구분 string sdate = DateTime.Now.AddYears(-10).ToString("yyyyMMdd"); string edate = DateTime.Now.ToString("yyyyMMdd");; string cts_date = ""; string cts_time = ""; string cts_daygb = "0"; if (gubun == "1") { qrycnt = "500"; sdate = edate = ""; } query.SetFieldData(inBlock, "shcode", 0, shcode); query.SetFieldData(inBlock, "gubun", 0, gubun); query.SetFieldData(inBlock, "ncnt", 0, ncnt); query.SetFieldData(inBlock, "qrycnt", 0, qrycnt); query.SetFieldData(inBlock, "tdgb", 0, tdgb); query.SetFieldData(inBlock, "sdate", 0, sdate); query.SetFieldData(inBlock, "edate", 0, edate); query.SetFieldData(inBlock, "cts_date", 0, cts_date); query.SetFieldData(inBlock, "cts_time", 0, cts_time); query.SetFieldData(inBlock, "cts_daygb", 0, cts_daygb); query.Request(false); }); }
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); } }
/// <summary> /// 분 쿼리일때는 qrycnt /// 일 이상 쿼리일때는 날짜로 가져온다. /// </summary> public void Query( string kind = "S" , string symbol = "" , string gubun = "0" //0:일 1:주 2:월 ) { Task.Factory.StartNew(() => { ItemCode = symbol; if (gubun == "0") { TimeInterval = TimeIntervalEnum.Day; } else if (gubun == "1") { TimeInterval = TimeIntervalEnum.Week; } else if (gubun == "2") { TimeInterval = TimeIntervalEnum.Month; } string qrycnt = "500"; //건수 string cts_date = ""; string cts_time = ""; query.SetFieldData(inBlock, "kind", 0, kind); query.SetFieldData(inBlock, "symbol", 0, symbol); query.SetFieldData(inBlock, "cnt", 0, qrycnt); query.SetFieldData(inBlock, "jgbn", 0, gubun); query.SetFieldData(inBlock, "nmin", 0, ""); query.SetFieldData(inBlock, "cts_date", 0, cts_date); query.SetFieldData(inBlock, "cts_time", 0, cts_time); query.Request(false); }); }
public List <LitePurushaPrakriti> GetSourceData( string itemCode , TimeIntervalEnum timeInterval , string startDate = null , string endDate = null , int cnt = 0) { List <LitePurushaPrakriti> list = new List <LitePurushaPrakriti>(); PurushaPrakriti pp = new PurushaPrakriti(); pp.Item = itemCode; pp.Interval = (int)timeInterval; pp.StartDate = startDate == null ? "" : startDate; pp.EndDate = endDate == null ? "" : endDate; pp.DisplayCount = cnt; try { Entities entities = (Entities)pp.Collect(); foreach (var m in entities.Cast <PurushaPrakriti>()) { var n = new LitePurushaPrakriti( m.OpenVal, m.HighVal, m.LowVal, m.CloseVal, m.Volume, m.DT ); list.Add(n); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } return(list); }
private void btnLoad_Click(object sender, EventArgs e) { if (rdoTIntervalM.Checked) { selectedTimeInterval = TimeIntervalEnum.Minute_30; } else if (rdoTIntervalH.Checked) { selectedTimeInterval = TimeIntervalEnum.Hour_01; } else if (rdoTIntervalD.Checked) { selectedTimeInterval = TimeIntervalEnum.Day; } else if (rdoTIntervalW.Checked) { selectedTimeInterval = TimeIntervalEnum.Week; } if (rdoTypeKIndex.Checked) { selectedType = "국내지수"; } else if (rdoTypeWIndex.Checked) { selectedType = "해외지수"; } else if (rdoTypeWFuture.Checked) { selectedType = "해외선물"; } else if (rdoTypeKItem.Checked) { selectedType = "국내종목"; } if (selectedType == "국내종목") { selectedItem = cbxItem2.SelectedItem.ToString().Substring(0, 6); } else { selectedItem = (cbxItem.SelectedItem as ItemData).Code; } sourceDatas = loadData(); for (int i = 0; i < sourceDatas.Count; i++) { int pIdx = i - 1 < 0 ? 0 : i - 1; int nIdx = i + 1 == sourceDatas.Count ? i : i + 1; sourceDatas[i].PreCandleItem = sourceDatas[pIdx]; sourceDatas[i].NextCandleItem = sourceDatas[nIdx]; } dgv.Rows.Clear(); foreach (var item in sourceDatas) { dgv.Rows.Add(selectedItem , item.OpenPrice.ToString() , item.HighPrice.ToString() , item.LowPrice.ToString() , item.ClosePrice.ToString() , item.PreCandleItem.PreCandleItem.DTime.ToString("yy.MM.dd HH:mm") , item.DTime.ToString("yy.MM.dd HH:mm") , "");; } }
public TradeForecastInfo(string item, TimeIntervalEnum time, string position) { this.Item = item; this.TimeInterval = time; this.Position = position; }
private void Instance_CandleChartPatternHandler(string itemCode, TimeIntervalEnum timeInterval, CandleChartPatternEnum updown) { if (!ucAll.ContainsKey(timeInterval)) { return; } string signal = ""; string result = ""; string soundType = "1"; switch (updown) { case CandleChartPatternEnum.SixStrongUp: signal = "▲▲▲▲▲▲"; result = "▲"; break; case CandleChartPatternEnum.SixStrongDown: signal = "▼▼▼▼▼▼"; result = "▼"; break; case CandleChartPatternEnum.SixWeakUp: signal = "△△△△△△"; result = "△"; break; case CandleChartPatternEnum.SixWeakDown: signal = "▽▽▽▽▽▽"; result = "▽"; break; case CandleChartPatternEnum.FiveStrongUp: signal = "▲▲▲▲▲"; result = "▲"; break; case CandleChartPatternEnum.FiveStrongDown: signal = "▼▼▼▼▼"; result = "▼"; break; case CandleChartPatternEnum.FiveWeakUp: signal = "△△△△△"; result = "△"; break; case CandleChartPatternEnum.FiveWeakDown: signal = "▽▽▽▽▽"; result = "▽"; break; case CandleChartPatternEnum.FourStrongUp: signal = "▲▲▲▲"; result = "▲"; break; case CandleChartPatternEnum.FourStrongDown: signal = "▼▼▼▼"; result = "▼"; break; case CandleChartPatternEnum.FourWeakUp: signal = "△△△△"; result = "△"; break; case CandleChartPatternEnum.FourWeakDown: signal = "▽▽▽▽"; result = "▽"; break; case CandleChartPatternEnum.ThreeStrongUp: signal = "▲▲▲"; result = "▲"; break; case CandleChartPatternEnum.ThreeStrongDown: signal = "▼▼▼"; result = "▼"; break; case CandleChartPatternEnum.ThreeWeakUp: signal = "△△△"; result = "△"; break; case CandleChartPatternEnum.ThreeWeakDown: signal = "▽▽▽"; result = "▽"; break; } if (result == "▲" || result == "▼") { soundType = "2"; } this.Invoke(new Action(() => { var ucList = ucAll[timeInterval]; ucList[itemCode].SetCandle6("", "", DateTime.Now); ucList[itemCode].SetCandle5("", "", DateTime.Now); ucList[itemCode].SetCandle4("", "", DateTime.Now); ucList[itemCode].SetCandle3("", "", DateTime.Now); if (signal.Length == 6) { ucList[itemCode].SetCandle6(signal, result, DateTime.Now); } else if (signal.Length == 5) { ucList[itemCode].SetCandle5(signal, result, DateTime.Now); } else if (signal.Length == 4) { ucList[itemCode].SetCandle4(signal, result, DateTime.Now); } else if (signal.Length == 3) { ucList[itemCode].SetCandle3(signal, result, DateTime.Now); } ucList[itemCode].SetLastTime(DateTime.Now); string title = "캔들패턴 시그널"; string msg = $"{itemCode}::{EnumUtil.GetTimeIntervalText(timeInterval)}::{updown}"; if (selectedItemCode == itemCode && updown != CandleChartPatternEnum.None) { ShowNotifyIcon(title, msg, soundType); } })); }
private void Instance_CandleMassPatternHandler(string itemCode, TimeIntervalEnum timeInterval, CandleMassPatternEnum updown) { if (!ucAll.ContainsKey(timeInterval)) { return; } string signal = ""; string result = ""; string soundType = "1"; switch (updown) { case CandleMassPatternEnum.MassUpUpUp: signal = "↗↗↗"; result = "▲"; break; case CandleMassPatternEnum.MassDownDownDown: signal = "↘↘↘"; result = "▼"; break; case CandleMassPatternEnum.MassDownUpUp: signal = "↘↗↗"; result = "▲"; break; case CandleMassPatternEnum.MassUpDownDown: signal = "↗↘↘"; result = "▼"; break; case CandleMassPatternEnum.MassDownDownUp: signal = "↘↘↗"; result = "△"; break; case CandleMassPatternEnum.MassUpUpDown: signal = "↗↗↘"; result = "▽"; break; case CandleMassPatternEnum.MassDownUpDown: signal = "↘↗↘"; result = "▽"; break; case CandleMassPatternEnum.MassUpDownUp: signal = "↗↘↗"; result = "△"; break; } if (result == "▲" || result == "▼") { soundType = "2"; } this.Invoke(new Action(() => { var ucList = ucAll[timeInterval]; ucList[itemCode].SetMass("", "", DateTime.Now); if (signal.StartsWith("↗") || signal.StartsWith("↘")) { ucList[itemCode].SetMass(signal, result, DateTime.Now); } ucList[itemCode].SetLastTime(DateTime.Now); string title = "캔들패턴 시그널"; string msg = $"{itemCode}::{EnumUtil.GetTimeIntervalText(timeInterval)}::{updown}"; if (selectedItemCode == itemCode && updown != CandleMassPatternEnum.None) { ShowNotifyIcon(title, msg, soundType); } })); }
void loadSiseDataFromDaemon(TimeIntervalEnum timeInterval = TimeIntervalEnum.Day) { var sourceDatas = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc( itemCode , timeInterval); if (sourceDatas == null || sourceDatas.Count == 0) { return; } scList.Clear(); this.Invoke(new Action(() => { dgvList.Rows.Clear(); dgv.Rows.Clear(); lbNoResult.Visible = false; })); WisdomCandleData preData = null; for (int i = 0; i < sourceDatas.Count; i++) { var value = sourceDatas[i]; WisdomCandleData data = new WisdomCandleData( value.ItemCode, Convert.ToDouble(value.OpenPrice), Convert.ToDouble(value.HighPrice), Convert.ToDouble(value.LowPrice), Convert.ToDouble(value.ClosePrice), Convert.ToDouble(value.Volume), Convert.ToDateTime(value.DTime), preData); preData = data; scList.Add(data); } if (scList.Count < 3) { return; } scList.RemoveAt(0); scList.RemoveAt(0); scList.RemoveAt(0); this.Invoke(new Action(() => { for (int i = scList.Count - 1; i >= 0; i--) { var data = scList[i]; string title = data.BasicPrice_Close.ToString("N2"); string date = Convert.ToDateTime(data.DTime).ToString("yy.MM.dd HH:mm"); string tenergy = data.TimeEnergy.ToString("N7"); string senergy = data.SpaceEnergy.ToString("N7"); int index = dgvList.Rows.Add(date, title, senergy, tenergy); dgvList.Rows[index].Tag = data; } dgvList.ClearSelection(); lblCnt.Text = scList.Count.ToString("N0"); Display(); })); }
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); } }
private void btnFileOpen_Click(object sender, EventArgs e) { string path = Environment.CurrentDirectory; string folder = (sender as Button).Text.ToString(); string fullPath = System.IO.Path.Combine(path, "data", folder); if (!System.IO.Directory.Exists(fullPath)) { return; } var fileList = Directory.GetFiles(fullPath); foreach (var f in fileList) { TimeIntervalEnum timeIntervalEnum = TimeIntervalEnum.None; if (f.IndexOf("(720분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Hour_12; } else if (f.IndexOf("(480분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Hour_08; } else if (f.IndexOf("(360분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Hour_06; } else if (f.IndexOf("(300분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Hour_05; } else if (f.IndexOf("(240분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Hour_04; } else if (f.IndexOf("(180분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Hour_03; } else if (f.IndexOf("(120분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Hour_02; } else if (f.IndexOf("(60분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Hour_01; } else if (f.IndexOf("(일)") > -1) { timeIntervalEnum = TimeIntervalEnum.Day; } else if (f.IndexOf("(주)") > -1) { timeIntervalEnum = TimeIntervalEnum.Day; } else if (f.IndexOf("(01분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Minute_01; } else if (f.IndexOf("(05분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Minute_05; } else if (f.IndexOf("(10분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Minute_10; } else if (f.IndexOf("(30분)") > -1) { timeIntervalEnum = TimeIntervalEnum.Minute_30; } if (timeIntervalEnum == TimeIntervalEnum.None) { continue; } List <S_CandleItemData> dummyList = new List <S_CandleItemData>(); using (var reader = new StreamReader(f)) { while (!reader.EndOfStream) { var line = reader.ReadLine(); if (line.StartsWith("[")) { continue; } string[] values = null; if (f.ToUpper().EndsWith(".TXT")) { values = line.Split("\t".ToCharArray()); } else if (f.ToUpper().EndsWith(".CSV")) { values = line.Split(','); } else { values = line.Split(','); } S_CandleItemData data = new S_CandleItemData(); if (timeIntervalEnum == TimeIntervalEnum.Day || timeIntervalEnum == TimeIntervalEnum.Week) { data.DTime = Convert.ToDateTime(values[0].Trim()); data.ItemCode = folder.ToUpper(); data.OpenPrice = Convert.ToSingle(values[1].Trim()); data.HighPrice = Convert.ToSingle(values[2].Trim()); data.LowPrice = Convert.ToSingle(values[3].Trim()); data.ClosePrice = Convert.ToSingle(values[4].Trim()); data.Volume = 0; } else { data.DTime = Convert.ToDateTime(values[0].Trim() + " " + values[1].Trim()); data.ItemCode = folder.ToUpper(); data.OpenPrice = Convert.ToSingle(values[2].Trim()); data.HighPrice = Convert.ToSingle(values[3].Trim()); data.LowPrice = Convert.ToSingle(values[4].Trim()); data.ClosePrice = Convert.ToSingle(values[5].Trim()); data.Volume = 0; } dummyList.Add(data); } } dummyList.Reverse(); foreach (var data in dummyList) { try { PPContext.Instance.ClientContext.SetCandleSourceData(data.ItemCode, timeIntervalEnum, data); LogWrite($"date : {data.DTime} opne : {data.OpenPrice} high : {data.HighPrice} low : {data.LowPrice} close : {data.ClosePrice} "); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } } } }