< 7. 알고리즘 최적화를 통한 수익율 극대화 (키움 open api 주식 알고리즘 테스트 프로그래밍) >
1. 키움 open api를 이용한 주식 알고리즘 테스트 프로그래밍
해당 포스트를 읽기 전에 위의 포스트들을 읽기 바란다.
우리는 지난 포스트까지 알고리즘을 적용하기 전과 후의 매수/매도 수익율을 구한 다음 비교해보았다. 이번에는 구현한 알고리즘의 변수를 조정해서 수익율을 극대화하는 코드를 구현할 것이다. 구현은 간단하다. '5. 알고리즘을 통한 매수,매도 테스트' 에서 배운 'set_var1_and_var2(self,var1,var2)' 메서드를 이용하면 된다. var1과 var2는 알고리즘내에 기준 변수가 되어 해당 변수를 토대로 매수할 지 매도할 지 결정한다.
'optimize()' 메서드는 사용자가 var1과 var2에 대한 범위를 주면 범위 내의 var1과 var2에 대한 총 수익율을 구하고 이를 DB에 저장한다.
def optimize(self,var1_start, var1_end, var2_start, var2_end,start, end): self.optimize_profit = pd.DataFrame(columns=('var1','var2','profit')) while var1_start<=var1_end: var2 = var2_start while var2<=var2_end: self.backTracking.set_var1_and_var2(var1,var2) profits_data = self.backTracking.get_days_profit(start,end) profit = profits_data['total_profit'][len(profits_data)-1] self.optimize_profit = self.optimize_profit.append(pd.Series({'var1' : var1, 'var2' : var2, 'profit' : profit}),ignore_index=True) self.db.insert_Profit(var1,var2,profit) var2+=0.0003 var1_start+=1 self.db.commit()
'var*_start'와 'var*_end'로 범위를 주고 start와 end로 수익율을 구할 기간을 정한다. 'self.optimize_profit'는 var1과 var2에 따른 수익율을 저장한다. for문을 통해 var1과 var2가 일정 간격으로 변한다. 'set_var1_and_var2(var1,var2)'로 알고리즘의 var1과 var2 값을 설정하고 'get_days_profit()'를 이용해 지정된 기간동안 수익율을 정한다. 결과 값을 'optimize_profit'에 저장하고 'insert_Profit'를 이용해 DB에 데이터를 저장한다.
'optimize' 함수를 이용해 var1과 var2에 따른 수익율을 'self.optimize_profit'에 저장했다. 수익율을 최대화하는 var1과 var2를 구하려면 다음 코드처럼 하면 된다.
max_profit_data = self.optimize_profit.ix[self.optimize_profit['profit'].idxmax()] print("최대 이익 : var1 => " + str(max_profit_data['var1']) + " var2 => "+ str(max_profit_data['var2']) + " profit : " + str(max_profit_data['profit']) )
더 구체적인 데이터 분석을 하고 싶다면 DB에 데이터를 저장했기 때문에 DB SQL문을 이용하면 된다.
'주식 프로그래밍(시스템 트레이딩)' 카테고리의 다른 글
2. 주가 일봉 데이터 저장 프로그램 개발(DB 설계 및 구현) (5) | 2018.01.06 |
---|---|
1. 주가 일봉 데이터 저장 프로그램 개발(개요) (1) | 2018.01.05 |
6. 알고리즘 전 후 수익율 테스트 (키움 open api 주식 알고리즘 테스트 프로그래밍) (1) | 2017.11.15 |
5. 알고리즘을 통한 매수, 매도 테스트 (키움 open api 주식 알고리즘 테스트 프로그래밍) (1) | 2017.11.14 |
4. 주식 데이터 불러오기 (키움 open api 주식 알고리즘 테스트 프로그래밍) (3) | 2017.11.13 |