ghts

package module
v0.0.0-...-168151f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 10, 2024 License: LGPL-2.1 Imports: 0 Imported by: 0

README

GHTS

자동 주식 매매 시스템 구현에 유용한 라이브러리.

  • 국내 주식 매매 기능은 이베스트증권 API를 통해 구현되어서 실거래 적용 중.
  • 향후 대대적인 구조 변경 가능성 있음. (증권사 API 모듈 분리, nanomsg -> gRPC, 제너릭 적용 등등)

<주의>
현재(2023년 11월) 권장되는 Go언어 버전은 1.21 입니다.
Go 1.19에서는 정상 작동하는 것이 확인되었지만, Go 1.18, 1.20의 초기 버전에서는 문제가 발생할 수 있습니다.


사전준비물

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

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

GHTS 라이브러리 설치 (명령 프롬프트 창에서 아래 명령을 실행.)

go get -u github.com/ghts/ghts

Go언어

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

이베스트투자증권 Xing API

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

증권사 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코드에 대한 더 자세한 내용은 이베스트 Xing API 패키지를 설치하면 함께 설치되는 DevCenter를 참고.
주의 : GHTS에는 일부 TR만 구현되어 있습니다.


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

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


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

일반적인 GHTS 사용에는 굳이 필요하지 않지만,
GHTS의 소스코드를 수정하는 개발 과정에서
이베스트 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' 파일을 참고하십시오.

Documentation

Overview

자동 주식 매매 시스템 구현에 유용한 라이브러리. 이베스트 증권 Xing API 지원.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL