init
This commit is contained in:
95
HTS_etf.py
95
HTS_etf.py
@@ -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
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ if __name__ == "__main__":
|
||||
|
||||
BUY_LIST[stock['stock_code']]['MAX_BUY_PRICE'] = config['MAX_BUY_PRICE']
|
||||
BUY_LIST[stock['stock_code']]['BUY_LIST_1'] = config['BUY_LIST_1']
|
||||
BUY_LIST[stock['stock_code']]['BUY_LIST_1']["disparity"] = hts.getDisparityLimit(stock, RESOURCE_PATH)
|
||||
BUY_LIST[stock['stock_code']]['BUY_LIST_1']["disparity"] = hts.getDisparityLimit(stock)
|
||||
|
||||
print("START...")
|
||||
while datetime.strptime(today + " 060000", '%Y%m%d %H%M%S') < datetime.now() < datetime.strptime(today + " 153100", '%Y%m%d %H%M%S'):
|
||||
|
||||
@@ -140,19 +140,19 @@ class BuySellChecker():
|
||||
buy_type = 'upward'
|
||||
check = True
|
||||
|
||||
if data['disparity_avg20'][i] < BUY_LIST['disparity']['limit_bottom_3']['avg20']:
|
||||
if data['disparity_avg20'][i] < BUY_LIST['disparity']['limit_bottom_10']['avg20']:
|
||||
buy_type = 'disparity_avg20'
|
||||
check = True
|
||||
|
||||
if data['disparity_avg60'][i] < BUY_LIST['disparity']['limit_bottom_3']['avg60']:
|
||||
if data['disparity_avg60'][i] < BUY_LIST['disparity']['limit_bottom_10']['avg60']:
|
||||
buy_type = 'disparity_avg60'
|
||||
check = True
|
||||
|
||||
if data['disparity_avg480'][i] < BUY_LIST['disparity']['limit_bottom_3']['avg480']:
|
||||
if data['disparity_avg480'][i] < BUY_LIST['disparity']['limit_bottom_10']['avg480']:
|
||||
buy_type = 'disparity_avg1500'
|
||||
check = True
|
||||
|
||||
if data['disparity_avg1500'][i] < BUY_LIST['disparity']['limit_bottom_3']['avg1500']:
|
||||
if data['disparity_avg1500'][i] < BUY_LIST['disparity']['limit_bottom_10']['avg1500']:
|
||||
buy_type = 'disparity_avg1500'
|
||||
check = True
|
||||
|
||||
@@ -203,17 +203,17 @@ class BuySellChecker():
|
||||
check = True
|
||||
"""
|
||||
|
||||
if BUY_LIST['disparity']['limit_top_1']['avg20'] < data['disparity_avg20'][i]:
|
||||
if BUY_LIST['disparity']['limit_top_5']['avg20'] < data['disparity_avg20'][i]:
|
||||
check = True
|
||||
|
||||
if BUY_LIST['disparity']['limit_top_1']['avg480'] < data['disparity_avg480'][i]:
|
||||
if BUY_LIST['disparity']['limit_top_5']['avg480'] < data['disparity_avg480'][i]:
|
||||
check = True
|
||||
|
||||
if BUY_LIST['disparity']['limit_top_1']['avg1500'] < data['disparity_avg1500'][i]:
|
||||
if BUY_LIST['disparity']['limit_top_5']['avg1500'] < data['disparity_avg1500'][i]:
|
||||
check = True
|
||||
|
||||
if data['avg1500'][i - 1] < data['trend_avg'][i - 1] and data['trend_avg'][i] <= data['avg1500'][i]:
|
||||
check = True
|
||||
# if data['avg1500'][i-1] < data['trend_avg'][i-1] and data['trend_avg'][i] <= data['avg1500'][i]:
|
||||
# check = True
|
||||
|
||||
if check:
|
||||
sell_price = data['close'][i]
|
||||
|
||||
Reference in New Issue
Block a user