'시스템 트레이딩'에 해당되는 글 2건

  1. 2009.07.07 H5MgrEx의 명령어에 따른 처리 과정
  2. 2009.07.07 하나대투 API 이용
2009. 7. 7. 03:26

H5MgrEx의 명령어에 따른 처리 과정

 H5MgrEx의 Command 중에서 hf)INITH5MGR과 hf_ENCRIP, hf_SIP는 발생하는 이벤트 없음.

(1). hf_CONNECT 명령
FEV_OPEN -> FEV_AXIS(runAxis) -> FEV_ANM 순으로 이벤트가 발생한다.

1. FEV_OPEN 이벤트가 발생하면 SignOn 처리한다.
2. FEV_ERRO 이벤트 발생
3. 정상적으로 인증이 처리 되면 FEV_AXIS(runAxis) 이벤트 발생한다. 이때 연결 성공에 따른 적절한 처리 해주면 된다.
4. FEV_ANM 이벤트는 연경 성공후에 발생한다.
FEV_ANM으로 수신되는 자료 예)
[processANM]
SP001    033    +0.09    023    +880.10    034    170935    024    +0.80   


[processANM]
USD    023    +1276.10    034    150000    024    +3.00   


[processANM]
NQ001    033    +0.09    023    +1409.25    034    165258    024    +1.25   


[processANM]
S0000    047    172119    014    0    048    0    301         015    '로프트 10도' 드라이버 아마추어나 쓴다고?    016    2009070817210317211913    050    0    041    13    042    12    043    20090708    044    172103    022         045    한경뉴스    046    레저/스포츠   


[processANM]
S0000    047    172129    014    0    048    0    301         015    캄보디아에 '꿈' 수출한 한국 불교    016    2009070817210417212913    050    0    041    13    042    11    043    20090708    044    172104    022         045    한경뉴스    046    문화/교양   

(2). hf_QUERYTR
선물 코드/시세, 옵션 코드/시세 등의 전문을 서버에 전달하여 FEV_FMX 이벤트로 결과를 받아서 처리한다.
FEV_FMX 이벤트에서  LOWORD(AWParam) 값으로 어떤 전문에 대한 응답인지 구분한다.
이 포스트를 작성하는 시점 기준으로 아래의 4개 전문에 대한 응답 처리만 구현했다. (07-20 주문응답 처리 추가)

1. TR_FCODELIST - 선물 코드
2. TR_OPCODELIST - 옵션 코드
3. TR_FSISE - 선물 시세
4. TR_OPSISE - 옵션 시세
5. TR_ORDER_START - 주문

선물/옵션 시세를 요청하면, FEV_FMX로 현재 시세에 대한 자료가 넘어오고, 이후에는 FEV_ANM이벤트로 시세 정보를 수신하게 된다. 장이 종료된 경우에 FEV_ANM 이벤트는 발생하지 않는다. 또한, 옵션의 경우에 이벤트로 수신되는 정보에 현재가/전일대비/거래량이 매번 포함되지는 않는다.

(3). hf_ACCLIST
계좌 정보 조회, 이벤트 없이 함수 파라미터로 전달한 버퍼를 통해서 값을 반환 받는다.

<변경내역>
2009-07-06 : 첫 포스트 작성
2009-07-07 : FEV_ANM 수신 데이타 예 추가
2009-07-08 : hf_QUERYTR 관련 내용 작성 시작
2009-07-09 : hf_QUERYTR 4개 전문 요청 및 응답 처리 추가
2009-07-20 : 계좌조회, 주문 전문 요청 및 응답 추가

'System Trading' 카테고리의 다른 글

H5MgrEx의 명령어에 따른 처리 과정  (0) 2009.07.07
하나대투 API 이용  (0) 2009.07.07
Cybos plus 설치  (2) 2008.07.22
TradeStation - Global Server의 Exchange List 수정  (1) 2008.07.21
Trackback 0 Comment 0
2009. 7. 7. 02:17

하나대투 API 이용

자세한 내용은 나중에 정리할 계획이지만 지금까지 내용 우선 개략적으로 정리해두려고 포스트 작성 함.

1. 지난 월요일에 하나대투 증권의 API를 제공 받아서 설치해보고 VC 샘플로 구조 파악.

