이트레이드 API 사용해보기

준비물

TR Header Files (2010.03.19) - Header(2010.03.19)[0].zip


< t0431 >

  (1) t0431OutBlock1.price 의 크기 수정(2010.03.11)

     - 6.2 -> 9.2

 

< t0433 >

  (1) Attribute 사용이라고 선언되어 있으나 현실적으로는 Attribute를 사용하고 있지 않음

 

< 유가증권 주문번호 10자리 증가 >

  (1) 4월 2일 반영예정인 TR들. 자세한 내용은 공지를 확인하여주시기 바랍니다.




RES Files (2010.04.09) - Res(2010.04.09).zip 

RES File 2010.04.09 버전입니다.




DLL 버전 Program Files (2010.04.09) - Programs(2010.04.09).zip

DLL 버전 Program File 2010.04.09 버전입니다.

 

<변경된 내용>

 

1. 초당 조회건수 제한을 TR별로 나누었습니다.

   주문인 경우 초당 10번까지 가능합니다.

 

2. ETK_Request() 함수가 추가되었습니다.

   - 장점

     1. RequestData, RequestDataEx 두개의 함수를 통합하여 Header 에 상관없이 사용이 가능

     2. 계좌의 위치를 요구하지 않음

     3. Header Type을 요구하지 않음

     4. Header Type이 B 일 경우 서비스 코드를 요구하지 않음

     5. TR에 따라 암호화, 공인인증 등을 자동으로 설정

   - 반환값 : Request ID

   - 파라미터

      hWnd : Window Handle

      szTrCode : TR Code

      lpData : Data Pointer

      nDataSize : Data Size

      bNext : 첫 조회시 0, 다음조회시 0이 아닌 값

      pszNextKey : 다음조회키

      nTimeOut : Time Out 시간



COM 버전 Program Files (2010.04.12) - COM(2010.04.12).zip

COM 버전 Program File 2010.04.12 버전입니다.

 

[변경내용]

<2010.04.12>

- XingAPI DLL 파일을 찾는 위치가 BIN 폴더에서 COM 파일이 있는 폴더로 변경

<2010.04.09>

- 신규 오픈

 

[파일리스트]

XA_DataSet.dll - ATL 파일

XA_Session.dll - ATL 파일

XA_Common.dll - DLL 파일

reg.bat - XA_DataSet.dll 과 XA_Session.dll 을 윈도우에 등록하는 배치파일

unreg.bat - 윈도우에 등록된 XA_DataSet.dll 과 XA_Session.dll 을 등록해재하는 배치파일

XingAPI DLL버전 관련 파일들

 

[주의]

ATL 파일은 사용하기 전에 윈도우에 등록해주어야 합니다.

등록 방법 : regsvr32 파일명



API 소개


X-ing API란?

  • DLL(Dynamic Link Library) 형태로 제공되어지는 API(Application Programming Interface) 입니다.
  • X-ing 서버와 데이터를 주고 받을 수 있는 Interface를 제공합니다.
  • 체결/잔고 등의 계좌정보와 시세/시황 등의 투자정보 데이터를 제공합니다.
  • 20개 이하(20여개의 데이터관리 함수 제외)의 API를 제공하며 10개 이하의 API 사용으로 X-ing 에서 제공하는 대부분의 화면을 개발할 수 있습니다.
  • 요청 당시의 데이터를 전송해주는 조회 데이터 TR과 요청이후부터 데이터가 변경될때마다 전송해주는 실시간 데이터 TR, 두가지의 데이터 TR 조회로 X-ing 에서 제공하는 대부분의 화면개발이 가능합니다.
  • Visual C++ 6.0 으로 제작되었으며 윈도우즈 프로그래밍이 가능한 모든 언어를 지원하기 위해 Regular DLL 로 제작되었기 때문에 Visual C++ 뿐만 아니라 Visual Basic, Delphi, C# 등으로도 개발이 가능합니다.

X-ing API 관련파일

  • X-ing API 관련 파일
    • XingAPI.dll
  • Microsoft MFC 관련 파일
    • MFC42.dll
    • MSVCRT.dll
  • 암호화 관련 파일
    • XecureS.dll
  • 공인인증 관련 파일
    • SKComdCM.dll
    • SKComdEM.dll
    • SKComdIF.dll
    • SKComdSC.dll
    • SKComdIC.dll

이 파일들은 프로그램 실행시 실행파일과 같은 폴더에 존재하여야 합니다.




프로그램 흐름도







