ZeroAOS 2.0의 ZeroTerminl 기능

1.
몇 일전 증권사에 공급한 ZeroAOS 2.0이 실가동을 시작하였습니다. ZeroAOS 2.0은 1.0과 비교하여 기술적으로 달라진 점이 많지만 기본적인 철학은 바뀌지 않았습니다.

“알고리즘을 제외한 부분을 서비스로 제공하고 트레이더는 알고리즘 설계에 집중하도록 하자!”
“트레이더와 IT서비스가 함께 성장하는 윈윈 파트너십을 만들자”

물론 트레이더가 직접 알고리즘을 개발할 수 있는 API를 제공하지만 설계를 바탕으로 개발공급을 하기도 합니다. 전략과 전략관리용 UI는 항상 하나이기때문에 시간이 적지않게 들어가기 때문입니다.

ZeroAOS 2.0으로 바뀌면서 노력을 많이 한 부분은 GUI입니다. ZeroAOS의 GUI는 ZTerminal입니다. 아래 설명은 ZeroAOS 1.0의 기능을 설명하였던 ZTerminal을 이용한 ZeroAOS서비스 기능설명을 수정한 글입니다.

유저인터페이스를 어떻게 정할지 항상 고민입니다. 1.0은 태스크바(Task Bar)형식입니다담 2.0은 비슷한 개념이지만 Dock형태를 지향하였습니다. 메뉴 아이콘도 고민했지만 자유로운 메뉴 추가를 위해 한글명을 그대로 사용하기로 하였습니다. 아래가 2.0입니다.

ZTerminal_Main

시세, 주문, 주문체결, 잔고, 예수금은 매매프로그램들이 가지고 있는 공통화면입니다. 다만 DMA에 맞도록 변경하였습니다. HTS와 달리 종목코드를 자유롭게 입력하지 못하고 특정한 종목만 선택하도록 하였습니다. HTS로 말하면 관심종목을 중심으로 화면을 구성한 것과 비슷합니다.

먼저 주문화면입니다. DMA는 주로 자동매매인데 수동매매화면이 이상할 수도 있습니다. 처음 설계에는 없었지만 트레이더를 만나면서 수동매매가 필요하다는 의견을 들었고 추가한 기능입니다. 시세와 마찬가지로 장중 매매종목으로 정의한 종목들만 보여줍니다.

트레이더는 기계와 손을 모두 사용한다

전문트레이더를 위한 서비스이므로 빠른 주문개념을 넣은 주문을 만들었습니다. 매도나 매수영역에서 가격을 선택하면 신규주문이 나가고 해당주문은 매도/매수에 보입니다. 마우스로 가격을 옮기면 정정주문, 반대편 마우스버튼을 선택하면 취소가 나갑니다.

ZTerminal_Order

시세화면입니다. HTS와 다르게 매매하려고 하는 종목을 보여주고 선택하는 방식입니다. 이 화면에서 보여주는 종목은 전략과 직접 관련이 있습니다. 전략에서 종목을 추가하거나 삭제하면 시세와 주문화면도 반영합니다.

ZTerminal_Quote ZTerminal_Quote2

다음은 잔고입니다. ZTerminal이 잔고를 처리하는 방법은 자체DB를 이용합니다. ZeroAOS가 관리하는 잔고테이블이 있지만 ZTerminal의 속도를 위하여 별도 관리합니다. 다만 ZeroAOS는 엄밀한 의미의 원장은 아니므로 모니터와 위험관리용으로 사용합니다.

ZTerminal_Balance

마지막은 주문체결입니다. 보통 전략이라는 항목만 빼면 다른 화면과 다르지 않습니다. 전략은 해당주문이 어떤 전략에 의해 나갔는지를 보여주는 보여줍니다. 아래의 0은 수동매매에 의한 주문입니다. 전략은 전략관리에서 지정한 전략ID로 나타납니다.

ZTerminal_Execution2
ZTerminal_Execution1

2.
ZeroAOS 2.0을 위한 ZTerminal 작업을 할 때도 역시나 힘든 것은 전략관리입니다. ZeroAOS의 전략개발API를 통하여 개발한 전략은 아래와 같은 특징을 가집니다.

하나이상의 상품(Tradable Product) 매매
하나이상의 규칙(Trading Rule)
장중 매매상품의 변경/삭제가 가능
전략 패러매터를 사전에 정의한 그룹에 의한 전략관리
장중 전략 패러매터 임의 변경 가능
전략 패러매터의 유형과 갯수는 매매전략을 설계하는 트레이더이 결정
하나의 전략은 하나의 프로세스(Process)이며 실시간 이벤트에 의해 멀티쓰레드(MultiThread)로 동작
전략프로세스는 최대 99개까지 가능하며 매매가능한 상품의 개수와 전략프로세스의 숫자는 같지 않음

