def get_last_trade_date_yh_hist(target_last_date_str, default_codes=[ '601398', '000002', '002001', '300059', '601857', '600028', '000333', '300251', '601766', '002027' ]): last_date_str = '' is_need_del_tdx_last_string = False for test_code in default_codes: df, has_tdx_last_string = pds.get_yh_raw_hist_df(test_code, latest_count=None) if has_tdx_last_string: is_need_del_tdx_last_string = True if not df.empty: last_date_str_stock = df.tail(1).iloc[0].date if last_date_str_stock >= target_last_date_str: last_date_str = last_date_str_stock break else: if last_date_str_stock > last_date_str: last_date_str = last_date_str_stock else: pass return last_date_str, is_need_del_tdx_last_string
def update_yh_hist_data(all_codes, process_id, latest_date_str): """ 更新历史数据,单个CPU """ all_count = len(all_codes) print('processor %s: all_count=%s ' % (process_id, all_count)) if all_count <= 0: print('processor %s: empty list' % process_id) return else: print('processor %s start' % process_id) latest_count = 0 count = 0 pc0 = 0 #print('all_codes=',all_codes) for code in all_codes: #print('code=',code) df, has_tdx_last_string = pds.get_yh_raw_hist_df(code, latest_count=None) pc = round(round(count, 2) / all_count, 2) * 100 if pc > pc0: #print('count=',count) print('processor %s 完成数据更新百分之%s' % (process_id, pc)) pc0 = pc if len(df) >= 1: last_code_trade_date = df.tail(1).iloc[0].date if last_code_trade_date == latest_date_str: latest_count = latest_count + 1 #time.sleep(0.2) count = count + 1 latest_update_rate = round(round(latest_count, 2) / all_count, 2) print('latest_update_rate_processor_%s=%s' % (process_id, latest_update_rate)) return
def is_latest_update_stock(df,latest_date_str): latest_date_str = pds.tt.get_latest_trade_date(date_format='%Y/%m/%d') next_date_str = pds.tt.get_next_trade_date(date_format='%Y/%m/%d') print('last_date = ',last_date_str) print('latest_date_str=',latest_date_str) print('next_date_str=',next_date_str) code = '000001' df = pds.get_yh_raw_hist_df(code,latest_count=None) print(df) last_code_trade_date = df.tail(1).iloc[0].date print('last_code_trade_date=',last_code_trade_date)#,type(last_code_trade_date))
def get_last_tradte_date_yh_hist(default_codes=[ '601398', '000002', '002001', '300059', '601857', '600028', '000333', '300251', '601766', '002027' ]): last_date_str = '' for test_code in default_codes: df = pds.get_yh_raw_hist_df(test_code, latest_count=None) last_code_trade_date = df.tail(1).iloc[0].date print('last_code_trade_date=', last_code_trade_date) #,type(last_code_trade_date)) if not df.empty: last_date_str = df.tail(1).iloc[0].date if last_date_str: break return last_date_str
def get_stock_last_trade_date_yh(): last_date_str = '' is_need_del_tdx_last_string = False df, has_tdx_last_string = pds.get_yh_raw_hist_df(test_code, latest_count=None) if has_tdx_last_string: is_need_del_tdx_last_string = True if not df.empty: last_date_str_stock = df.tail(1).iloc[0].date if last_date_str_stock >= target_last_date_str: last_date_str = last_date_str_stock else: if last_date_str_stock > last_date_str: last_date_str = last_date_str_stock else: pass else: pass return last_date_str, is_need_del_tdx_last_string
import sys import pdSql_common as pds from pdSql import StockSQL now_time = datetime.datetime.now() now_time_str = now_time.strftime('%Y/%m/%d %X') print('now_time = ', now_time_str) d_format = '%Y/%m/%d' last_date_str = pds.tt.get_last_trade_date(date_format=d_format) latest_date_str = pds.tt.get_latest_trade_date(date_format='%Y/%m/%d') next_date_str = pds.tt.get_next_trade_date(date_format='%Y/%m/%d') print('last_date = ', last_date_str) print('latest_date_str=', latest_date_str) print('next_date_str=', next_date_str) code = '000001' df = pds.get_yh_raw_hist_df(code, latest_count=None) print(df.empty) last_code_trade_date = df.tail(1).iloc[0].date print('last_code_trade_date=', last_code_trade_date) #,type(last_code_trade_date)) def get_last_tradte_date_yh_hist(default_codes=[ '601398', '000002', '002001', '300059', '601857', '600028', '000333', '300251', '601766', '002027' ]): last_date_str = '' for test_code in default_codes: df = pds.get_yh_raw_hist_df(test_code, latest_count=None) last_code_trade_date = df.tail(1).iloc[0].date print('last_code_trade_date=',
def update_one_stock_k_data(code): df, has_tdx_last_string = pds.get_yh_raw_hist_df(code, latest_count=None) return
def update_k_data(update_type='yh'): stock_sql = StockSQL() hold_df, hold_stocks, available_sells = stock_sql.get_hold_stocks( accounts=['36005', '38736']) print('hold_stocks=', hold_stocks) print('available_sells=', available_sells) #pds.get_exit_price(hold_codes=['002521'],data_path='C:/中国银河证券海王星/T0002/export/' ) #print(hold_df) """从新浪 qq网页更新股票""" #easyhistory.init(path="C:/hist",stock_codes=hold_stocks) #easyhistory.update(path="C:/hist",stock_codes=hold_stocks) """从银河更新股票""" #for stock in hold_stocks: #pds.update_one_stock(symbol=stock,realtime_update=False,dest_dir='C:/hist/day/data/', force_update_from_YH=False) # pass #stock_sql.update_sql_position(users={'account':'36005','broker':'yh','json':'yh.json'}) #stock_sql.update_sql_position(users={'account':'38736','broker':'yh','json':'yh1.json'}) #hold_df,hold_stocks,available_sells = stock_sql.get_hold_stocks(accounts = ['36005', '38736']) #print('hold_stocks=',hold_stocks) #print(hold_df) #pds.update_one_stock(symbol='sh',force_update=False) #pds.update_codes_from_YH(realtime_update=False) """从银河更新指数""" #pds.update_codes_from_YH(realtime_update=False,dest_dir='C:/hist/day/data/', force_update_from_YH=True) #pds.update_codes_from_YH(realtime_update=False,dest_dir='C:/hist/day/data/', force_update_from_YH=True) #indexs = ['zxb', 'sh50', 'hs300', 'sz300', 'cyb', 'sz', 'zx300', 'sh'] """ potential_df = stock_sql.query_data(table='potential',fields='category_id,code,valid,name',condition='valid>=1') print(potential_df) lanchou_df = potential_df[potential_df['category_id']==1] print(lanchou_df['code'].values.tolist()) """ #""" last_date_str = pds.tt.get_last_trade_date(date_format='%Y/%m/%d') latest_date_str = pds.tt.get_latest_trade_date(date_format='%Y/%m/%d') next_date_str = pds.tt.get_next_trade_date(date_format='%Y/%m/%d') print('last_date = ', last_date_str) print('latest_date_str=', latest_date_str) print('next_date_str=', next_date_str) indexs, funds, b_stock, all_stocks = pds.get_different_symbols() if update_type == 'index': #从银河更新指数 #stock_sql.update_sql_index(index_list=['sh','sz','zxb','cyb','hs300','sh50'],force_update=False) #stock_sql.download_hist_as_csv(indexs = ['sh','sz','zxb','cyb','hs300','sh50'],dir='C:/hist/day/data/') pds.update_codes_from_YH(indexs, realtime_update=False, dest_dir='C:/hist/day/data/', force_update_from_YH=True) elif update_type == 'fund': #从银河更新基金 all_codes = pds.get_all_code(hist_dir='C:/中国银河证券海王星/T0002/export/') funds = [] for code in all_codes: if code.startswith('1') or code.startswith('5'): funds.append(code) pds.update_codes_from_YH(funds, realtime_update=False, dest_dir='C:/hist/day/data/', force_update_from_YH=True) elif update_type == 'position': #更新仓位 #stock_sql.update_sql_position(users={'36005':{'broker':'yh','json':'yh.json'},'38736':{'broker':'yh','json':'yh1.json'}}) stock_sql.update_sql_position(users={ 'account': '36005', 'broker': 'yh', 'json': 'yh.json' }) stock_sql.update_sql_position(users={ 'account': '38736', 'broker': 'yh', 'json': 'yh1.json' }) hold_df, hold_stocks, available_sells = stock_sql.get_hold_stocks( accounts=['36005', '38736']) print('hold_stocks=', hold_stocks) print(hold_df) elif update_type == 'stock': #从新浪 qq网页更新股票 #easyhistory.init(path="C:/hist",stock_codes=hold_stocks) #easyhistory.update(path="C:/hist",stock_codes=hold_stocks) #easyhistory.init(path="C:/hist")#,stock_codes=all_codes) easyhistory.update(path="C:/hist", stock_codes=all_stocks) #+b_stock) elif update_type == 'YH' or update_type == 'yh': all_codes = pds.get_all_code(hist_dir='C:/中国银河证券海王星/T0002/export/') #all_codes = ['999999', '000016', '399007', '399008', '399006', '000300', '399005', '399001', # '399004','399106','000009','000010','000903','000905'] #all_codes=['300162'] """ code_list_dict = seprate_list(all_codes,4) print('code_list_dict=',code_list_dict) print('Parent process %s.' % os.getpid()) #update_yh_hist_data(codes_list=[],process_id=0) p = Pool() for i in range(4): p.apply_async(update_yh_hist_data, args=(code_list_dict[i],i)) print('Waiting for all subprocesses done...') p.close() p.join() print('All subprocesses done.') """ all_count = len(all_codes) latest_count = 0 count = 0 pc0 = 0 for code in all_codes: df, has_tdx_last_string = pds.get_yh_raw_hist_df(code, latest_count=None) count = count + 1 pc = round(round(count, 2) / all_count, 2) * 100 if pc > pc0: print('count=', count) print('完成数据更新百分之%s' % pc) pc0 = pc if len(df) >= 1: last_code_trade_date = df.tail(1).iloc[0].date if last_code_trade_date == latest_date_str: latest_count = latest_count + 1 latest_update_rate = round(round(latest_count, 2) / all_count, 2) print('latest_update_rate=', latest_update_rate) #""" else: pass
def update_histdatas(stock_sql): print('start: ', datetime.datetime.now()) """ #user = easytrader.use('yh') stock_sql = StockSQL() is_tdx_uptodate,is_pos_uptodate,systime_dict = stock_sql.is_histdata_uptodate() is_tdx_uptodate=False update_hour = systime_dict['hist_update_hour'] if update_now:#立即更新 pass else: if is_tdx_uptodate: print('通达信历史数据已经是最新了') return else: if update_hour==datetime.datetime.now().hour: pass """ is_tdx_uptodate,is_pos_uptodate = False,False user = use('yh_client') #title='通达信网上交易V6' title = '中国银河证券海王星V2.55' user.set_title(title) account_dict={ "inputaccount": "331600036005", "trdpwd": "F71281A2D62C4b3a8268C6453E9C42212CCC5BA9AB89CAFF4E97CC31AE0E4C48" } user.set_type(type='quote_only') user.enable_debug_mode() user.prepare(user='******', password='******',exe_path='C:/中国银河证券海王星/TdxW.exe') user.update_tdx_k_data() all_codes = pds.get_all_code(hist_dir='C:/中国银河证券海王星/T0002/export/') #all_codes = ['999999', '000016', '399007', '399008', '399006', '000300', '399005', '399001', # '399004','399106','000009','000010','000903','000905'] #all_codes=['300162'] count = 0 all_count = len(all_codes) pc0=0 now_time =datetime.datetime.now() now_time_str = now_time.strftime('%Y/%m/%d %X') print('now_time = ',now_time_str) d_format='%Y/%m/%d' last_date_str = pds.tt.get_last_trade_date(date_format=d_format) latest_date_str = pds.tt.get_latest_trade_date(date_format='%Y/%m/%d') next_date_str = pds.tt.get_next_trade_date(date_format='%Y/%m/%d') print('last_date = ',last_date_str) print('latest_date_str=',latest_date_str) print('next_date_str=',next_date_str) latest_count = 0 for code in all_codes: df = pds.get_yh_raw_hist_df(code,latest_count=None) count = count + 1 pc = round(round(count,2)/all_count,2)* 100 if pc>pc0: print('count=',count) print('完成数据更新百分之%s' % pc) pc0 = pc if len(df)>=1: last_code_trade_date = df.tail(1).iloc[0].date if last_code_trade_date==latest_date_str: latest_count = latest_count + 1 latest_update_rate =round(round(latest_count,2)/all_count,2) print('latest_update_rate=',latest_update_rate) if latest_update_rate>0.5: now_time =datetime.datetime.now() now_time_str = now_time.strftime('%Y/%m/%d %X') print('now_time = ',now_time_str) print('update_latest update datetime to sql') #stock_sql.update_data(table='systime',fields='tdx_update_time',values=now_time_str,condition='id=0') stock_sql.write_tdx_histdata_update_time(now_time_str) #stock_sql.write_position_update_time(now_time_str) systime_dict = stock_sql.get_systime() print(systime_dict) is_tdx_uptodate,is_pos_uptodate,systime = stock_sql.is_histdata_uptodate() print('is_tdx_uptodate=',is_tdx_uptodate) print('is_pos_uptodate=',is_pos_uptodate)
hold_df,hold_stocks,available_sells = stock_sql.get_hold_stocks(accounts = ['36005', '38736']) print('hold_stocks=',hold_stocks) print(hold_df) elif update_type == 'stock': #从新浪 qq网页更新股票 #easyhistory.init(path="C:/hist",stock_codes=hold_stocks) #easyhistory.update(path="C:/hist",stock_codes=hold_stocks) #easyhistory.init(path="C:/hist")#,stock_codes=all_codes) easyhistory.update(path="C:/hist",stock_codes=all_stocks)#+b_stock) elif update_type == 'YH' or update_type == 'yh': all_codes = pds.get_all_code(hist_dir='C:/中国银河证券海王星/T0002/export/') #all_codes = ['999999', '000016', '399007', '399008', '399006', '000300', '399005', '399001', # '399004','399106','000009','000010','000903','000905'] #all_codes=['300162'] for code in all_codes: pds.get_yh_raw_hist_df(code,latest_count=None) else: pass """ update_data = stock_sql.get_table_update_time() print('last_position_update_time=',update_data['hold']) print('last_index_update_time=',update_data['sh']) print(stock_sql.hold) """ #""" """ print(update_data) broker = 'yh' need_data = 'yh.json'