diff --git a/hts/HTS.py b/hts/HTS.py index 0ef7d42..789dcf2 100644 --- a/hts/HTS.py +++ b/hts/HTS.py @@ -911,7 +911,7 @@ class HTS: def buyRealTime(self, stock_code, given_day): PREVIOUS_PRICE = 0 - BUY_COUNT = 200 + BUY_COUNT = 300 TOTAL_BUY_AMT = 0 logFp = open(given_day+".log", "w") @@ -927,6 +927,9 @@ class HTS: "low": [], "vol": []} + avg60_1 = 0 + avg60_2 = 0 + final_price = 0 print ("START...") while datetime.strptime(given_day + " 083000", '%Y%m%d %H%M%S') < datetime.now() < datetime.strptime(given_day + " 151500", '%Y%m%d %H%M%S'): second = datetime.now().strftime('%Y%m%d %H%M%S') @@ -941,23 +944,25 @@ class HTS: # 분석을 통해서 볼린저밴드 상/하단을 계산한다. data, upper, lower = self.analyze(result) - + avg60_2 = data['avg60'][len(data['avg60']) - 2] + avg60_1 = data['avg60'][len(data['avg60']) - 1] + final_price = data["Close"][len(data["Close"])- 1] # 사야 할 시점/가격과 팔아야 할 시점/가격을 체크한다. bs_buy_price, bs_sell_price = self.checkTransaction_Realtime(data, upper, lower) if bs_buy_price > 0: if PREVIOUS_PRICE > 0: if PREVIOUS_PRICE > bs_buy_price: - if BUY_COUNT > 240: + if BUY_COUNT > 340: + BUY_COUNT = 340 + if BUY_COUNT <= 240: BUY_COUNT = 240 - if BUY_COUNT <= 140: - BUY_COUNT = 140 BUY_COUNT += 10 elif PREVIOUS_PRICE < bs_buy_price: - if BUY_COUNT > 250: + if BUY_COUNT > 350: + BUY_COUNT = 360 + if BUY_COUNT <= 250: BUY_COUNT = 260 - if BUY_COUNT <= 150: - BUY_COUNT = 160 BUY_COUNT -= 10 PREVIOUS_PRICE = bs_buy_price @@ -985,16 +990,15 @@ class HTS: # 60일 선이 꺾여서 하락 중일 경우만 바로 매도를 한다. - size = len(data["avg60"]) - if data["avg60"][size-2] > data["avg60"][size-1]: + if ((avg60_1 != 0 and avg60_2 != 0) and avg60_2 > avg60_1): # 만약 잔고가 있으면 장부가보다 5원 높게 매도한다. jangoDic = self.requstJango() if jangoDic and len(jangoDic.keys()) > 0: for code in jangoDic: TOTAL_BUY_AMT = jangoDic[code]['매입금액'] if jangoDic[code]['매도가능'] > 0: - if data["Close"][size-1] > jangoDic[code]['장부가'] + 5: - self.requestOrder("1", stock_code, jangoDic[code]['매도가능'], data["Close"][size-1]) + if final_price > jangoDic[code]['장부가'] + 5: + self.requestOrder("1", stock_code, jangoDic[code]['매도가능'], final_price) else: # 장부가 가격의 마지막 자리를 0으로 만든다. (2090 -> 2090, 2092 -> 2090, 2098 -> 2090) sell_price = int(jangoDic[code]['장부가'] / 10) * 10