Example #1
0
        void OnReceiveRealCondition(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveRealConditionEvent e)
        {
            try
            {
                string 종목코드  = e.sTrCode;
                string 조건식번호 = e.strConditionIndex;
                string 조건명   = e.strConditionName;

                ConditionObject conditionObject = conditionObjectList.Find(o => o.조건식번호 == int.Parse(조건식번호));

                if (conditionObject != null)
                {
                    if (e.strType == "I") // 종목 편입
                    {
                        insertListBox.Items.Add("편입 => 코드:" + 종목코드 + " |번호: " + 조건식번호 + " |조건명: " + 조건명);

                        axKHOpenAPI1.SetInputValue("종목코드", 종목코드);
                        axKHOpenAPI1.CommRqData("편입종목정보요청;" + 조건식번호, "opt10001", 0, "5005"); // OnReceiveTrData 로 전달됨
                    }
                    else if (e.strType == "D")                                               // 종목 이탈
                    {
                        deleteListBox.Items.Add("이탈 => 코드: " + 종목코드 + " |번호: " + 조건식번호 + " |조건명: " + 조건명);
                        ItemObject itemObject = conditionObject.itemObjectList.Find(o => o.종목코드 == 종목코드);

                        if (itemObject != null)
                        {
                            conditionObject.itemObjectList.Remove(itemObject);           // 객체에서 제거
                            for (int i = 0; i < conditionItemDataGridView.RowCount; i++) // UI에서 제거
                            {
                                if ((string)conditionItemDataGridView["종목코드", i].Value == 종목코드)
                                {
                                    conditionItemDataGridView.Rows.RemoveAt(i);
                                    break;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception error)
            {
                Console.WriteLine("OnReceiveRealCondition 메소드 Exception:");
                Console.WriteLine(error.ToString());
            }
        }
Example #2
0
        void OnReceiveTrData(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            string 현재가_ = "";

            try
            {
                if (e.sRQName.Contains("조건종목정보"))
                {
                    int codeCount = axKHOpenAPI1.GetRepeatCnt(e.sTrCode, e.sRQName);
                    Console.WriteLine("종목수:" + codeCount);

                    if (!e.sRQName.Contains("다음"))
                    {
                        conditionItemDataGridView.Rows.Clear();
                        conditionObjectList[rowIndex].itemObjectList.Clear();
                    }

                    for (int i = 0; i < codeCount; i++)
                    {
                        string 종목코드 = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "종목코드").Trim();
                        string 종목명  = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "종목명").Trim();
                        long   현재가  = long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "현재가").Trim());
                        double 등락율  = double.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "등락율").Trim());
                        int    전일대비 = int.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "전일대비").Trim());
                        long   거래량  = long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "거래량").Trim());

                        conditionItemDataGridView.Rows.Add(종목코드, 종목코드, 종목명, 현재가, 등락율, 전일대비, 거래량);

                        /*
                         * conditionItemDataGridView["종목코드", i].Value = 종목코드;
                         * conditionItemDataGridView["종목명", i].Value = 종목명;
                         * conditionItemDataGridView["현재가", i].Value = 현재가;
                         * conditionItemDataGridView["등락율", i].Value = 등락율;
                         * conditionItemDataGridView["전일대비", i].Value = 전일대비;
                         * conditionItemDataGridView["거래량", i].Value = 거래량;
                         */
                        if (rowIndex > -1)
                        {
                            conditionObjectList[rowIndex].itemObjectList.Add(new ItemObject(종목코드, 종목명, 현재가, 등락율, 전일대비, 거래량));
                        }
                    }
                }
                else if (e.sRQName.Contains("편입종목정보요청"))
                {
                    string[] rqNameArray = e.sRQName.Split(';');
                    int      조건식번호       = int.Parse(rqNameArray[1]);

                    ConditionObject conditionObject = conditionObjectList.Find(o => o.조건식번호 == 조건식번호);

                    /*
                     * string 종목코드 = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "종목코드").Trim();
                     * string 종목명 = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "종목명").Trim();
                     * long 현재가 = long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "현재가").Trim());
                     * double 등락율 = double.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "등락율").Trim());
                     * int 전일대비 = int.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "전일대비").Trim());
                     * long 거래량 = long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "거래량").Trim());
                     */

                    string 종목코드    = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "종목코드").Trim();
                    string 종목명     = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "종목명").Trim();
                    string str현재가  = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "현재가").Trim();
                    long   현재가     = string.IsNullOrEmpty(str현재가) ? 0 : long.Parse(str현재가);
                    string str등락율  = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "등락율").Trim();
                    double 등락율     = string.IsNullOrEmpty(str등락율) ? 0 : double.Parse(str등락율);
                    string str전일대비 = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "전일대비").Trim();
                    int    전일대비    = string.IsNullOrEmpty(str전일대비) ? 0 : int.Parse(str전일대비);
                    string str거래량  = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "거래량").Trim();
                    long   거래량     = string.IsNullOrEmpty(str거래량) ? 0 : int.Parse(str거래량);

                    // 객체에 편입
                    conditionObject.itemObjectList.Add(new ItemObject(종목코드, 종목명, 현재가, 등락율, 전일대비, 거래량));

                    // UI에 편입
                    conditionItemDataGridView.Rows.Insert(0);

                    conditionItemDataGridView["종목코드", 0].Value = 종목코드;
                    conditionItemDataGridView["종목명", 0].Value  = 종목명;
                    conditionItemDataGridView["현재가", 0].Value  = 현재가;
                    conditionItemDataGridView["등락율", 0].Value  = 등락율;
                    conditionItemDataGridView["전일대비", 0].Value = 전일대비;
                    conditionItemDataGridView["거래량", 0].Value  = 거래량;
                }
            }
            catch (Exception error)
            {
                Console.WriteLine("OnReceiveTrData 메소드 Exception:");
                Console.WriteLine("현재가:@@" + 현재가_ + "@@");
                Console.WriteLine(error.ToString());
            }
        }