로그인 처리 Diagram

  • [로그인과정]
  • 1. 로그인 함수(ETK_Login()) 호출
  • 2. 로그인 인증 성공/실패는 로그인 호출시에 등록한 윈도우로 메시지(XM_LOGIN) 전송
  • 3. 메시지의 wParam의 값이 “0000” 이면 성공, 그 외에는 실패 




프로그램 개요

  • TR이란?
    - Transaction의 약자로 서버로부터 데이터를 얻기 위해 요청하고 데이터를 받는 일련의 행동을 일컫는다.
    - TR은 조회TR과 실시간TR, 2가지가 존재한다.
  • 조회TR과 실시간TR 을 가지고 서버로부터 트레이딩에 관련된 모든 데이터를 받을 수 있다.
  • 조회TR : 서버로 데이터 요청 당시의 데이터를 전송
  • 실시간TR : 서버로 데이터 요청(ETK_Advise()) 이후에 데이터가 변경될때마다 데이터를 전송하며 데이터 요청종료(ETK_Unadvise())를 하면 데이터 전송을 멈춘다.
  • 실시간TR은 요청 당시의 데이터를 전송해주지 않으므로 시세등 실시간으로 변하는 데이터를 받기 위해서는 조회TR을 요청하여 당시의 데이터를 받은 이후에 실시간TR을 요청하여 실시간 데이터를 받아야 한다.

데이터 처리 Diagram

  • 1. 조회TR 요청(ETK_RequestData(), ETK_RequestDataEx())
  • 2. 조회TR에 대한 응답 : 조회TR 요청시 등록한 윈도우로 XM_RECEIVE_DATA 메시지 전송
  • 3. 조회 데이터 처리
  • 4. 실시간 데이터가 필요하면 실시간 등록 이후에 사용하며 사용이 완료된 이후에 실시간 해제 호출
  • 5. 실시간 데이터 등록은 원할때에 해도 되지만 조회 Data를 받은 이후에 하는 것을 추천


  • 조회 TR은 서버에 데이터를 요청했을때 현재 데이터를 전송한다.
  • 요청하여 데이터를 전송한 이후에 데이터가 변경이 되었을 경우 재전송이 이루어지지 않는다.
  • 여러 TR을 하나의 윈도우에서 사용하는 경우 데이터를 요청했을때 획득하는 Request ID로 구별한다.
  • Data를 받은 이후에 상황별로 데이터를 해제해주서야 한다.
  • Data는 Data -> Message -> Release 순으로 오게 된다.
  • System Error는 Data 처리 이전에 System 문제로 인하여 Data 처리가 불가능할 경우에 발생하며 이 경우엔 Data/Message/Release 가 전송되지 않는다.

조회성TR 처리 Diagram

1. 조회성 TR 전송 : Request ID 획득 

2. 조회성 TR 수신 : 조회성TR 전송시 등록한 윈도우로 XM_RECEIVE_DATA 메시지 전송
타입1
WPARAM 내용 설명
1 Data - 요청한 Data를 전송
- Data가 없거나 에러가 발생한 경우 수신되지 않을 수 있음
2 Message - Data 처리에 대한 Message
- Data 처리에 성공을 해도 실패를 해도 Message는 발생한다.
- Message Data를 처리하고 더이상 사용하지 않을 경우 ETK_ReleaseMessageData()를 호출하여 Message를 해제하여야 한다.
3 System Error - Data 처리 이전에 System 문제로 인한 Error가 발생할 경우에 전송
- Message Data를 처리하고 더이상 사용하지 않을 경우 ETK_ReleaseMessageData()를 호출하여 Message를 해제하여야 한다.
- System Error이 발생할 경우 Release가 전송되지 않으며 ETK_ReleaseMessageData()에서 자동으로 Request ID를 해제해준다.
4 Release - Data 처리가 완료된 경우에 전송
- Request ID를 해제하기 위해 ETK_ReleaseRequestData()를 호출하여야 한다.

  • Request ID란?
    - 서버에 데이터를 전송하게 되면 부여받게 되는 ID로 서버로부터 데이터를 받을때 ID 값을 같이 받게 되므로 전송한 값에 대한 수신값을 찾을 수 있다.
    - Request ID는 X-ing API에서 관리하므로 수신이 완료가 되면 해제해주서야 한다.
    - Request ID는 0~255사이의 값을 사용하며 해제하지 않으면 255개의 전송이 이루어진 이후에는 전송이 불가능하다. 


  • 서버에 데이터를 요청한 이후에 데이터가 변경이 되었을 경우 전송이 이루어집니다.
  • 데이터를 더이상 받고 싶지 않을 경우에는 요청취소를 해야 합니다.
  • 요청한 시점의 데이터는 전송하지 않으므로 조회TR을 이용하여 현재의 데이터를 가져와야 합니다.

