본문 바로가기
Development/ETC

[C#]대신증권 싸이보스 플러스 API 이용하기

by True Life 2016. 12. 15.



[C#]대신증권 싸이보스 플러스 API 이용하기


대신증권에서는 주식 사용자들을 위해 주식 정보에 대한 API를 제공한다.

최근 부탁이 들어온 곳이 있어 잠깐 살펴보았는데 이에 대해 포스팅하려고 한다.

IDE는 Visual Studio를 사용했으며 언어는 asp.net (C#)이다.

최종적으로는 MSSQL에 DB 저장까지 했는데 필요 없는 부분은 지우고 해도 된다.


일단 사이보스 프로그램은 아래에서 다운받는다.


http://money.daishin.co.kr/download/CYBOS5.exe


이건 도움말이다.


http://money.daishin.co.kr/download/cybosplus/cybosplushelp.zip


도움말에 들어가보면 알겠지만 많은 API들에 대한 설명이 있다.


대신증권 프로그램을 설치하면

C:\DAISHIN\CYBOSPLUS

이 경로에 많은 dll 들이 있다. 



Visual Studio의 Project - Add Reference 하여 나오는 창에 Browse로 검색해 추가시켜주면 된다.

java의 external lib 추가와 비슷하다.


기본적으로 대신 API는 COM 라이브러리를 제공하여 이를 지원하는 모든 언어에서 사용할 수 있다.


라이브러리마다 추가해야되는 dll은 다르며 내 경우에는

using CPSYSDIBLib;


를 추가하였다.

CpSvr7254 cpsvr7254;

객체를 사용하기 위함이다.




도움말을 보면 알겠지만 이 API에 대한 자세한 설명과 필요한 dll 파일이 적혀있으니 간단하게 사용 가능하다.


프로그램 동작에는 Cybosplus가 로그인되어있어야한다. 아래는 내 소스이다.


대신 최종.zip




소스를 간단히 보면 알겠지만 그리 어려운 부분은 없는 듯 하다.

using System.Data.SqlClient; 를 이용해 MSSQL 쿼리까지 날려주었다.


기본적으로 API에 cpsvr7254.SetInputValue(1, 4); 를 이용해 인자값을 넘겨주고 cpsvr7254.BlockRequest(); 날려주고 cpsvr7254.Received += Cpsvr7254_Received; 되어 있는 콜백함수를 통해 데이터를 Lbl2.Text = "" + cpsvr7254.GetDataValue(0, 0); 읽어와 처리하는 것이다.


'-2147483638(8000000a)' 런타임 오류가 발생하였습니다.. U-CYBOS 서버에 접속되어 있지 않습니다.'


프로그램을 실행시키면 위와 같은 에러가 발생할 수 있다.

이는 Cybosplus를 관리자 권한으로 실행하면 해결될 수 있으며


그래도 해결되지 않으면 Visual Studio도 관리자 권한으로 실행해본다.


그리고 Debug 모드로 하면 블루스크린이 뜨기도 한다ㅠㅠ

이 경우 조금 번거롭더라도 log 디버깅을 해주고 Release 빌드 하자.


프로그래밍은 참 심오하다..