하나의 시스템/프로그램을 설계하는 것은 상당히 고난도의 작업이다. 

Architecture-Design에 속하는 이 작업은 Front-End의 User Interface(UI)적 편의성과 간결함, 그리고 정확성을 바탕으로 하는 사용자 친화적 경험 및 지식이 필요하며, Back-End의 Call-Flow(메시지 흐름)와 가장 중요한 Data Structure가 가능해야한다. 

 

현재 L-ATS Flex v2.0은 약 50% 정도 완성이 되었지만, 실제 게시글은 그때마다 작성하지 못했다. 이유는 위에서 '가장 중요한'이라고 말한 Data Structure가 불안정했기 때문이다. 

처음 사용해 보는 이베스트 투자증권의 xingAPI에서 얻을 수 있는 Data가 생각보다 제한적이고 API의 사용성 또한 제한적이라 프로그램이 만들어지면서 데이터 구조가 많이 변경되었다. 

 

지금 시점은 xingAPI로부터 얻을 수 있는 데이터가 모두 파악되고, 그 데이터들을 어떤 부분에 사용하고 응용할지 정리가 되었기에, 잠시 개발을 멈추고 글을 작성한다. 


1. L-ATS 화면 구성

L-ATS Flex v2.0 화면 구성

크게 총 15개의 구역으로 구분이 되며, 각 구역 마다의 설명은 아래 정리되어 있다.

L-ATS v1.0과 가장 큰 차이점은 '매수' 기능이 없어져 그에따른 '미체결' 관련 화면 구역이 없어졌다. 그리고 L-ATS v2.0의 핵심 기능인 '스탑로스 Flex' 관련 설정 및 결과 창이 생겼다. 

실은 '스탑로스 Flex'보다 '스탑로스'가 더 표시할 정보가 많이 있는데(설정 조건이 복잡해서...)...결과 창의 위치를 바꾸어야 할 수도 있을 것 같다.

 

2. L-ATS 상세 화면 구성

1~15개의 구역을 가진 L-ATS v2.0

 

① L-ATS v2.0의 주 메뉴 Bar

② L-ATS v2.0 프로그램 사용자 정보 

    : L-ATS v2.0을 사용하기 위한 사용자 가입 정보.

③ 이베스트 투자증권 HTS 서버 접속 정보

    : 접속 (초록색), 미접속 (빨간색)

④ 자동 매매 시작 버튼

    : 이 버튼이 눌리지 않는한 자동매매가 시작되지 않음.

⑤ 프로그램 알림 Bar

    : 프로그램 동작 중 사용자에게 알림이 필요한 수준의 메시지가 표시됨.

⑥ 사용자 계좌 목록

    : 사용자가 보유한 이베스트 투자증권의 계좌 목록 표시. HTS 로그인이 완료되어야 표시됨.

⑦ 실시간 지수 정보

    : 실시간으로 증권 시장의 코스피/코스닥 지수를 표시. 약 3초마다 데이터 수신. HTS 로그인이 완료되어야 표시됨.

⑧ 실시간 매매 처리 종목 현황

    : L-ATS 프로그램 상에서 처리되고 있는 종목들의 갯수를 실시간으로 표시.

     (기존 잔고건수 + 신규 매수 건수) = (거래 완료 건수 + 스탑로스 건수 + 스탑로스 Flex 건수)

⑨ 사용자 계좌의 실시간 자산 현황

⑩ 사용자 계좌의 실시간 잔고 종목 목록

    : 현재 사용자가 보유한 종목들의 목록. 이 목록에서 종목별 스탑로스 처리 여부를 정할 수 있음.

⑪ 자동 스탑로스 환경 설정

    : 자동 매매 시작 이후 적용될 스탑로스 설정 값.

⑫ 스탑로스 처리 종목 목록

    : 실시간 잔고에서 스탑로스 처리를 선택한 종목들에 대한 목록 표시.

⑬ 거래 완료 종목 목록

    : 스탑로스 또는 스탑로스 Flex에서 매도처리가 완료된 종목들에 대한 목록 표시.

⑭ 스탑로스 Flex 처리 종목 목록

    : 실시간 잔고에서 스탑로스 Flex 처리를 선택한 종목들에 대한 목록 표시.

⑮ 이베스트 투자증권 사용자 정보

    : HTS 로그인 후 표시되는 사용자의 이베스트 증권 사용자 정보.

 

3. xingAPI 사용 구역

위의 15개 구역 중 xingAPI를 통해 얻은 데이터를 표시하는 구역에 대한 설명이다.

L-ATS v2.0 화면 내의 xingAPI 사용 구역

생각보다 xingAPI를 사용하는 부분은 많지 않다. 그리고 단순하다. 

실시간으로 계속 데이터를 요청하고 수신하여 반영해야하는 '실시간 잔고' 부분을 제외하고는 단순 Request-Response 처리이기에 크게 어려운 부분은 없다. 

 

xingAPI에서 제공하는 TR처리 기능 중 한번 Binding 해두고 값의 변화가 있을 때마다 서버 측에서 데이터를 내려주는 TR 처리 방식이 있는데 실시간으로 변화되는 잔고 정보를 갱신하는 데에 매우 유용할 것 같지만, 경험상 굳이 세션 유지를 신경 쓰며 보다 세세한 예외처리를 하기 위한 노력을 기울이는 것보다 주기적으로 정보를 요청하여 처리하는 것이 더 심플할 것 같다. 프로그램의 기능은 심플한 것이 최고다. 

 

다음은 실제로 구현한 'HTS 로그인' 부분 포스팅이다.

Posted by [ 브랜든 ]
,