-
Couldn't load subscription status.
- Fork 6
Logic Scripting Guide
소고기사랑 edited this page Nov 29, 2021
·
5 revisions
매매 로직은 Python 3 문법으로 작성합니다. 언어에 대한 기본 설명은 생략하고, 추가 제공되는 함수를 설명합니다.
참고: Python 언어는 영어 대소문자를 구별합니다. 함수, 변수명에 한글 사용 가능합니다.
buy(종목코드, 매매량, 가격=0, 메세지='')
sell(종목코드, 매매량, 가격=0, 메세지='')
- 가격을 지정하지 않거나 0으로 하면 시장가로 매수/매도 하게 됩니다.
- 현재가보다 높거나 낮은 가격을 쓰면 해당 가격까지의 시장가로 매수/매도 가능합니다.
- 메세지는 매매 기록과 함께 저장하는 추가 데이터이며 증권사 API호출에 사용되지 않습니다.
- 종목코드에 임의의 값을 사용할 수가 있긴 하나 로직 변수를 통해 정의된 종목코드만 매매해야 백테스트시 트래킹이 가능합니다.
# 예제
buy('069500', 50, 39500, '가즈아~')
sell('069500', 10) # 10주를 시장가로 매도, 보유하고 있지 않다면 증권사API가 에러 리턴
sell_today(종목코드, 익절진입='', 익절결정='', 이익보존='', 익절수량='', 익절가격='', 손절결정='',손절수량='')
- 가격 조건이 맞으면 당일매도하도록 하는 함수입니다.
- 익절진입, 익절결정, 익절수량 은 필수 파라메터입니다. 나머지는 지정안할 경우 기본값이 사용됩니다.
- 단위로 끝나는 문자열로 지정해야 합니다. %,틱,주 등의 단위가 있으며 항목별로 사용가능한 단위가 다릅니다.
- 관리자 웹UI에서 당일 매도 페이지의 신규 생성 다이얼로그를 써보면 좀 더 쉽게 이해할 수 있습니다.
sell_today('069500', 익절진입='5%', 익절결정='-3틱', 이익보존='', 익절수량='50%', 익절가격='시장가', 손절결정='-3%',손절수량='50%')
telegram(메세지)
slack(메세지)
- 텔레그램이나 슬랙으로 메세지를 보내는데 사용합니다.
- 해당 메신저가 설정되어 있지 않거나 스크립트 실행당시 장애가 있으면 메세지가 전송되지 않습니다.
# "종목코드"는 종목코드 문자열이 저장된 변수입니다.
telegram(f'{종목명(종목코드)} ({종목코드}) 골든크로스 발생하였습니다.')
종목명(종목코드)
- 종목코드에 해당하는 한글 종목 이름을 리턴하는 함수입니다. 존재하지 않는 종목코드가 사용되면 에러가 발생합니다.
- 일반 함수처럼 사용할 수도 있고 f'' 포맷스트링의 {} 안에서 사용할 수도 있습니다.
shcode = '069500'
name = 종목명(shcode)
msg = f'종목코드 {shcode}의 종목명은 {종목명(shcode)}입니다.'
호가천장(종목코드, 가격, n=0)
호가바닥(종목코드, 가격, n=0)
- 주문시 가격은 1원단위까지 세세하게 설정할 수 없고, 가격 범위에 따라 50원이나 100원단위로 보정이 되어야 합니다.
- 같은 가격 범위라도 코스피/코스닥,ETF 여부에 따라 호가 단위가 다르므로 6자리숫자 종목코드를 첫번째 인자로 주어야 합니다.
- 천장이나 바닥 함수는 최소 단위보다 작은 가격을 올림이나 버림 계산 처리하여 보정된 가격을 리턴합니다.
- 세번째 인자로 0이 아닌 값이 지정되면 호가 단위로 +/- 할 수 있습니다. (n=1 ➞ 1호가 추가)
# 예: 1만원~5만원 가격범위의 호가는 50원입니다. (ETF는 가격 관계없이 5원입니다.)
호가천장('005930', 13579) ➞ 13600
호가바닥('005930', 13579) ➞ 13550
호가바닥('005930', 13579, -1) ➞ 13500
호가천장('005930', 13579, 2) ➞ 13700
- 지표변수중 타입이 floats인것은 특수 배열입니다. [현재, 어제, 그저께..] 순으로 지표값이 저장되어 있습니다.
- 코드에 가독성을 위해 상수값으로 현재=0, 오늘=0, 어제=-1, 그저께=-2 값이 정의되어 있습니다.
- arr[1]로 어제값을 접근할 수 있지만 날짜 계산을 좀더 자연스럽게 하기 위해 arr(-1) 처럼 괄호를 이용할 수 있습니다.
- 참고: arr[-1]은 Python 문법이라 지표의 제일 과거값입니다.
# "오늘"은 숫자 0값을 가지는 상수이며 "오늘-3" 표현은 숫자 -3값이 됩니다.
지표명(오늘-3) # 3일전 지표값을 억세스할 수 있습니다.
지표명(오늘-1) # 어제 지표값
지표명(어제) # 어제 지표값