티스토리 뷰

코딩/C#

C# 키움증권 Open API (2) - 로그인 구현

개발자 조엘 2022. 8. 23. 15:55

서론


이제 본격적으로 키움증권 Open API를 통해 기능을 구현할 차례입니다. 제일 첫번째로 우선 로그인 기능을 구현한 뒤, 로그인된 키움증권 계정의 전체 계좌 정보, 사용자 아이디, 사용자 명 등을 가져오는 동작을 구현해보도록 하겠습니다.GetLoginInfo

C#으로 키움증권 Open API (1) - 사용하기 링크

C#으로 키움증권 Open API 사용하기 (1)
키움증권 Open API 를 활용하여 증권 데이터를 다양하게 활용할 수 없을지 생각하게 되었습니다. 찾아보니 대부분 파이썬으로 구현되어있긴했는데, 저에게 제일 익숙한 C# 으로 구현하는 방법에 대해서 찾아보게되었습니다. 키움증권 Open API 를 C# 으로 구현하기 위한 사전 작업에 대한 포스팅을 하겠습니다. C# 으로 키움증권 Open API 를 사용하기 위한 사전 작업에 대해서 포스팅했습니다.
https://joel-helloworld.tistory.com/68

C#으로 키움증권 Open API (3) - 예수금 및 종목 정보 조회 링크

C# 키움증권 Open API (3) - 예수금 및 종목 정보 조회
서론 C# 으로 키움증권 Open API 활용하여 프로그램을 구현하는 방법에 대한 포스팅 3탄입니다. 이번엔 좀 더 응용된 기능을 구현해보려고 합니다. 우선 선택한 계좌의 예수금 조회 를 추가하려고 합니다. 이후 주..
https://joel-helloworld.tistory.com/70

1. 로그인 기능 만들기


💡
본격적으로 키움증권 API를 활용한 동작을 구현해보도록 하겠습니다. 로그인, 연결 확인 기능을 만들기 위해 Button 2개와 로그를 보여줄 RichTextBox를 추가합니다.

private void Form1_Load(object sender, EventArgs e)
{
    InitializeEvents();
}

private void InitializeEvents()
{
    // KHOpenAPI Control
    axKHOpenAPI1.OnEventConnect += (s, e) =>
    {
        if (e.nErrCode == 0)
            WriteLog("로그인 성공"); // 정상 처리
        else
            WriteLog(e.nErrCode.ToString()); // 에러 발생
    };

    // 로그인 버튼
    btnLogin.Click += (s, e) =>
    {
        if (axKHOpenAPI1.CommConnect() == 0)
            WriteLog("로그인창 열기 성공");
        else
            WriteLog("로그인창 열기 실패");
    };

    // 연결 확인 버튼
    btnCheckConnect.Click += (s, e) =>
    {
        if (axKHOpenAPI1.GetConnectState() == 0)
            WriteLog("Open API 연결되어 있지 않습니다.");
        else
            WriteLog("Open API 연결 중입니다.");
    };
}

