This commit is contained in:
dsyoon
2023-12-13 17:23:38 +09:00
parent f0c0638322
commit f9b8fd7ba2
4 changed files with 112 additions and 135 deletions

View File

@@ -10,7 +10,7 @@ class BuySellChecker():
PATTERNS = None
RESOURCE_PATH = None
def __init__(self, RESOURCE_PATH, s):
def __init__(self, RESOURCE_PATH):
self.RESOURCE_PATH = RESOURCE_PATH
return
@@ -98,58 +98,10 @@ class BuySellChecker():
df_signal = data_signal.loc[df_tmp]
si = len(df_signal) - 1
"""
if isRealTime:
macds = data['macd'][i-300:i].to_list()
if 0 < len(macds):
macds_max = max(macds)
mi = i-300 + macds.index(macds_max)
if data['macd'][i] < macds_max and data['close'][mi] < data['close'][i]:
return buy_ymd, buy_price, buy_count, buy_cut, buy_type
else:
return buy_ymd, buy_price, buy_count, buy_cut, buy_type
else:
macds = self.getMacd(ticker['ticker_code'], data['ymd'][i].strftime('%Y%m%d'), mins=1)
if len(macds) == 0:
return buy_ymd, buy_price, buy_count, buy_cut, buy_type
macds_sort = sorted(macds, key=lambda x:x[0], reverse=True)
if data['macd'][i] < macds_sort[0][1] and macds_sort[0][2] < data['close'][i]:
return buy_ymd, buy_price, buy_count, buy_cut, buy_type
"""
duration = 3
if sum(data['trend_avg'][i - duration:i]) / duration < data['trend_avg'][i]:
# 상승 트렌드
if data_signal['avg20'][si] < data_signal['avg5'][si]:
"""
# 방법 1:
if max(data['volume_up'][i-180:i]) < data['volume_up'][i]:
if data_signal['slow_k'][si] < 70:
if BUY_LIST is not None and 0 < len(BUY_LIST['buy_list']) and BUY_LIST['buy_list'][-1]['buy_price'] < data['close'][i]:
buy_price = data['close'][i]
buy_type = 'volume_up'
buy_ymd = data['ymd'][i]
if data['slow_k'][si] < 30:
buy_count = MAX_BUY_PRICE / (1 * data['close'][i])
elif data['slow_k'][si] < 50:
buy_count = MAX_BUY_PRICE / (2 * data['close'][i])
else:
buy_count = MAX_BUY_PRICE / (3 * data['close'][i])
return buy_ymd, buy_price, buy_count, buy_cut, buy_type
else:
buy_price = data['close'][i]
buy_type = 'volume_up'
buy_ymd = data['ymd'][i]
if data['slow_k'][si] < 30:
buy_count = MAX_BUY_PRICE / (1 * data['close'][i])
elif data['slow_k'][si] < 50:
buy_count = MAX_BUY_PRICE / (2 * data['close'][i])
else:
buy_count = MAX_BUY_PRICE / (3 * data['close'][i])
return buy_ymd, buy_price, buy_count, buy_cut, buy_type
"""
# 방법 2:
if data['avg480'][i] < data['avg120'][i] < data['avg60'][i] < data['avg20'][i] < data['avg5'][i] < data['close'][i]:

View File

@@ -647,25 +647,20 @@ class HTS:
return result
# 주식 현재가 조회
def getRealTime(self, stock_code, today, LAST_DATA=None):
if LAST_DATA is not None:
#result = copy.deepcopy(LAST_DATA)
result = {"check": set(), "ymd": [], "open": [], "close": [], "high": [], "low": [], "volume": [], "label": []}
for i in range(len(LAST_DATA['ymd'])):
result["ymd"].append(LAST_DATA['ymd'][i])
result["open"].append(LAST_DATA['open'][i])
result["close"].append(LAST_DATA['close'][i])
result["high"].append(LAST_DATA['high'][i])
result["low"].append(LAST_DATA['low'][i])
result["volume"].append(LAST_DATA['volume'][i])
result["label"].append(LAST_DATA['label'][i])
else:
result = {"check": set(), "ymd": [], "open": [], "close": [], "high": [], "low": [], "volume": [], "label": []}
#### real time에서 아직 저장된 것이 없기 때문에 result는 아무것도 채워지지 않는다.
self.getDBData(stock_code, today, result)
def getRealTime(self, stock_code, today, LAST_DATA=None, n=7):
result = {"check": set(), "ymd": [], "open": [], "close": [], "high": [], "low": [], "volume": [], "label": []}
days = []
for i in range(1, 100):
last_day = (datetime.strptime(today, '%Y%m%d') - timedelta(i)).strftime('%Y%m%d')
isValid = self.isValidYMD(stock_code=stock_code, day=last_day)
if isValid:
days.append(last_day)
if len(days) >= n:
break
days = sorted(days)
for day in days:
self.getDBData(stock_code, day, result)
int_given_day = int(today)
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")