실시간TR 처리 Diagram

  • 1. 실시간TR을 등록합니다.
  • 2. 실시간 데이터가 변경되면 해당 데이터를 등록했을때 설정한 윈도우로 XM_RECEIVE_REAL_DATA 메시지를 통해서 전송합니다.
  • 3. 더 이상 필요가 없다면 실시간TR을 해제합니다.

실시간 TR을 등록하는 시점은?

  • 실시간TR을 등록할 당시의 데이터는 전송하지 않으므로 조회TR을 전송하여 데이터를 받아야 합니다.
  • 조회TR을 서버로 전송함과 동시에 실시간TR을 등록하게 되면 조회TR을 받기 전에 실시간TR을 받을수 있으며
  • 조회TR에 대한 수신을 받고 나서 실시간TR을 등록하게 되면 수신후의 등록시점까지 변경되는 데이터는 받을 수 없다는 문제가 있습니다.
  • 이 두가지 중에 어떤것을 택하느냐는 개발자의 선택입니다.
  • X-ing 에서는 대부분 수신을 받은후에 실시간TR을 등록하지만 상황에 따라서는 조회TR을 전송함과 동시에 등록하는 경우도 있습니다. 



  • Header Type
  • Data Type
  • Attribute
  • Block Mode
  • Occurs
  • 연속조회
  • 1. 각 TR에는 Header Type이 정해져 있으며
  • 2. X-ing 에서 사용하는 Header Type은 총 4가지가 있다.
  • 3. Header Type은 해당 TR의 속성을 결정지으며 처리방식이 약간씩 다르다.
  • 4. TR에 대한 Header Type은 다음과 같이 알아낼수 있다.
타입1
  A Type B Type C Type D Type
데이터 성격 시세
투자정보
대부분 원장(계좌) 정보 대부분 원장(계좌)외의 Database 정보 대부분 계좌정보 중 주문/계좌관련 정보
Data Mode Block Non-Block Non-Block Non-Block
연속처리 Input TR의 필드로 처리 ETK_RequestDataEx()의 인자값으로 처리 Input TR의 필드로 처리 Input TR의 필드로 처리
ETK_RequestData() 사용 × × ×
ETK_RequestDataEx() 사용 ×




  • 함수
  • 메시지
  • 구조체
  • TR

Connect / Disconnect

ETK_Connect 서버와 연결합니다.
ETK_IsConnected 서버와의 연결여부를 취득합니다..
ETK_Disconnect 서버와의 연결을 종료합니다.

Login

ETK_Login 서버에 로그인합니다.
ETK_Logout 서버에서 로그아웃합니다.

조회TR

ETK_RequestData TR을 서버에 요청합니다.(Data Header = A)
ETK_RequestDataEx TR을 서버에 요청합니다.(Data Header = B, C, D)
ETK_ReleaseRequestData 수신 데이터를 삭제하고 RequestID를 해제합니다.
ETK_ReleaseMessageData 수신 메시지를 삭제합니다.

실시간TR

ETK_AdviseRealData 실시간 TR을 등록합니다.
ETK_UnadviseRealData 등록된 실시간 TR을 해제합니다.
ETK_UnadviseWindow 윈도우에 등록된 모든 실시간 TR을 해제합니다.

계좌관련

ETK_GetAccountListCount 계좌의 개수를 취득합니다.




계좌관련

ETK_GetAccountListCount 계좌의 개수를 취득합니다.
ETK_GetAccountList 계좌를 취득합니다.

정보

ETK_GetCommMedia 통신매체를 취득합니다.
ETK_GetETKMedia 당사매체를 취득합니다.
ETK_GetClientIP PC의 IP(Virtual IP)를 취득합니다.
ETK_GetServerName 접속한 서버의 이름을 취득합니다.
ETK_GetLastError 마지막에 발생한 Error Code를 취득합니다.
ETK_GetErrorMessage Error Code에 대한 메시지를 취득합니다.



http://www.etrade.co.kr/index.jsp?url=%2Fxingapi%2FxingMain.jsp%3Fleft_menu_no%3D8%26front_menu_no%3D8



XingAPI_Sample(2010.04.09).zip


RequestData, RequestDataEx 로 호출하는 방식을

Request 로 변경하였습니다.