Bläddra i källkod

保留每日新增信号

Daniel 2 år sedan
förälder
incheckning
e8ff224c98
1 ändrade filer med 30 tillägg och 12 borttagningar
  1. 30 12
      QMT/qmt_get_indicators.py

+ 30 - 12
QMT/qmt_get_indicators.py

@@ -137,8 +137,10 @@ def get_hlfx(data):
                                 Trading_signals = 1
 
                             # 获得MACD,判断MACD判断背驰
-                            x_macd_dif, x_macd_dea, x_macd_macd = data_temp.loc[x, 'dif'], data_temp.loc[x, 'dea'], data_temp.loc[x, 'macd']
-                            m_macd_dif, m_macd_dea, m_macd_macd = data_temp.loc[m, 'dif'], data_temp.loc[m, 'dea'], data_temp.loc[m, 'macd']
+                            x_macd_dif, x_macd_dea, x_macd_macd = data_temp.loc[x, 'dif'], data_temp.loc[x, 'dea'], \
+                            data_temp.loc[x, 'macd']
+                            m_macd_dif, m_macd_dea, m_macd_macd = data_temp.loc[m, 'dif'], data_temp.loc[m, 'dea'], \
+                            data_temp.loc[m, 'macd']
 
                             # MACD底背驰
                             if m_macd_dif < x_macd_dif:
@@ -164,7 +166,7 @@ def get_hlfx(data):
                             if x == len(df_day.index) - 1:
                                 Trading_signals = 2
 
-                    elif (df_day.loc[m, 'HL'] == 'H'):
+                    elif df_day.loc[m, 'HL'] == 'H':
                         if df_day.loc[x - 1, 'high'] > df_day.loc[m - 1, 'high']:
                             # 前一个为顶,且中间存在不包含 or 更高的顶
                             df_day.loc[x, 'HL'] = 'H'
@@ -173,8 +175,10 @@ def get_hlfx(data):
                                 Trading_signals = 2
 
                             # 获得MACD,判断MACD判断背驰
-                            x_macd_dif, x_macd_dea, x_macd_macd = data_temp.loc[x, 'dif'], data_temp.loc[x, 'dea'], data_temp.loc[x, 'macd']
-                            m_macd_dif, m_macd_dea, m_macd_macd = data_temp.loc[m, 'dif'], data_temp.loc[m, 'dea'], data_temp.loc[m, 'macd']
+                            x_macd_dif, x_macd_dea, x_macd_macd = data_temp.loc[x, 'dif'], data_temp.loc[x, 'dea'], \
+                            data_temp.loc[x, 'macd']
+                            m_macd_dif, m_macd_dea, m_macd_macd = data_temp.loc[m, 'dif'], data_temp.loc[m, 'dea'], \
+                            data_temp.loc[m, 'macd']
 
                             # MACD顶背驰
                             if x_macd_dif < m_macd_dif:
@@ -192,7 +196,7 @@ def get_hlfx(data):
     return df_temp, Trading_signals
 
 
-def tech_anal(stocks, hlfx_pool,err_list):
+def tech_anal(stocks, hlfx_pool, hlfx_pool_daily, err_list):
     print(f'{dt.now()}开始循环计算! MyPid is {os.getpid()},池子长度为{len(stocks)}')
 
     engine_tech = create_engine('mysql+pymysql://root:r6kEwqWU9!v3@localhost:3307/qmt_stocks_tech?charset=utf8')
@@ -239,7 +243,7 @@ def tech_anal(stocks, hlfx_pool,err_list):
                 hlfx_pool.remove(stock)
             elif stock not in hlfx_pool and T_signals == 1:
                 hlfx_pool.append(stock)
-
+                hlfx_pool_daily.append(stock)
 
     print(f'Pid:{os.getpid()}已经完工了,应处理{len(stocks)},共计算{m}支个股')
 
@@ -255,6 +259,7 @@ if __name__ == '__main__':
     fre = '1d'
     engine_hlfx_pool = create_engine('mysql+pymysql://root:r6kEwqWU9!v3@localhost:3307/hlfx_pool?charset=utf8')
     hlfx_pool = mp.Manager().list()
+    hlfx_pool_daily = mp.Manager().list()
     hlfx_pool.extend(pd.read_sql_query(
         'select value from `%s`' % fre, engine_hlfx_pool).iloc[-1, 0].split(","))
 
@@ -265,15 +270,19 @@ if __name__ == '__main__':
     # tech_anal(stocks, hlfx_pool)
     for i in range(0, len(stocks), step):
         print(x)
-        pool.apply_async(func=tech_anal, args=(stocks[i:i + step], hlfx_pool, err_list,), error_callback=err_call_back)
+        pool.apply_async(func=tech_anal, args=(stocks[i:i + step], hlfx_pool, hlfx_pool_daily, err_list,),
+                         error_callback=err_call_back)
         x += 1
     time.sleep(5)
     pool.close()
     pool.join()
 
-    print(len(hlfx_pool), hlfx_pool)
+    print(f'当日信号:{len(hlfx_pool_daily)},持续检测为:{len(hlfx_pool)}')
     print(len(err_list), err_list)
 
+    results_list = ','.join(set(hlfx_pool))
+    results_list_daily = ','.join(set(hlfx_pool_daily))
+
     # 存档入库
     db_pool = pymysql.connect(host='localhost',
                               user='root',
@@ -281,12 +290,21 @@ if __name__ == '__main__':
                               password='r6kEwqWU9!v3',
                               database='hlfx_pool')
     cursor_pool = db_pool.cursor()
-    results_list = ','.join(set(hlfx_pool))
-
     sql = "INSERT INTO %s (date,value) VALUES('%s','%s')" % (fre, dt.now().strftime('%Y-%m-%d %H:%M:%S'), results_list)
     cursor_pool.execute(sql)
     db_pool.commit()
-    edtime = dt.now()
 
+    # 存档入库daily_1d
+    db_pool2 = pymysql.connect(host='localhost',
+                               user='root',
+                               port=3307,
+                               password='r6kEwqWU9!v3',
+                               database='hlfx_pool')
+    cursor_pool2 = db_pool.cursor()
+    sql2 = "INSERT INTO daily_%s (date,value) VALUES('%s','%s')" % (fre, dt.now().strftime('%Y-%m-%d %H:%M:%S'),
+                                                                    results_list_daily)
+    cursor_pool2.execute(sql2)
+    db_pool2.commit()
+    edtime = dt.now()
 
     print(edtime - sttime)