예제 #1
0
        /// <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);
        }
예제 #2
0
파일: Api_Jongmok.cs 프로젝트: aum-inv/AUM
        /// <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());;
        }
예제 #3
0
        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);
            });
        }
예제 #4
0
        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);
        }
예제 #5
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;

            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");
            });
        }
예제 #6
0
        /// <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);
        }
예제 #7
0
        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");
            });
        }
예제 #8
0
파일: PPEvents.cs 프로젝트: aum-inv/AUM
 public void OnCandleMassPatternHandler(string itemCode, TimeIntervalEnum timeInterval, CandleMassPatternEnum mass)
 {
     if (CandleMassPatternHandler != null)
     {
         CandleMassPatternHandler(itemCode, timeInterval, mass);
     }
 }
예제 #9
0
        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);
            }
        }
예제 #10
0
파일: PPEvents.cs 프로젝트: aum-inv/AUM
 public void OnCandleChartPatternHandler(string itemCode, TimeIntervalEnum timeInterval, CandleChartPatternEnum updown)
 {
     if (CandleChartPatternHandler != null)
     {
         CandleChartPatternHandler(itemCode, timeInterval, updown);
     }
 }
예제 #11
0
파일: PPEvents.cs 프로젝트: aum-inv/AUM
 public void OnCandleOccurHandler(string itemCode, TimeIntervalEnum timeInterval, int occurCount, PlusMinusTypeEnum pmType)
 {
     if (CandleOccurHandler != null)
     {
         CandleOccurHandler(itemCode, timeInterval, occurCount, pmType);
     }
 }
예제 #12
0
파일: BaseForm.cs 프로젝트: aum-inv/AUM
 private void UserToolStrip1_TimerIntervalChangedEvent(object sender, EventArgs e)
 {
     timeInterval = (TimeIntervalEnum)sender;
     Task.Factory.StartNew(() =>
     {
         loadData();
     });
 }
예제 #13
0
        public MovingAverageFlowChartForm(TimeIntervalEnum timeInterval = TimeIntervalEnum.Day)
        {
            InitializeComponent();
            base.setToolStrip(userToolStrip1);
            InitializeControls();

            base.timeInterval = timeInterval;
        }
예제 #14
0
        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();
        }
예제 #15
0
        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);
            }));
        }
예제 #16
0
        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);
            }
        }
예제 #17
0
        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();
        }
예제 #18
0
        /// <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();
        }
예제 #19
0
파일: PPService.cs 프로젝트: aum-inv/AUM
        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);
                }
            });
        }
예제 #20
0
        /// <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);
            });
        }
예제 #21
0
        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);
            }
        }
예제 #22
0
        /// <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);
            });
        }
예제 #23
0
파일: PPService.cs 프로젝트: aum-inv/AUM
        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);
        }
예제 #24
0
        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")
                             , "");;
            }
        }
예제 #25
0
 public TradeForecastInfo(string item, TimeIntervalEnum time, string position)
 {
     this.Item         = item;
     this.TimeInterval = time;
     this.Position     = position;
 }
예제 #26
0
        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);
                }
            }));
        }
예제 #27
0
        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);
                }
            }));
        }
예제 #28
0
        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();
            }));
        }
예제 #29
0
        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);
            }
        }
예제 #30
0
파일: XingAppForm.cs 프로젝트: aum-inv/AUM
        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);
                    }
                }
            }
        }