[자동 매매 시스템 구축하기] 알고리즘 구축하기 (14) - 매수 예정 종목 데이터프레임 확인하기 ③
지난 게시글에서는 차트 데이터를 알고리즘 파일에 전달한 후 계산 절차를 거쳐 매수 예정 가격 데이터를 얻어오는 기능까지 모두 구현했다. 이번 게시글에서는 종목별로 계산된 매수 예정 가격 데이터 데이터프레임을 모두 합쳐서 하나의 파일로 만든 후에, 그 결과 데이터를 확인하는 것까지 구현할 예정이다.
합칠 대상이 되는 데이터프레임 변수 생성하기
algorithm_1.py 파일 내에서는 _df.py 파일 내에 있는 def algo1_df() 를 호출해서 함수에서 반환되는 데이터프레임에 데이터를 입력했었다. 이와 마찬가지로 main.py 파일 내에서도 동일한 변수를 호출해서 algorithm_1.py 파일로부터 전달받은 데이터를 입력할 변수를 생성한 후에 해당 변수에 매수 예정 가격 데이터가 담긴 result[1] 변수를 concat 메서드를 활용하여 합치고 전체 데이터를 확인해볼 예정이다. ※ Line : 2, 11~15
def _pushbtn_7(self):
total_df = _df.algo1_df()
for item_code in self.code_list:
if item_code != "":
min5_chart_data = self.request_opt10080(item_code, 5)
print(min5_chart_data)
result = algo1(min5_chart_data, "20220826", item_code).run()
if result[0]:
total_df = pd.concat([total_df, result[1]], ignore_index=True).reset_index(drop=True)
print("total_df")
print(total_df)
가장 먼저 Line 2 에서는 algorithm_1.py 파일에서 사용했던 방식과 동일한 방식으로 데이터프레임 변수( total_df )를 생성해준다. 그 후에 Line 11 에서는 result[0] 의 값이 True인 경우에만 total_df 라는 데이터프레임 변수에 result[1] 을 입력하도록 했다. 마지막으로 Line 14, 15 에서는 반복문이 종료된 후에 total_df 변수를 출력하도록 함으로써 최종 결과 데이터를 확인하면 된다.
아래의 결과를 확인해보니, 지난 게시글에서 확인했던 네 개 종목의 매수 예정 가격 데이터가 잘 계산되어 출력되고 있음을 확인할 수 있다.
>>>
total_df
item_code first_buy_price second_buy_price
0 042670 6695.0 NaN
1 044060 2187.5 NaN
2 048410 32700.0 NaN
3 095910 6460.0 NaN
728x90
매수 예정 가격 데이터 관리하기
사실 데이터 관리라 함은 상당히 복잡하고 어려우며, 성공적으로 관리하기 위해서는 상당히 디테일한 요소들을 함께 고려해야 한다. 세부적으로 설명하자면 설명할 것도 상당히 많으니, 일단 오늘은 당일 당일 조건검색식 데이터를 저장하는 방법에 대해서만 언급하도록 하고, 다음 게시글에서는 데이터베이스의 데이터를 불러와서 실시간으로 등록하는 방법에 대해 살펴볼 예정이다.
그러기 위해서는 일단 condition(조건)이라는 데이터베이스를 생성한 후, 그 안에서 일자별로 집계된 종목코드를 저장하도록 해야 한다. 먼저, manage_db.py 파일 내에서 condition과 연결할 engine 을 생성해주도록 하자. ※ Line : 2, 3