728x90

전체 글 260

[MFC] Static 글자 색 및 배경 색 변경

MFC에서 Static 컨트롤 및 다른 컨트롤의 글자색 및 배경색을 변경하려고 할 때는 OnCtlColor 함수를 이용하면 됩니다 MFC 클래스 마법사를 이용하여 메시지 탭에서 WM_CTLCOLOR 를 선택 후 처리기를 추가합니다 이후 추가된 처리기에 아래와 같이 작성해 주면 됩니다 HBRUSH CDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 여기서 DC의 특성을 변경합니다. switch(pWnd->GetDlgCtrlID()) { case IDC_STATIC_NOTICE: pDC->SetBkColor(RGB(0, 0, 0)); pDC..

Application/MFC 2023.03.14

[MFC] CMD로 명령어 실행 하기

CMD로 특정 명령어를 실행하고 완료시까지 대기를 하려면 SHELLEXECUTEINFO 구조체를 사용해서 ShellExecuteEx SellAPI를 이용하면 됩니다 void CMyClass::Commander(CString strCommand) { SHELLEXECUTEINFO ExecInfo; memset(&ExecInfo, NULL, sizeof(SHELLEXECUTEINFO)); ExecInfo.cbSize = sizeof(ExecInfo); ExecInfo.lpVerb = _T("open"); ExecInfo.lpFile = _T("cmd.exe"); ExecInfo.lpParameters = strCommand; ExecInfo.fMask = SEE_MASK_FLAG_NO_UI | SEE_MAS..

Application/MFC 2023.03.13

[C# WinForm] 키움 증권 Open API 분봉차트 가져오기

특정 종목의 분봉차트를 가져오고 싶다면 opt10080 TR 코드를 사용해서 가져올 수 있습니다 //종목코드 = 전문 조회할 종목코드 SetInputValue("종목코드", "입력값 1"); //틱범위 = 1:1분, 3:3분, 5:5분, 10:10분, 15:15분, 30:30분, 45:45분, 60:60분 SetInputValue("틱범위", "입력값 2"); //수정주가구분 = 0 or 1, 수신데이터 1:유상증자, 2:무상증자, 4:배당락, 8:액면분할, 16:액면병합, 32:기업합병, 64:감자, 256:권리락 SetInputValue("수정주가구분", "입력값 3"); //Tr 요청 CommRqData( "주식분봉차트조회요청","opt10080","0", "화면번호"); 위의 방식으로 Tr을 요청..

[MFC] 난수 생성하기(랜덤 값 생성)

랜덤 한 값을 생성하고 싶을 때 srand 함수를 이용해서 난수표를 만든 후 값을 가져옵니다 srand((unsigned int)time(NULL)); int iRand = rand() % 1000; 위와 같이 작성할 경우 1000 미만의 난수를 발생시킬 수 있습니다 하지만 쓰레드 같이 거의 동시에 난수를 발생할 경우 같은 값을 가지는 경우가 생깁니다 이를 회피하고자 현재 시간의 millisecond 단위를 활용해 프로그램을 구동시키면 다른 난수값을 가져올 수 있는 것을 확인할 수 있습니다 SYSTEMTIME st; GetLocalTime(&st); srand((unsigned int)st.wMilliseconds); int iRand = rand() % 1000; 위와 같이 작성하면 됩니다 제 글이 도..

Application/MFC 2023.03.08

[C# WinForm] 키움 증권 Open API 조회횟수 제한

키움 증권 Open API를 이용할 시 사용제한이 되는 경우가 있습니다 조회 요청으로 CommRqData / SendCondition / CommKwRqData 3가지가 묶음으로 1초당 5회로 제한되며 주문 요청으로 SendOrder / SendOrderFO / SendOrderCredit 3가지가 묶음으로 1초당 5회로 제한됩니다 이를 회피하기 위해서는 Thread를 활용해 주문 요청을 하고 순차적으로 처리하는 방식으로 프로그래밍되어야 합니다 간단한 예제로 0.3초당 1건의 데이터와 1시간에 1천 건의 데이터를 처리하는 구문은 아래와 같습니다 using System.Collections; private static int m_iOrderCount; private static DateTime m_dtOr..

[C# WinForm] 키움 증권 OpenAPI 당일 순익률 가져오기

당일 수익률을 가져오기 위한 TR 코드는 opt10074를 이용하면 됩니다 해당 코드를 이용할 시 당일 매수금액 / 매도 금액 / 매도손익금 / 수수료+세금 값을 가져올 수 있습니다 아래와 같이 코드를 작성해서 OpenAPI를 통해 메시지를 전달합니다 m_axKHOpenAPI.SetInputValue("계좌번호", {계좌번호}); m_axKHOpenAPI.SetInputValue("시작일자", DateTime.Now.ToString("yyyyMMdd")); m_axKHOpenAPI.SetInputValue("종료일자", DateTime.Now.ToString("yyyyMMdd")); m_axKHOpenAPI.CommRqData("일자별실현손익요청", "opt10074", 0, "0200"); 이후 OnR..

[C# WinForm] 키움 증권 Open API 잔고 가져오기

현재 잔고를 가져오기 위해서는 TR 코드의 OPW00004 를 이용하면 됩니다 우선 SetInputValue 를 진행 후 TRData를 요청합니다 m_axKHOpenAPI.SetInputValue("계좌번호", "계좌번호"); m_axKHOpenAPI.SetInputValue("비밀번호", ""); m_axKHOpenAPI.SetInputValue("상장폐지조회구분", "0"); m_axKHOpenAPI.SetInputValue("비밀번호입력매체구분", "00"); m_axKHOpenAPI.CommRqData("계좌평가현황요청", "OPW00004", 0, "0200"); 이후 수신받은 ReceiveTrData 에서 처리 구문을 추가하면 됩니다 private void m_axKHOpenAPI1_OnRec..

[C# WinForm] 키움 증권 Open API 전 종목 실시간 데이터 등록하기

키움 증권 Open API를 이용하여 현재 키움 증권에 등록된 전 종목의 데이터를 실시간으로 가져오기 위해서는 GetCodeListByMarket 함수를 이용해 모든 종목을 조회하여 SetRealReg 데이터로 등록을 진행하면 됩니다 우선 로그인 이후 아래와 같이 작성해 주면 전 종목을 실시간 데이터로 등록이 가능합니다 public enum ENUM_REAL_주식체결 : int { 체결시간 = 20, 현재가 = 10, 전일대비 = 11, 등락율 = 12, 최우선_매도호가 = 27, 최우선_매수호가 = 28, 거래량 = 15, 누적거래량 = 13, 누적거래대금 = 14, 시가 = 16, 고가 = 17, 저가 = 18, 전일대비기호 = 25, 전일거래량대비 = 26, 거래대금증감 = 29, 전일거래량대비_비..

[공식] 주식 수익률 계산

수익률의 계산 공식은 다음과 같습니다 1-1. 매도 전 수익률 공식((현재가 - 평균 매수가) / 평균 매수가) * 100 = 수익률 1-2. 매도 전 수익 금액 공식(현재가 - 평균 매수가) * 매수 량 = 수익 금액 2-1.  매도 후 수익률 공식((평균 매도가 - 평균 매수가) / 평균 매수가) * 100 = 수익률 2-2. 매도 후 수익 금액 공식(평균 매도가 - 평균 매수가 ) * 매수 량 = 수익 금액 위의 계산 공식으로 작성하면 수익률 및 수익 금액을 계산할 수 있습니다  제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀

정보/공식 2023.02.27

[C# WinForm] 키움 증권 Open API 사용법 (OCX 사용)

키움증권 계좌 개설 및 OpenAPI 사용 신청 등 다른 초기 준비사항은 제외하고 포스팅 하겠습니다 아래 페이지로 접속하셔서 키움 Open API+ 모듈을 다운로드합니다 https://www.kiwoom.com/h/customer/download/VOpenApiInfoView 키움증권 대한민국 주식시장 점유율 1위 www.kiwoom.com 모듈 다운로드 후 설치를 하면 C:\OpenAPI 위치에 API 파일들이 설치가 진행됩니다 이후 비주얼스튜디오 C# 코드를 열어서 솔루션 탐색기에서 참조 위치를 마우스 오른쪽 버튼으로 눌러 추가합니다 설치된 C:\OpenAPI 폴더 내 khopenapi.ocx 를 선택 후 확인을 눌러줍니다 이후 도구 상자에서 오른쪽 마우스 클릭하여 항목 선택을 눌러 줍니다 도구 상자..

[C# WinForm] 시간 차 구하기 (DateTime, TimeSpan)

두 시간의 차이를 구하고자 하면 TimeSpan 구조체를 쓰면 됩니다 TimeSpan tsStart = new TimeSpan(DateTime.Now.Ticks); ..... TimeSpan tsFinish = new TimeSpan(DateTime.Now.Ticks); TimeSpan tsGap = tsFinish.Subtract(tsStart); int iGapMilliSecond = (int)(tsGap.Ticks / 10000); 이렇게 작성하면 Start 와 Finish 의 차이를 알 수 있고 틱으로 계산을 하면 MilliSecond까지 구할 수 있습니다

728x90
반응형