주식투자 프로그래밍(시스템 트레이딩) 1.7 #. 현재 가격 시세 구하기

By | 2018-01-14

#. 현재 가격 시세 구하기

 

두 번째로 개발하는 프로그램은 현재 가격 시세를 구하는 것으로 [그림 9 현재 가격 시세 구하기]화면과 같이 사용자 인터페이스를 확장했다. 마소 독자와 함께 개발하는 boolhts의 [현재 가격 시세 구하기] 프로그램에서는 캔들, 전일 대비 등락, 거래량, 정렬 등과 관련하여 몇 가지 필터링 기능을 부가시켰다.

캔들 구분, 거래량, 전일 대비 등락 구분은 프로그래밍 관점에서는 특별한 알고리즘이나 원리가 필요없을 정도로 단순한 정보지만 현대 주식 투자 기법에서는 없어서는 안 될 정도로 굉장히 중요한 역할을 한다. 특히 시작 가격을 기준으로 현재 가격과 비교해서 양봉과 음봉으로 구분하거나, 상한가 내지는 급등하는 시세 분출 종목을 실시간으로 검색할 경우에는 유용한 것들이다.

사이보스플러스는 증권거래소를 통하여 증권 시장에서 발생하는 원시적인 데이터 위주로 제공하기 때문에 시스템트레이딩 관점에서는 사이보스플러스가 제공하는 데이터를 대부분 변형 가공해야만 실전 투자에 응용할 수가 있다. 따라서 필자는 사이보스플러스가 중계하는 여러 종류의 데이터를 가지고 이진 탐색 정렬 알고리즘을 적용하여 기능을 확장시켰는데 현재 가격 시세 구하는 프로그램에서는 몇 가지 정렬 필터를 보강하여 확장시켰다.

한편 필자는 [그림 9 현재 가격 시세 구하기]에서 타이머를 이용하여 현재 시세 데이터를 주기적으로 다운로드해서 로컬 컴퓨터에 저장시키는 기능을 추가시켰다. 데이트레이딩 수준에서 시스템트레이딩을 수행하는 프로그램을 개발하려면 테스터용으로 시시각각으로 시세 데이터가 필요하기 때문에 확장한 것이다. 현재 각종 증권사에서 수많은 데이터를 제공하지만 시간 단위간격으로 저장된 전종목에 대한 현재 시세를 제공하지는 않는다. 따라서 데이트레이이딩 수준의 시스템트레이딩 프로그램을 개발하려면 반드시 일정 시간 간격으로 현재 가격 시세를 받아둬야 한다.(참고로 boolhts에서는 CSpotWnd 클래스에서 m_AutoInterval 변수에 1000 milliseconds (1분) 지정해두었으므로 변수값을 조정하면 자동 다운로드 주기를 바꿀 수 있다.)

그림 7 현재 가격 시세 구하기

[소스 코드 2 현재 가격 시세 구하기]

// 생성

 hr = pStockMst2.CreateInstance(__uuidof(StockMst2));

 // 조건 입력(종목 리스트: 1회 110 종목까지만 전달)

 pStockMst2->SetInputValue(0, p_codelist);

 // request

 pStockMst2->BlockRequest();

 //

 itemnum = pStockMst2->GetHeaderValue(0);

 while(itempos < itemnum) {

   strCode = (LPCTSTR)(_bstr_t)pStockMst2->GetDataValue(0,itempos);

   strName = (LPCTSTR)(_bstr_t)pStockMst2->GetDataValue(1,itempos);

   //2- (long) 시간(HHMM), //3- (long) 현재가, //4- (long) 전일대비

   pri.time = (_variant_t)pStockMst2->GetDataValue(2,itempos);  

   pri.endval = (_variant_t)pStockMst2->GetDataValue(3,itempos);  

   pri.yesday_daebi = (_variant_t)pStockMst2->GetDataValue(4,itempos);

   pri.amount = (ulong)(long)(_variant_t)pStockMst2->GetDataValue(11,itempos);

   // 함수에서는 등락률을 보내주지 않기 때문에 추가로 계산해줘어야 한다.

   if(yesday_endval > 0) {  // 신규상장주는 전일 종가가 없다.

     pri.rate = calc_rate(yesday_endval, pri.yesday_daebi);

   }

   // 개별 항목 추가

   p_nowgate_serv->append()…

   // next counting

   itempos++;

 }

 // 해제

 pStockMst2.Release();

[소스코드 2 현재 가격 시세 다운로드]는 사이보스플러스에서 사용자가 원하는 종목의 현재 가격 시세를 구하는 것이다. 앞서 종목 리스트 다운로드에서 설명했던 것처럼 사이보스플러스는 Com Object 방식으로 제공되기 때문에 시작 부분에서는 반드시 CreateInstance() 함수를 호출했다가 끝낼 때는 Release()함수로 해제시켜야 한다. (이 시간 이후에는 이 부분은 생략하겠다.)

