Skip to content
View ghts's full-sized avatar

Block or report ghts

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
ghts/README.md

DEPRECATED 경고 : 이 저장소는 DLL호출 방식의 Xing API를 사용합니다.

새로 개발하는 프로젝트의 경우, 최근 출시된 HTTP 방식의 Open API가 권장됩니다.
(https://openapi.ls-sec.co.kr/)

GHTS

  • 국내 주식 매매 기능은 LS증권 API를 통해 구현되어서 실거래 적용 중.
  • 자주 사용되는 몇몇 TR만 구현됨.

<주의>
Go언어 버전 1.23 이상에서만 작동합니다.
(의존 라이브러리(golang.org/x/net) 보안 취약점 업그레이드 이후 생긴 현상.)

현재 Xing API 버전 12.0.0에 대응합니다.
대체 거래소 출범으로 인해서 최근 Xing API도 자주 업그레이드 되고 있습니다.
이 과정에서 오래된 코드를 점검/정리/수정하다가 몇몇 변경이 발생했습니다.
대표적으로 주식 주문 TR (CSPAT00600, CSPAT00700)의 질의값 대출일이 string에서 time.Time으로 변경했습니다.
신용주문이 아닐 경우, 대출일을 제로값인 time.Time{}으로 설정하면 됩니다.


사전준비물

Xing API 관련 기능은 개발 편의성을 위해서
Go언어, Xing API가 기본 위치에 설치된 것을 상정하고 있습니다.

  • Go언어 : C:\Program Files\Go
  • Xing API : C:\LS_SEC\xingAPI

사용법 :

go get -u github.com/ghts/ghts


Go언어

  • 복수의 매매 전략을 간편하게 동시 운용.
  • DLL호출은 잘 지원되지만, COM/OLE/OCX에 대한 지원은 빈약한 편.

LS증권 Xing API

  • DLL 호출과 COM/OLE 호출을 모두 지원. (Go언어와 호환성 우수.)
  • API 문서가 비교적 충실함.
  • LS증권사 홈페이지의 질답 게시판에서 비교적 원활한 기술 지원 진행.

증권사 API 호출 기능은 별도의 프로세스로 분리됨.

  • '매매 전략 실행'은 64비트에서 실행해야 할 필요성 제기됨.
  • '증권사 API 호출'은 32비트에서'만' 호출할 수 있음. (국내 모든 증권사 API 공통)
  • '매매 전략 실행'과 '증권사 API 호출'을 독립된 프로세스로 분리 후 RPC로 상호 연동.
  • 자세한 기술적 사항은 https://ghts.tistory.com/48 참조

디렉토리별 설명

  • lib : 공용 기능.
  • xing/base : Xing API 32비트/64비트 공용 자료형.
  • xing/go : Xing API를 간접적으로 호출하는 순수 Go언어 모듈. (64비트 가능)
  • xing/dll32 : Xing API DLL을 직접 호출하는 모듈. (32비트 전용)

API 사용 관련 파일

  • xing/go/func_TR.go : TR호출 함수.
  • xing/go/tr_<TR코드>_test.go : 개별 TR코드 함수 사용법.

Xing API 사용 전 준비 (초기화)

import (
    xt "github.com/ghts/ghts/xing/base"
    xing "github.com/ghts/ghts/xing/go"
    
    <... 기타 의존성 라이브러리 ...>
)

func main() {
    // "..." 자리에 계좌 정보 문자열 상수 설정.    
    // 'xt.P서버_실거래' 대신 'xt.P서버_모의투자' 사용 가능.

    로그인_정보 := &xt.S로그인_정보{
        M로그인_ID: "로그인_ID",
        M로그인_암호: "로그인_암호",
        M인증서_암호: "인증서_암호",
        M계좌_비밀번호: "계좌_비밀번호",
        M모의투자_암호: "모의투자_암호",    // 모의투자 암호는 선택 항목.
    }

    xing.F초기화(xt.P서버_실거래, 로그인_정보)  
    defer xing.F종료()

    // 위 예시는 처음 테스트 할 때 간편하게 초기화 하는 예제이며,
    // 본격적으로 개발할 때는 소스코드에 각종 로그인 정보가 들어가는 것은 보안에 불리하므로, 
    // xt.F로그인_설정_화일_경로_설정(), xt.F로그인_설정_화일_읽기() 을 활용해서
    // 로그인 정보를 별도의 설정 화일에 분리해서 저장하고, 
    // 해당 설정 화일은 소스코드 관리 시스템에서 제외시켜서 공유되지 않도록 하는 게 좋다.
       
    <... 이하 Xing API 호출 코드 ...>
}

TR이란

  • 트랜잭션(TRansaction)의 약자.
  • 증권사 서버와 사용자 컴퓨터 간의 상호 작용을 의미.
  • 사용자가 증권사 서버에게 시킬 작업을 의미하게 됨.

TR코드

  • 증권사 서버가 수행할 작업(TR)을 나타내는 코드.

주식 매매에 자주 사용되는 TR코드

  • 현재가 : t1101/t8407
  • 호가 : t1102
  • 주문 : CSPAT00600/CSPAT00700/CSPAT00800 (정상/정정/취소)
  • 계좌 평가액 : CSPAQ12200
  • 보유 현황 : CSPAQ12300
  • 주문 가능 금액 : CSPAQ22200
  • 일일 가격 정보 : t1305/t8413
  • 전체 종목 코드 : t8436
  • 현재 서버 시각 : t0167

TR코드에 대한 더 자세한 내용은 LS증권 Xing API 패키지를 설치하면 함께 설치되는 DevCenter를 참고.
주의 : GHTS에는 일부 TR만 구현되어 있습니다.


악성코드로 오진되는 경우.

'매매 전략 실행'과 '증권사 API 호출'이 별도의 프로세스로 분리되고,
상호 간에 RPC 호출을 통해서 상호 연동하는 과정에서
TCP/IP 네트워크 호출이 발생하는 데
'안랩 세이프 트랜잭션'(AST : Ahnlab Safe Transaction)에서
이를 멀웨어(MDP.Connect.M1924)로 오진하는 문제가 발생합니다.
AST에서 '위협 행위 차단'을 해제해야 정상 작동합니다.
윈도우 기본 백신인 '윈도우 디펜더'에서는 이런 문제가 발생하지 않습니다.


개발에는 C언어 컴파일러 추가 설치 필요

일반적인 GHTS 사용에는 굳이 필요하지 않지만,
GHTS의 소스코드를 수정하는 개발 과정에서
LS증권 API 자료형과 동기화가 필요한 경우에는
C언어 컴파일러가 추가로 필요합니다.

MSYS2에서 C 컴파일러 설치 ('MSYS2 -> MSYS' 터미널에서 아래 명령을 실행.)

pacman -Syuu 
pacman -S base-devel mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain

<주의>

저작권자, 개발자, 개발에 참여한 기여자들은 이 소프트웨어에 대한 어떠한 보증도 하지 않습니다.
이 소프트웨어를 사용하면서 발생하는 그 어떠한 손실 및 손상에 대해서 책임지지 않습니다.
소스코드 파일에 별도의 언급이 없는 한, 모든 소스코드는 GNU LGPL V2.1 라이센스를 따릅니다.
저작권에 대한 자세한 사항은 'LICENSE' 파일을 참고하십시오.

Pinned Loading

  1. ghts Public

    GHTS : GH 트레이딩 시스템

    Go 28 14

  2. rms_contrast Public

    DSLR카메라의 AF미세조정을 위해서 이미지 파일의 컨트라스 값 계산.

    Go