2. VC 보다는 델파이나 빌더가 익숙해서 ActiveX를 컴포넌트로 등록하고 빌더 샘플 작성 시작 하지만, export된 HFCommand 함수를 호출하면 아무 에러 메시지도 없이 프로그램 종료가 되버려서 IDispatch 인터페이스 이용해서 Invoke 하는 방법으로 테스트 진행했으나 hf_INITH5MGR부터 실패.

3. 델파이로 다시 해보자 생각하고 컴포넌트 델파이에 다시 등록하고 새로 샘플 작성 시작. 델파이에서는 HFCommand 호출하여도 에러는 없는데 제대로 동작 안함.

>오류 내용
서버아이피 얻어오는 것은 되는데 이상하게 hf_INITH5MGR 명령은 에러 발생(에러코드는 -1 또는 10 발생하고 -1인 경우에 서버 아이피 얻어올 수는 있으나 연결 실패, 10인 경우에는 서버 아이피도 얻어올 수 없다.)

> 하나대투 증권사에 전화해봤으나 첨부된 문서 보고 다시 해보라는 답변만 해줘서 기술 문의나 지원 받는 것은 포기했다.

4. 해결책
3일 정도 이리 저리 테스트 해도 제대로 동작이 안되고 제공 받은 OCX 내부에서 어떻게 변수를 처리하는지 확인할 방법이 없어서 포기할까 했는데 시간 허비한게 아까워서 어떻게든 해보자는 생각에 제공 받은 ocx와 동일한 인터페이스를 갖는 MFC ActiveX를 만들고 내부에서 하나대투 API를 다시 호출하는 방법을 사용했다.

> 결과
VC 샘플에서 기존 ActiveX 대신에 새로 작성한 ActiveX를 호출해서 사용하도록 소스 수정하고 해봤더니 제대로 동작한다. 델파이로 만든 샘플에서도 로그인까지는 동작하는 것 확인.

> 기타
1. 기존 ActiveX를 직접 사용하는게 가장 깔끔하겠지만, 새로 ActiveX를 만들면서 전달 받은 내용을 로그 파일로 기록하게 해둠. 기존 ActiveX호출 하면서 이게 제대로 전달이 되는지 궁금하였는데 이젠 로그 파일 확인하면 됨.

2. VC로는 ActiveX를 처음 만들어 봐서 좀 헤매긴 했는데 어쨌든 되니까 다행이라는 생각이다. MFCActiveX 만드는 것에 대해서는 별도의 포스트를 올려서 정리할 예정인데 몇 가지 주의할 점 적으면..
- 대부분 위저드랑 인터넷 찾아보면 해결 할 수 있는데 View 기반이어서 생성자에서 CreateControl할떄 parent CWND를 Ctrl클래스 this 포인터를 넘기면 hwnd가 널인 경우도 있고 아닌 경우도 있어서 에러 발생했다. -> Dialog 추가해서 Dialog에서 ActiveX를 생성하는 것으로 변경해서 해결.
- OnCreate에서 Dialog를 생성하면 VC에서는 이상이 없으나 델파이에 컴포넌트로 등록하고 테스트 했더니 에러가 발생했다. 디버깅 해보니 이상하게 OnCreate가 실행이 안된다. 아마도 메시지 처리하는게 다른듯 싶어서. Ctrl의 생성자에서 Dialog 클래스 인스턴스 생성하는 것으로 바꿨다. 이것만 인터넷에 나와 있는 Dialog 기반의 ActiveX 만드는 것과 다른 부분이다.
- 참조
http://netcorea.spaces.live.com/blog/cns!12194EA1AE946527!165.entry

5. 남은 작업
새로 만든 ActiveX 안정성 확인 필요
시세 데이타 수신, 주문 하기 등 기능 구현 필요



'System Trading' 카테고리의 다른 글

H5MgrEx의 명령어에 따른 처리 과정  (0) 2009.07.07
하나대투 API 이용  (0) 2009.07.07
Cybos plus 설치  (2) 2008.07.22
TradeStation - Global Server의 Exchange List 수정  (1) 2008.07.21
Trackback 0 Comment 0