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()); } }
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()); } }