전략은 C프로그램이기 때문에 개발자가 창의적으로 전략을 구현할 수 있으면 프로세싱과 속도들을 고려하여 다양한 변화가 가능합니다. ZTerminal의 전략관리는 트레이더가 전략을 통제하기 위한 화면입니다. 구현도 구현이지만 표준화한 UI구성때문에 머리가 많이 아팠습니다. 처음에는 1.0이 택한 UI를 바꾸고자 했지만 결국 테마를 바꾸는 선에서 만족을 했습니다.

ZTerminal_Strategy

전략관리의 기본은 전략정보입니다. 전략정보는 전략번호, 전략명,계좌번호, 기본패러매터, 전략실행,전략정지,주문실행,주문정지등으로 이루어집니다. 기본 패러매터는 트레이더가 사전에 정의한 패러매터그룹중 기본으로 정한 값입니다.

트레이더가 전략을 관리할 때 필요한 행동을 유형별로 분리하면 전략시작, 전략정지,미체결취소, 신규주문중단, 신규주문시작, 종목변경, 패러매터 변경 등입니다. 전략실행부터 주문정지는 전략의 동작을 통제하는 기능입니다.

1)전략실행 – 전략을 시작하여 자동매매 시작
2)전략중지 – 전략을 중지하여 자동매매 중지
3)주문정지 – 미체결주문을 자동 취소하고 신규주문 중단
4)주문실행 – 신규주문 중단을 해제하여 신규주문 시작

하단의 좌측은 패러매터를 관리하는 부분입니다. 사전에 지정한 조건으로 변경할 경우에는 패러매터그룹중 하나를 선택하여 [사전지정조건 변경]을 누릅니다. 반면 직접 입력하여 변경할 경우 Value에 값을 입력하고 [직접입력 변경]을 선택합니다.

하단의 우측은 전략의 종목을 변경하는 부분입니다. 전략을 선택하면 현재 등록한 종목을 보여줍니다. 하단 중앙입니다. 종목 삭제가 가능합니다. 우측은 모니터링하는 종목을 사전에 등록해 놓고 특정한 전략에 종목을 추가할 때 사용하는 화면입니다. 전략과 관련한 기능중 전략프로세스관리도 있습니다. 동작중인 프로세스를 Start/Stop하도록 하는 기능입니다.

3.
이상이 트레이더가 매매를 할 때 필요한 모든 기능이라고 생각하지 않습니다. 가장 중요한 패러매터등을 결정하기 위한 의사결정지원화면이 빠져있습니다. 그런데 의사결정을 위한 화면은 딱 하나로 만들 수 없습니다. 트레이더마다 판단의 기준이 다르기때문입니다. 그래서 ZTerminal API를 따로 제공합니다. 이를 이용하면 전략관리와 의사결정지원을 결합한 자체 화면을 개발하여 메인메뉴에 추가할 수 있습니다. ZeroAOS 2.0을 도입할 때 필요한 것은 알고리즘입니다. 만약 전략이나 전략UI를 개발하기 힘들 경우 개발을 해서 제공합니다.

여러분은 여러분만의 알고리즘이 있으세요? 그러면 ZeroAOS의 고객입니다.(^^)

아래가 ZeroAOS 2.0이 제공하는 기본기능입니다. ZeroAOS API는 생략하였습니다.

구분기능
전략멀티트레이더(멀티유저)
트레이더별 주문체결분배
멀티전략(Sleep/Wakeup)
멀티계좌
수동매매(손매매)
동적인 전략별 패러매터 변경
장중 매매종목 변경
전략별 주문체결/포지션/손익 조회
위험관리전략별 중지
전략포지션 취소/청산(Kill Switch)
계좌별 중지
계좌별 취소/청산(Kill Switch)
한국거래소 알고리즘매매 위험관리 가이드라인 준수
UI 메뉴시세 조회(현물/선물)
빠른주문(수동매매)
주문체결조회
미체결조회
잔고조회
전략관리전략관리자
전략프로세스관리
전략로그모니터
UI용 API주문 및 체결
전략제어(시작,중지 및 패러매터 변경)
실시간 호가 및 체결
종목마스터 조회
잔고조회
주문가능금액 조회
체결/미체결 조회

2 Comments

  1. 박근태

    수고 많으셨습니다… 날씨 풀렸으니 얼굴 한번 보시죠

    Reply
    1. smallake (Post author)

      ^^ 그러시죠.. 아직 할아버지가 되었다는 소식은 없으시네요.

      Reply

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.