Application/C# (WinForm)

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

devsalix 2023. 3. 2. 17:26
728x90

현재 잔고를 가져오기 위해서는 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_OnReceiveTrData(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
{
	if (e.sRQName.IndexOf("계좌평가현황요청") >= 0)
	{
		string[] strRQData = e.sRQName.Split(';');
		int nCnt = m_axKHOpenAPI.GetRepeatCnt(e.sTrCode, e.sRQName);
		if (nCnt > 0)
		{
			for (int nIdx = 0; nIdx < nCnt; nIdx++)
			{
				string str종목코드 = m_axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, nIdx, "종목코드").Trim();
				string str종목명 = m_axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, nIdx, "종목명").Trim();
				int i보유수량 = int.Parse(m_axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, nIdx, "보유수량").Trim());
				double d평균단가 = double.Parse(m_axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, nIdx, "평균단가").Trim());
				double d매입금액 = double.Parse(m_axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, nIdx, "매입금액").Trim());
				double d현재가 = double.Parse(m_axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, nIdx, "현재가").Trim());
				
				//...
			}
		}
	}
}

 

 


제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀

 

 
728x90
반응형