using System;
using AxKHOpenAPILib;
namespace KiwoomOpenAPIExample
{
class Program
{
static AxKHOpenAPI axKHOpenAPI;
static void Main(string[] args)
{
// Kiwoom API 초기화
axKHOpenAPI = new AxKHOpenAPI();
axKHOpenAPI.OnReceiveTrData += AxKHOpenAPI_OnReceiveTrData;
// 로그인
axKHOpenAPI.CommConnect();
// 로그인 대기
while (axKHOpenAPI.GetConnectState() != 1)
{
System.Threading.Thread.Sleep(1000);
}
// 일봉 데이터 조회 시작
RequestStockData("005930", "20231006", 0); // 삼성전자, 기준일자 2023년 10월 6일, 첫 요청
}
static void RequestStockData(string stockCode, string baseDate, int prevNext)
{
axKHOpenAPI.SetInputValue("종목코드", stockCode);
axKHOpenAPI.SetInputValue("기준일자", baseDate);
axKHOpenAPI.SetInputValue("수정주가구분", "1"); // 1: 수정주가
axKHOpenAPI.CommRqData("opt10081_req", "opt10081", prevNext, "0101");
}
static void AxKHOpenAPI_OnReceiveTrData(object sender, _DKHOpenAPIEvents_OnReceiveTrDataEvent e)
{
if (e.sRQName == "opt10081_req")
{
int dataCount = axKHOpenAPI.GetRepeatCnt(e.sTrCode, e.sRQName);
for (int i = 0; i < dataCount; i++)
{
string date = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "일자").Trim();
string openPrice = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "시가").Trim();
string highPrice = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "고가").Trim();
string lowPrice = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "저가").Trim();
string closePrice = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "현재가").Trim();
string volume = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "거래량").Trim();
Console.WriteLine($"날짜: {date}, 시가: {openPrice}, 고가: {highPrice}, 저가: {lowPrice}, 종가: {closePrice}, 거래량: {volume}");
}
// 연속 조회 처리
string next = e.sPrevNext;
if (next == "2")
{
// nPrevNext 값을 2로 설정하여 연속 데이터 요청
RequestStockData("005930", "20231006", 2);
}
}
}
}
}
728x90
댓글