private void WriteLog(string message)
{
    rtxtLog.AppendText($@"{message}
");
    rtxtLog.SelectionStart = rtxtLog.Text.Length;
    rtxtLog.ScrollToCaret();
}
💡
로그인 버튼로그아웃 버튼이벤트를 추가합니다.
💡
로그인CommConnect 를 통해 로그인 창을 띄워서 동작할 수 있습니다.
💡
로그아웃의 경우 CommTerminate 를 통해 구현할 수 있었는데 더 이상 지원하지 않습니다. 웃기게도 로그인은 가능한데 Open API에 로그아웃 기능은 없다!
💡
로그인 버튼은 로그인 창을 띄우는 것이지 로그인을 하는 기능이 아닙니다! 즉 로그인 창을 통해 로그인이 성공적으로 되었는지 확인하는 이벤트는 OnEventConnect를 통해 알 수 있습니다. 0이면 정상 처리 0이 아니면 에러 코드입니다.
💡
연결 확인GetConnectState를 통해 알 수 있습니다.

💡
axKHOpenAPI1은 1번째 포스팅에서 추가했던 KHOpenAPI Control의 Name 입니다.

💡
로그인 버튼을 누른 결과입니다. 키움증권 로그인 창이 출력됩니다.
💡
키움증권 ID비밀번호를 입력해서 로그인을 하면 됩니다.

💡
로그인 창 띄우기로그인 성공연결 확인 결과입니다.

2. 로그인 정보 읽어오기


💡
로그인 계정의 정보를 읽어오기 위해 Button과 Label, TextBox 컨트롤을 추가합니다.

// 정보 조회
btnLoginInfo.Click += (s, e) =>
{
    // 계좌 개수
    txtAcctCount.Text = axKHOpenAPI1.GetLoginInfo("ACCOUNT_CNT");

    // 전체 계좌 정보 (계좌별 구분 - ";")
    txtAcctInfo.Text = axKHOpenAPI1.GetLoginInfo("ACCNO");

    // 사용자 ID
    txtUserID.Text = axKHOpenAPI1.GetLoginInfo("USER_ID");

    // 사용자명
    txtUserName.Text = axKHOpenAPI1.GetLoginInfo("USER_NAME");

    // 키보드 보안 해지 여부 (0 정상, 1 해지)
    txtKeyProtect.Text = axKHOpenAPI1.GetLoginInfo("KEY_BSECGB");

    // 방화벽 설정 여부 (0 미설정, 1 설정, 2 해지)
    txtFirewall.Text = axKHOpenAPI1.GetLoginInfo("FIREW_SECGB");
};
💡
로그인 계정의 정보GetLoginInfo(TAG)를 통해 읽어올 수 있습니다.
💡
계좌 개수, 전체 계좌 정보, 사용자 ID, 사용자명, 키보드 보안 해지 여부, 방화벽 설정 여부를 알 수 있고 각 TAG는 코드에 적혀있는대로입니다.
💡
전체 계좌 정보“;”으로 구분되어 전체가 하나의 string으로 읽어옵니다. ex) 1001001011;1001001012;1001001013;

💡
로그인 계정의 정보를 정상적으로 읽어온 모습입니다.

// 정보 조회
btnLoginInfo.Click += (s, e) =>
{
    // 계좌 개수
    txtAcctCount.Text = axKHOpenAPI1.GetLoginInfo("ACCOUNT_CNT");

    // 전체 계좌 정보 (계좌별 구분 - ";")
    cboAcctInfo.Items.AddRange(axKHOpenAPI1.GetLoginInfo("ACCNO").Split(';'));
    cboAcctInfo.SelectedIndex = 0;

    // 사용자 ID
    txtUserID.Text = axKHOpenAPI1.GetLoginInfo("USER_ID");

    // 사용자명
    txtUserName.Text = axKHOpenAPI1.GetLoginInfo("USER_NAME");
};
💡
마지막으로 그다지 필요없는 정보는 없에고 전체 계좌 정보ComboBox로 구현하도록 변경했습니다.

마무리


키움증권 Open API를 C# Winform을 통해 구현하는 방법에 대해서 포스팅을 이어가고 있습니다. 이번 포스팅에서는 로그인부터 로그인 계정 정보를 가져오는 부분까지였습니다. 다음 포스팅부터 본격적으로 증권 데이터를 읽어오는 동작에 대해서 포스팅을 이어가겠습니다.

C#으로 키움증권 Open API (1) - 사용하기 링크

C#으로 키움증권 Open API 사용하기 (1)
키움증권 Open API 를 활용하여 증권 데이터를 다양하게 활용할 수 없을지 생각하게 되었습니다. 찾아보니 대부분 파이썬으로 구현되어있긴했는데, 저에게 제일 익숙한 C# 으로 구현하는 방법에 대해서 찾아보게되었습니다. 키움증권 Open API 를 C# 으로 구현하기 위한 사전 작업에 대한 포스팅을 하겠습니다. C# 으로 키움증권 Open API 를 사용하기 위한 사전 작업에 대해서 포스팅했습니다.
https://joel-helloworld.tistory.com/68

C#으로 키움증권 Open API (3) - 예수금 및 종목 정보 조회 링크

C# 키움증권 Open API (3) - 예수금 및 종목 정보 조회
서론 C# 으로 키움증권 Open API 활용하여 프로그램을 구현하는 방법에 대한 포스팅 3탄입니다. 이번엔 좀 더 응용된 기능을 구현해보려고 합니다. 우선 선택한 계좌의 예수금 조회 를 추가하려고 합니다. 이후 주..
https://joel-helloworld.tistory.com/70

Uploaded by N2T

댓글