글
[시스템트레이딩] 전략 시뮬레이션(8) - 과거 데이터(분봉) 연속으로 가져오기
이전 분봉 가져오기 글에서 설명한 코드를 정리해서 github에 올립니다.
github.com/multizone-quant/System_trading_ex/blob/main/get_upbit_candles.py
과거 데이터 중 tick과 candle 데이터는 형태가 틀립니다. 따라서 이 데이터를 가져오는 방식도 조금 차이가 있는데요. 기존에는 한 프로그램으로 tick과 candle을 모두 처리하다보니 조금 복잡한 것 같아서 우선 candle만 가져오는 프로그램으로 분리를 했습니다.
동작방식은 아래와 같습니다.
우선 분/일봉 데이터를 최대한 가져옵니다. 여기에 from 보다 과거 candle이 있으면 지운 후 파일에 저장합니다. 그 반대로 아직 받아야할 candle이 더 있으면 to 값을 변경하여 다시 받는 것을 반복합니다.
이렇게 만들어진 파일을 한 파일로 합칩니다.
프로그램 동작시킬 때 필요한 변수 값들입니다.
CANDLE_TYPE = 'min' # 'min' or 'day'
CANDLE_INTERVAL = 1 # 1, 3,5,10,30,60
COIN = 'KRW-HUNT' # 원하는 코인 정보
FROM = '2021-01-11 20:00:00' # 특정 일자부터 받고 싶을 때 : '2021-01-12 10:00:00' (KST임)
TO = None # None:최근시간부터, 특정시간 : '2021-01-12 10:00:00' (KST임)
아직 TO 값을 변경하면서 test하지 않았기 때문에 최근 candle 부터 FROM까지 분/일봉 데이터를 받을 수 있습니다.
TO 값을 입력하여도 정상동작하도록 수정하였습니다. 기존에는 타임존까지 표시하게 하였으나, 그냥 타임존은 생략하도록 (KST기준임) 수정하였습니다. 직관적으로 TO 값을 입력할 수 있도록 TO 값도 KST 기준으로 입력하도록 수정하였습니다. 이때 TO보다 작은 값까지 저장합니다.
만약 하루치를 원하는 경우에는 아래와 같이 입력하시면 됩니다.
----------
버그 수정
2021/1/12 오후 3시 이후로 to 값을 변경하면서 과거 데이터를 모두 가져오는 기능이 동작하지 않습니다. 참고하세요.
연속가져오기에 들어가는 to 시간값은 utc 시간입니다. 따라서 next_to 부분에 들어가는 시간값을 utc 값으로 수정하니 잘 동작합니다.
그리고 일부 데이터가 빠져있는 문제는 아래와 같이 timestamp 값이 None인 구간이 있어서 발생한 문제입니다. 따라서 sort 할때 key값으로 KST 값을 이용하여 문제를 해결하였습니다.
결론적으로 이제 잘 동작합니다.
'시스템트레이딩' 카테고리의 다른 글
[시스템트레이딩] API를 이용한 자동매매(4) (13) | 2021.03.28 |
---|---|
[시스템트레이딩] 전략 시뮬레이션(9) - 과거 데이터(체결, tick데이타) 연속으로 가져오기 (0) | 2021.01.17 |
[시스템트레이딩] API를 이용한 자동매매(3) (0) | 2020.12.12 |
[시스템트레이딩] API를 이용한 자동매매(2) (10) | 2020.12.12 |
[시스템트레이딩] API를 이용한 자동매매(1) (2) | 2020.12.11 |