This commit is contained in:
dsyoon
2023-12-20 13:42:17 +09:00
parent db5267af49
commit 75b41ab2eb
3 changed files with 71 additions and 44 deletions

View File

@@ -372,33 +372,60 @@ class HTS_etf(HTS):
return result
def getDisparityLimit(self, ticker, RESOURCE_PATH):
conn = sqlite3.connect(os.path.join(RESOURCE_PATH, 'hts.db'))
cursor = conn.cursor()
def getDisparityLimit(self, ticker):
cursor.execute('SELECT disparity_avg5, disparity_avg20, disparity_avg60, disparity_avg120, disparity_avg240, disparity_avg480, disparity_avg1500 FROM hts WHERE CODE=? order by ymd, hms', (ticker['stock_code'],))
avg = {"avg5": [], "avg20": [], "avg60": [], "avg120": [], "avg240": [], "avg480": [], "avg1500": []}
self.connect2DB("hts.db")
self.cursor.execute('SELECT ymd, hms, close FROM hts WHERE CODE=? order by ymd, hms', (ticker["stock_code"],))
q = self.getQ()
db_result = self.cursor.fetchall()
for rows in db_result:
close = rows[2]
q['q_5'].enqueue(close)
q['q_20'].enqueue(close)
q['q_60'].enqueue(close)
q['q_120'].enqueue(close)
q['q_240'].enqueue(close)
q['q_480'].enqueue(close)
q['q_1500'].enqueue(close)
disparity_avg5 = close / q['q_5'].avg()
disparity_avg20 = close / q['q_20'].avg()
disparity_avg60 = close / q['q_60'].avg()
disparity_avg120 = close / q['q_120'].avg()
disparity_avg240 = close / q['q_240'].avg()
disparity_avg480 = close / q['q_480'].avg()
disparity_avg1500 = close / q['q_1500'].avg()
avg["avg5"].append(disparity_avg5)
avg["avg20"].append(disparity_avg20)
avg["avg60"].append(disparity_avg60)
avg["avg120"].append(disparity_avg120)
avg["avg240"].append(disparity_avg240)
avg["avg480"].append(disparity_avg480)
avg["avg1500"].append(disparity_avg1500)
self.disconnect()
disparity = {
'avg': {},
"limit_top_1": {"avg5": None, "avg20": None, "avg60": None, "avg120": None, "avg240": None, "avg480": None, "avg1500": None},
"limit_bottom_1": {"avg5": None, "avg20": None, "avg60": None, "avg120": None, "avg240": None, "avg480": None, "avg1500": None},
"limit_top_3": {"avg5": None, "avg20": None, "avg60": None, "avg120": None, "avg240": None, "avg480": None, "avg1500": None},
"limit_bottom_3": {"avg5": None, "avg20": None, "avg60": None, "avg120": None, "avg240": None, "avg480": None, "avg1500": None}
"limit_bottom_3": {"avg5": None, "avg20": None, "avg60": None, "avg120": None, "avg240": None, "avg480": None, "avg1500": None},
"limit_top_5": {"avg5": None, "avg20": None, "avg60": None, "avg120": None, "avg240": None, "avg480": None, "avg1500": None},
"limit_bottom_5": {"avg5": None, "avg20": None, "avg60": None, "avg120": None, "avg240": None, "avg480": None, "avg1500": None},
"limit_top_10": {"avg5": None, "avg20": None, "avg60": None, "avg120": None, "avg240": None, "avg480": None, "avg1500": None},
"limit_bottom_10": {"avg5": None, "avg20": None, "avg60": None, "avg120": None, "avg240": None, "avg480": None, "avg1500": None},
"limit_top_20": {"avg5": None, "avg20": None, "avg60": None, "avg120": None, "avg240": None, "avg480": None, "avg1500": None},
"limit_bottom_20": {"avg5": None, "avg20": None, "avg60": None, "avg120": None, "avg240": None, "avg480": None, "avg1500": None},
"limit_top_50": {"avg5": None, "avg20": None, "avg60": None, "avg120": None, "avg240": None, "avg480": None, "avg1500": None},
"limit_bottom_50": {"avg5": None, "avg20": None, "avg60": None, "avg120": None, "avg240": None, "avg480": None, "avg1500": None}
}
avg = {"avg5": [], "avg20": [], "avg60": [], "avg120": [], "avg240": [], "avg480": [], "avg1500": []}
db_result = cursor.fetchall()
for rows in db_result:
avg["avg5"].append(float(rows[0]))
avg["avg20"].append(float(rows[1]))
avg["avg60"].append(float(rows[2]))
avg["avg120"].append(float(rows[3]))
avg["avg240"].append(float(rows[4]))
avg["avg480"].append(float(rows[5]))
avg["avg1500"].append(float(rows[6]))
cursor.close()
conn.close()
disparity['avg'] = avg
disparity_1500 = sorted(list(set(avg['avg1500'])), reverse=True)
disparity_480 = sorted(list(set(avg['avg480'])), reverse=True)
@@ -408,22 +435,22 @@ class HTS_etf(HTS):
disparity_20 = sorted(list(set(avg['avg20'])), reverse=True)
disparity_5 = sorted(list(set(avg['avg5'])), reverse=True)
poses = [1, 3]
poses = [1, 3, 5, 10, 20, 50]
for pos in poses:
disparity['limit_top_'+str(pos)]['avg1500'] = disparity_1500[pos]
disparity['limit_bottom_'+str(pos)]['avg1500'] = disparity_1500[len(disparity_1500)-pos]
disparity['limit_top_'+str(pos)]['avg480'] = disparity_480[pos]
disparity['limit_bottom_'+str(pos)]['avg480'] = disparity_480[len(disparity_480)-pos]
disparity['limit_top_'+str(pos)]['avg240'] = disparity_240[pos]
disparity['limit_bottom_'+str(pos)]['avg240'] = disparity_240[len(disparity_240)-pos]
disparity['limit_top_'+str(pos)]['avg120'] = disparity_120[pos]
disparity['limit_bottom_'+str(pos)]['avg120'] = disparity_120[len(disparity_120)-pos]
disparity['limit_top_'+str(pos)]['avg60'] = disparity_60[pos]
disparity['limit_bottom_'+str(pos)]['avg60'] = disparity_60[len(disparity_60)-pos]
disparity['limit_top_'+str(pos)]['avg20'] = disparity_20[pos]
disparity['limit_bottom_'+str(pos)]['avg20'] = disparity_20[len(disparity_20)-pos]
disparity['limit_top_'+str(pos)]['avg5'] = disparity_5[pos]
disparity['limit_bottom_'+str(pos)]['avg5'] = disparity_5[len(disparity_5)-pos]
disparity['limit_top_' + str(pos)]['avg1500'] = disparity_1500[pos - 1]
disparity['limit_bottom_' + str(pos)]['avg1500'] = disparity_1500[len(disparity_1500) - pos - 1]
disparity['limit_top_' + str(pos)]['avg480'] = disparity_480[pos]
disparity['limit_bottom_' + str(pos)]['avg480'] = disparity_480[len(disparity_480) - pos - 1]
disparity['limit_top_' + str(pos)]['avg240'] = disparity_240[pos]
disparity['limit_bottom_' + str(pos)]['avg240'] = disparity_240[len(disparity_240) - pos - 1]
disparity['limit_top_' + str(pos)]['avg120'] = disparity_120[pos]
disparity['limit_bottom_' + str(pos)]['avg120'] = disparity_120[len(disparity_120) - pos - 1]
disparity['limit_top_' + str(pos)]['avg60'] = disparity_60[pos]
disparity['limit_bottom_' + str(pos)]['avg60'] = disparity_60[len(disparity_60) - pos - 1]
disparity['limit_top_' + str(pos)]['avg20'] = disparity_20[pos]
disparity['limit_bottom_' + str(pos)]['avg20'] = disparity_20[len(disparity_20) - pos - 1]
disparity['limit_top_' + str(pos)]['avg5'] = disparity_5[pos]
disparity['limit_bottom_' + str(pos)]['avg5'] = disparity_5[len(disparity_5) - pos - 1]
return disparity