diff --git a/HTS_stocks.py b/HTS_stocks.py index 48bf900..581258d 100644 --- a/HTS_stocks.py +++ b/HTS_stocks.py @@ -38,7 +38,6 @@ class HTS_Stocks (HTS): self.orderChecker = OrderChecker(self.RESOURCE_PATH, "STOCK") self.analyzed_day = 120 - self.MAX_BUY_PRICE = 300000 return @@ -108,13 +107,13 @@ class HTS_Stocks (HTS): self.cursor_stock.execute('SELECT distinct code, name FROM stock order by code') all_stocks = self.cursor_stock.fetchall() - valid_company = set() - self.cursor_stock.execute('select CODE, NAME, max(ymd) as ymd from fnguide where type != "E" group by 1 order by total_assets desc') + valid_company = dict() + self.cursor_stock.execute('select CODE, NAME, max(ymd) as ymd from fnguide where type != "E" group by 1 order by net_profit desc') items = self.cursor_stock.fetchall() - for item in items: - valid_company.add(item[0]) + for i, item in enumerate(items): + valid_company[item[0]] = i - return all_stocks, valid_company + return all_stocks, list(valid_company) def getSlowK(self, stock_code): slow_k_week, slow_k_month = -1, -1 @@ -129,6 +128,21 @@ class HTS_Stocks (HTS): return slow_k_week, slow_k_month + def getMaxPrice(self, code, valid_company): + max_price = 100000 + if code in valid_company: + if 0 < valid_company[code] <= 250: + max_price = 300000 + elif 250 < valid_company[code] <= 500: + max_price = 250000 + elif 500 < valid_company[code] <= 1000: + max_price = 200000 + elif 1000 < valid_company[code] <= 1500: + max_price = 150000 + else: + max_price = 100000 + return max_price + def buyRealTime(self, today, n = 200): a,b = self.getSlowK("001430") @@ -192,9 +206,10 @@ class HTS_Stocks (HTS): bs_buy_price = bsLine['buy'][last_index] bs_buy_weight = bsLine['buy_weight'][last_index] - buy_count = int(math.ceil(self.MAX_BUY_PRICE / bs_buy_price)) - if self.MAX_BUY_PRICE <= bs_buy_price < 2 * self.MAX_BUY_PRICE: - buy_count = int(2 * self.MAX_BUY_PRICE / bs_buy_price) + MAX_BUY_PRIFE = self.getMaxPrice(stock_code, valid_company) + buy_count = int(math.ceil(MAX_BUY_PRIFE / bs_buy_price)) + if MAX_BUY_PRIFE <= bs_buy_price < 2 * MAX_BUY_PRIFE: + buy_count = int(2 * MAX_BUY_PRIFE / bs_buy_price) if buy_count > 0: # 매수를 주문한다.