|  | @@ -114,8 +114,11 @@ def get_hlfx(data):
 | 
											
												
													
														|  |          for x in range(2, len(df_day.index)):
 |  |          for x in range(2, len(df_day.index)):
 | 
											
												
													
														|  |              m = x - 1
 |  |              m = x - 1
 | 
											
												
													
														|  |              # 底
 |  |              # 底
 | 
											
												
													
														|  | -            if ((df_day.loc[x, 'high'] > df_day.loc[x - 1, 'high']) and (
 |  | 
 | 
											
												
													
														|  | -                    df_day.loc[x - 2, 'high'] > df_day.loc[x - 1, 'high'])):
 |  | 
 | 
											
												
													
														|  | 
 |  | +            # 符合底分型形态,且第2、3根k线是阳线
 | 
											
												
													
														|  | 
 |  | +            if ((df_day.loc[x, 'high'] > df_day.loc[x - 1, 'high']) and
 | 
											
												
													
														|  | 
 |  | +                (df_day.loc[x - 2, 'high'] > df_day.loc[x - 1, 'high'])) and \
 | 
											
												
													
														|  | 
 |  | +                    df_day.loc[x, 'close'] > df_day.loc[x, 'open'] and \
 | 
											
												
													
														|  | 
 |  | +                    df_day.loc[x - 1, 'close'] > df_day.loc[x - 1, 'open']:
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |                  df_day.loc[x, 'HL'] = 'L*'
 |  |                  df_day.loc[x, 'HL'] = 'L*'
 | 
											
												
													
														|  |                  while m:
 |  |                  while m:
 | 
											
										
											
												
													
														|  | @@ -137,8 +140,10 @@ def get_hlfx(data):
 | 
											
												
													
														|  |                                  Trading_signals = 1
 |  |                                  Trading_signals = 1
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |                              # 获得MACD,判断MACD判断背驰
 |  |                              # 获得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底背驰
 |  |                              # MACD底背驰
 | 
											
												
													
														|  |                              if m_macd_dif < x_macd_dif:
 |  |                              if m_macd_dif < x_macd_dif:
 | 
											
										
											
												
													
														|  | @@ -164,7 +169,7 @@ def get_hlfx(data):
 | 
											
												
													
														|  |                              if x == len(df_day.index) - 1:
 |  |                              if x == len(df_day.index) - 1:
 | 
											
												
													
														|  |                                  Trading_signals = 2
 |  |                                  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']:
 |  |                          if df_day.loc[x - 1, 'high'] > df_day.loc[m - 1, 'high']:
 | 
											
												
													
														|  |                              # 前一个为顶,且中间存在不包含 or 更高的顶
 |  |                              # 前一个为顶,且中间存在不包含 or 更高的顶
 | 
											
												
													
														|  |                              df_day.loc[x, 'HL'] = 'H'
 |  |                              df_day.loc[x, 'HL'] = 'H'
 | 
											
										
											
												
													
														|  | @@ -173,8 +178,10 @@ def get_hlfx(data):
 | 
											
												
													
														|  |                                  Trading_signals = 2
 |  |                                  Trading_signals = 2
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |                              # 获得MACD,判断MACD判断背驰
 |  |                              # 获得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顶背驰
 |  |                              # MACD顶背驰
 | 
											
												
													
														|  |                              if x_macd_dif < m_macd_dif:
 |  |                              if x_macd_dif < m_macd_dif:
 | 
											
										
											
												
													
														|  | @@ -192,7 +199,7 @@ def get_hlfx(data):
 | 
											
												
													
														|  |      return df_temp, Trading_signals
 |  |      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)}')
 |  |      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')
 |  |      engine_tech = create_engine('mysql+pymysql://root:r6kEwqWU9!v3@localhost:3307/qmt_stocks_tech?charset=utf8')
 | 
											
										
											
												
													
														|  | @@ -239,7 +246,7 @@ def tech_anal(stocks, hlfx_pool,err_list):
 | 
											
												
													
														|  |                  hlfx_pool.remove(stock)
 |  |                  hlfx_pool.remove(stock)
 | 
											
												
													
														|  |              elif stock not in hlfx_pool and T_signals == 1:
 |  |              elif stock not in hlfx_pool and T_signals == 1:
 | 
											
												
													
														|  |                  hlfx_pool.append(stock)
 |  |                  hlfx_pool.append(stock)
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | 
 |  | +                hlfx_pool_daily.append(stock)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      print(f'Pid:{os.getpid()}已经完工了,应处理{len(stocks)},共计算{m}支个股')
 |  |      print(f'Pid:{os.getpid()}已经完工了,应处理{len(stocks)},共计算{m}支个股')
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -255,6 +262,7 @@ if __name__ == '__main__':
 | 
											
												
													
														|  |      fre = '1d'
 |  |      fre = '1d'
 | 
											
												
													
														|  |      engine_hlfx_pool = create_engine('mysql+pymysql://root:r6kEwqWU9!v3@localhost:3307/hlfx_pool?charset=utf8')
 |  |      engine_hlfx_pool = create_engine('mysql+pymysql://root:r6kEwqWU9!v3@localhost:3307/hlfx_pool?charset=utf8')
 | 
											
												
													
														|  |      hlfx_pool = mp.Manager().list()
 |  |      hlfx_pool = mp.Manager().list()
 | 
											
												
													
														|  | 
 |  | +    hlfx_pool_daily = mp.Manager().list()
 | 
											
												
													
														|  |      hlfx_pool.extend(pd.read_sql_query(
 |  |      hlfx_pool.extend(pd.read_sql_query(
 | 
											
												
													
														|  |          'select value from `%s`' % fre, engine_hlfx_pool).iloc[-1, 0].split(","))
 |  |          'select value from `%s`' % fre, engine_hlfx_pool).iloc[-1, 0].split(","))
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -265,15 +273,19 @@ if __name__ == '__main__':
 | 
											
												
													
														|  |      # tech_anal(stocks, hlfx_pool)
 |  |      # tech_anal(stocks, hlfx_pool)
 | 
											
												
													
														|  |      for i in range(0, len(stocks), step):
 |  |      for i in range(0, len(stocks), step):
 | 
											
												
													
														|  |          print(x)
 |  |          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
 |  |          x += 1
 | 
											
												
													
														|  |      time.sleep(5)
 |  |      time.sleep(5)
 | 
											
												
													
														|  |      pool.close()
 |  |      pool.close()
 | 
											
												
													
														|  |      pool.join()
 |  |      pool.join()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    print(len(hlfx_pool), hlfx_pool)
 |  | 
 | 
											
												
													
														|  | 
 |  | +    print(f'当日信号:{len(hlfx_pool_daily)},持续检测为:{len(hlfx_pool)}')
 | 
											
												
													
														|  |      print(len(err_list), err_list)
 |  |      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',
 |  |      db_pool = pymysql.connect(host='localhost',
 | 
											
												
													
														|  |                                user='root',
 |  |                                user='root',
 | 
											
										
											
												
													
														|  | @@ -281,12 +293,21 @@ if __name__ == '__main__':
 | 
											
												
													
														|  |                                password='r6kEwqWU9!v3',
 |  |                                password='r6kEwqWU9!v3',
 | 
											
												
													
														|  |                                database='hlfx_pool')
 |  |                                database='hlfx_pool')
 | 
											
												
													
														|  |      cursor_pool = db_pool.cursor()
 |  |      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)
 |  |      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)
 |  |      cursor_pool.execute(sql)
 | 
											
												
													
														|  |      db_pool.commit()
 |  |      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)
 |  |      print(edtime - sttime)
 |