키움 Open API+

[키움 Open API+] 컨트롤 이벤트 1 - OnReceiveTrData, OnReceiveRealData

BlueSwamp 2022. 1. 9. 10:35
반응형

키움 Open API+ 컨트롤 이벤트와 OnReceiveTrData, OnReceiveRealData에 대해서 알아보겠습니다.

 

Open API+ 컨트롤 이벤트

C#에서는 컨트롤 이벤트 앞에 axKHOpenAPI가 붙어 있으며 이벤트 목록은 다음과 같습니다.

예) axKHOpenAPI_OnReceiveTrData, axKHOpenAPI_OnReceiveRealData

이름 설명
OnReceiveTrData Tran 수신시 이벤트
OnReceiveRealData 실시간 시세 이벤트
OnReceiveMsg 수신 메시지 이벤트
OnReceiveChejanData 주문 접수/확인 수신시 이벤트
OnEventConnect 통신 연결 상태 변경시 이벤트
OnReceiveCondition 조건검색 실시간 편입, 이탈 종목 이벤트
OnReceiveTrCondition 조건검색 조회 응답 이벤트
OnReceiveConditionVer 로컬에 사용자조건식 저장 성공여부 응답 이벤트
반응형

OnReceiveTrData

OnReceiveTrData는 서버 통신 후 요청한 TR((Transaction) 데이터를 받은 시점을 확인하고, 수신한 TR 데이터 정보를 확인할 수 있습니다. 함수의 원형은 다음과 같습니다.

void axKHOpenAPI_OnReceiveTrData(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
private void axKHOpenAPI_OnReceiveTrData(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
{
 
    if (e.sRQName == "주식주문")
    {
        string s원주문번호 = axKHOpenAPI.GetCommData(e.sTrCode, ""0"").Trim();
 
        long n원주문번호 = 0;
        bool canConvert = long.TryParse(s원주문번호, out n원주문번호);
 
        if (canConvert == true)
            txt원주문번호.Text = s원주문번호;
        else
            Logger(Log.에러, "잘못된 원주문번호 입니다");
 
    }
    // OPT1001 : 주식기본정보
    else if (e.sRQName == "주식기본정보")
    {
        int nCnt = axKHOpenAPI.GetRepeatCnt(e.sTrCode, e.sRQName);
 
        for (int i = 0; i < nCnt; i++)
        {
            Logger(Log.조회, "{0} | 현재가:{1:N0} | 등락율:{2} | 거래량:{3:N0} ",
                axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목명").Trim(),
                Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "현재가").Trim()),
                axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "등락율").Trim(),
                Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "거래량").Trim()));
        }
    }
    // OPT10081 : 주식일봉차트조회
    else if (e.sRQName == "주식일봉차트조회")
    {
        int nCnt = axKHOpenAPI.GetRepeatCnt(e.sTrCode, e.sRQName);
 
        for (int i = 0; i < nCnt; i++)
        {
            Logger(Log.조회, "{0} | 현재가:{1:N0} | 거래량:{2:N0} | 시가:{3:N0} | 고가:{4:N0} | 저가:{5:N0} ",
                axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "일자").Trim(),
                Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "현재가").Trim()),
                Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "거래량").Trim()),
                Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "시가").Trim()),
                Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "고가").Trim()),
                Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "저가").Trim()));
        }
    }
 
}
cs

TR 요청은 주식 주문, 주식기본정보, 주식일봉차트조회 등 다양한 TR이 있으며, 요청 가능한 TR 목록은 KOA StudioSA에서 확인 가능합니다.(KOA StudioSA는 키움증권 사이트에서 최신 버전을 받을 수 있습니다.)

TR 요청은 추후에 더 자세히 살펴보도록 하겠습니다.

반응형

OnReceiveRealData

OnReceiveRealData는 실시간 데이터를 받은 시점을 확인하고, 실시간 데이터 정보를 확인할 수 있습니다. 함수의 원형은 다음과 같습니다.

void axKHOpenAPI_OnReceiveRealData(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveRealDataEvent e)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void axKHOpenAPI_OnReceiveRealData(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveRealDataEvent e)
{
    Logger(Log.실시간, "종목코드 : {0} | RealType : {1} | RealData : {2}",
        e.sRealKey, e.sRealType, e.sRealData);
 
    if( e.sRealType == "주식시세" )
    {
        Logger(Log.실시간, "종목코드 : {0} | 현재가 : {1:C} | 등락율 : {2} | 누적거래량 : {3:N0} ",
                e.sRealKey,
                Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 10).Trim()),
                axKHOpenAPI.GetCommRealData(e.sRealType, 12).Trim(),
                Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 13).Trim()));
    }
    
}
cs

실시간 데이터는 주시시세, 주식체결, 주식호가잔량, 잔고 등 다양한 실시간 정보를 확인할 수 있으며, 확인 가능한 실시간 목록은 KOA StudioSA에서 확인 가능합니다.(KOA StudioSA는 키움증권 사이트에서 최신 버전을 받을 수 있습니다.)

실시간 처리도 추후에 더 자세히 살펴보도록 하겠습니다.

 

반응형