[그림 10 사이보스플러스 도움말 – 현재 가격 시세 구하기(StockMst2)]에서 현재 가격 시세를 구하는 함수에 대하여 자세하게 나와 있지만 개발자가 놓치기 쉬운 것들만 보충 설명하겠다. StockMst2() 함수는 입력으로 텍스트 문자열 방식으로 여러 종목을 입력해주면 해당 종목의 현재 가격 시세를 돌려주는 것으로 한 번 호출할 때 110 종목까지만 전달할 수 있다. 따라서 현재 증권 시장에 상장된 전체 종목에 해당하는 대략 2천 종목에 대한 시세를 구하려면 20번을 반복해서 호출해야만 가능하기 때문에 함수를 확장해야 하는데 필자는 마소 독자들을 위해서 미리 전체 종목에 대한 시세를 구할 수 있도록 클래스와 함수로 확장시켜 놨다. 그리고 사이보스플러스 프로그래밍에서는 많은 함수들이 종목 변수를 지정할 때 종목 이름을 사용하지 않고 종목 코드를 사용한다. 예들 들어 삼성전자에 대한 시세를 구한다면 [삼성전자]라고 입력하지 않고 [A005930]라는 종목 코드를 입력해야만 정확한 결과를 얻을 수 있다. StockMst2 함수 말고도 상당수의 함수들이 특별한 경우를 제외하고는 종목 코드로만 종목을 검색한다. 즉 종목 코드는 주민등록번호처럼 고유한 식별 부호에 가까운데 반하여 종목 이름은 사람 이름이나 별명처럼 수시로 변경이 가능하기 때문에 일관되게 검색하기 위해서 고유한 식별 부호인 종목 코드를 사용한다.

한편 현재 가격 시세 구하기 위해서 사용하는 StockMst2() 함수에서는 클라이언트-서버 프로그래밍처럼 BlockRequst / Reply 방식을 사용하고 있는데 사이보스플러스에서 많은 함수가 BlockRequst / Reply 방식으로 증권 서버와 교신한다.

그림 8 사이보스플러스 도움말 – 현재 가격 시세 구하기(StockMst2)

 

#. 다음 연재에서는

다음 호부터는 각종 증권사 HTS가 제공하는 종목 검색 기능 중에서 실전 투자에서 널리 알려진 기법들을 소개한 후에 직접 프로그램으로 구현할 것이며, 최종적으로는 증권사가 제공하는 HTS를 거치지 않고 여기서 구현된 HTS 기능만 가지고 마소 독자들이 직접 투자에 활용할 수 있도록 확장시킬 것이다.

끝으로 마소 독자와 함께 만드는 boolhts 프로그램 전체 소스 코드는 독자 스스로 활용할 수 있도록 마소를 통하여 베포될 것이다.

 

 


주식투자 프로그래밍(시스템 트레이딩)

이 글은 필자가 2005 ~ 2007년 개발했던 내용을 2009.10 ~ 2010.1 (월간) [마이크로소프트웨어]에 투고했던 내용을 정리해서 올린 것입니다.

  • 당시 가격제한폭(상한가/하한가)는 15% 적용(새로 고쳐야 함)

  • 소스코드 모두 제공

  • 실제 매매 가능

차례


1. 주식투자 프로그래밍(시스템 트레이딩)

1.1주식투자 프로그래밍(시스템 트레이딩) 

1.2 #. HTS와 시스템트레이딩

1.3 #. HTS 종속 시스템트레이딩

1.4 #. 범용 프로그램 언어 시스템트레이딩

1.5 #. 대신증권 [CYBOS PLUS]

1.6 #. 종목 리스트 다운로드

1.7 #. 현재 가격 시세 구하기


2. 주식투자 프로그래밍(시스템 트레이딩)

2.1 주식투자 프로그래밍(시스템 트레이딩)

2.2 #. 주식투자기법

2.3 #. 급등주와 테마주

2.4 #. 눌림목 투자 기법

2.5 #. 기술을 넘어서 심리분석

2.6 #. 캔들 프로그래밍

2.7 #. 세력주 검색 프로그래밍

2.8 다음에는 …


3. 주식투자 프로그래밍(시스템 트레이딩)

3.1 #. 초소형 미니 HTS와 모의투자

3.2 #. 모의투자 시스템

3.3 #. Boolhts 구조와 설계

3.4 #. 사이보스플러스 이벤트 처리기

3.5 #. 종목 선택창 만들기

3.6 #. 호가창 만들기

3.7 #. 체결창 만들기

3.8 #. 계정 로그인

3.9 #. 예수금 조회

3.10 #. 주문과 조회 처리

3.11 #. 매수와 매도 주문

3.12 #. 체결/미체결 잔고조회

3.13 #. 정정과 취소 주문

3.14 #. 주문 이벤트 핸들러

3.15 #. 통합 주문처리기


4. 주식투자 프로그래밍(시스템 트레이딩)

4.1 #. 금융공학과 상한가 따라잡기

4.2 #. 수학적 금융공학

4.3 #. 전산 금융공학 – 알람펀드

4.4 #. 전산 금융공학 – 스피드 트레이딩

4.5 #. 차익 시스템트레이딩

4.6 #. 확률 시스템트레이딩

4.7 #. 개별 종목 확률 시스템트레이딩

4.8 #. 상한가 따라잡기

4.9 #. 상한가 전화기

4.10 #. 특수 상한가 전화기

4.11 #. 멀티 상한가 전화기

4.12 다음에는 …


5. 주식투자 프로그래밍(시스템 트레이딩)

5.1 #. 주식 투자 트위터

5.2 #. 트위티언(Twittian) or 원시인

5.3 #. Open API 혁명, 트위터 (Twitter)

5.4 #. 한글트위터 twtkr.com

5.5 #. 주식 뉴스 발송 트위터

5.6 #. 주가 정보 발송 트위터

5.7 #. 주가 차트 등록 트위터

5.8 #. 트위터 이미지를 본문에 포함시기키

5.9 #. 대한민국 증권사에 바란다.

5.10 #. 모바일 혁명의 배후, KT에 바란다.

5.11 #. 연재를 마감하면서……


boolhts 소스코드(source code) 1 부 다운로드

boolhts 소스코드(source code) 2 부 다운로드

boolhts 소스코드(source code) 3 부 다운로드

boolhts 소스코드(source code) 4 부 다운로드

[boolhts 소스코드(source code) 5 부] 따로 없음

boolhts 통합 소스코드(source code) 다운로드(준비 중)


 

 

 

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

Time limit is exhausted. Please reload CAPTCHA.