주식투자 프로그래밍(시스템 트레이딩) 2.6 #. 캔들 프로그래밍

By | 2018-01-14

#. 캔들 프로그래밍

HTS들은 종목 검색을 위하여 다양한 조건식을 제공하지만 너무나 단순하고 평면적이어서 효과적으로 세력주를 발굴하기 어렵기 때문에 검색 기능과 조건식이 풍부한 HTS를 사용하는 것이 좋다. 하지만 아무리 많은 검색 기능과 조건식을 제공해도 정교하게 세력주 조건식을 만들려면 너무나 복잡하고 사용환경이 조잡해서 불편한 점이 있다. 그래서 필자는 직접 세력주 검색 프로그램을 만들게 되었는데 마소 독자들은 필요한 부분을 확장해서 사용할 수 있다. 주식투자 프로그래밍 관점에서 종목 검색을 하려면 현재와 과거 시세를 접근해야 하는데 세력주 검색 프로그램을 만들려면 캔들 데이터를 모아서 가격, 거래량, 이동평균 등을 분석해야 하므로 제일 먼저 캔들 데이터를 모으는 프로그램을 만들 것이다.
캔들 프로그래밍은 특정한 종목의 캔들 데이터값을 다운로드하는 것으로 사이보스플러스는 캔들 시간 단위에 따라서 데이터 구조가 달라서 사용하는 함수가 다르므로 주의해야 한다. 즉 일(day), 주(week), 월(month) 단위 캔들은 시세 구조가 똑같아서 동일한 함수로 처리하지만 분(minute) 단위 캔들은 다른 함수로 처리해야 한다.

실행 순서와 기능

보충 기능

사이보스플러스 실행

실행 후에 boolhts 정상 동작

종목 목록 다운로드

1회 연재한 코드목록 다운로드 참조

종목 선택 후 캔들 다운로드

일/주/월 시간 단위 데이터 처리

분봉 데이터 처리

캔들 이동평균

5/20/60/120 이동평균선 생성

3 캔들 프로그램 순서와 기능

사이보스플러스에서 캔들 데이터를 수신하려면 CbGraph1() 함수를 이용해야 하는데 이 함수는 캔들 데이터를 넘겨준다. 그런데 이 함수는 한번에 최대 2800개까지 넘겨주기 때문에 그 이상 과거 캔들 데이터는 받을 수 없으며 일간, 주간, 월간 단위의 캔들 데이터만 돌려주므로 분 단위 캔들 데이터는 다름 함수를 이용해야 한다. 간단하게 [표 4 사이보스플러스 – 캔들 데이터 함수]와 [리스트 캔들 데이터 수신] 소스 코드를 실었으며 자세한 건 부록으로 제공하는 완전한 소스 코드와 사이보스플러스 도움말을 참조하기 바란다.

함수

CbGraph1

기능

종목, 업종 코드에 관한 캔들 수신

필드구분

, 주, 월 구분

Return

시가, 고가, 저가, 종가, 전일대비, 거래량

기타

2800개 수신

표 4 사이보스플러스 – 캔들 데이터 함수

[리스트 캔들 데이터 수신]
pStockWeek.CreateInstance(__uuidof(CbGraph1)); // 생성
pStockWeek->SetInputValue(0, “A005930”); // 삼성전자
pStockWeek->SetInputValue(1, ‘D’); // 일주월구분(‘D’,’W’,’M’)
pStockWeek->SetInputValue(3, 2800); // 데이터 수
pStockWeek->BlockRequest(); // 요청
// 과거 데이터랑 업데이트를 할 경우를 위해서 맨 뒤부터
long count = (long)(_variant_t)pStockWeek->GetHeaderValue(3); // 수신 개수
for(itempos = (count – 1); itempos >= 0; itempos –, item_total++) {
pri.time = (long)(_variant_t)pStockWeek->GetDataValue(0, itempos); //날짜
pri.endval = (long)(_variant_t)pStockWeek->GetDataValue(4, itempos); //종가
pri.amount = (_variant_t)pStockWeek->GetDataValue(5, itempos); //거래량
pri.yesday_daebi = (long)(_variant_t)pStockWeek->GetDataValue(6, itempos); //전일대비
yesday_price = p_dayinfo_w->pri.endval – p_dayinfo_w->pri.yesday_daebi;
pri.rate = calc_rate(yesday_price, p_dayinfo_w->pri.yesday_daebi); // 등락율 계산
p_daygate_serv->append(&dayinfo_w); // 추가
}
pStockWeek.Release(); // 해체

[그림5 캔들 데이터 프로그램]은 캔들 데이터를 수신하기 위해서 만든 프로그램이다. 지수코드는 일반 종목코드에 포함되어 있지 않아서 선택창을 만들어서 선택하도록 하였고 캔들 데이터는 PC에 저장과 동시에 읽을 수 있도록 했으며 엑셀로 활용할 수 있도록 텍스트로 저장할 수 있다.

그림 5 캔들 데이터 프로그램

 

 


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

이 글은 필자가 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.