def PR_UpdateDailyQuotation(H5Db, start_datecode, end_datecode=DayCode().today(), DEBUG=False): DailyQ_twse = Web_TwseDailyQuotation(H5Db) DailyQ_tpex = Web_TpexDailyQuotation(H5Db) daycode = DayCode().copy_from(start_datecode) while daycode.to_int() <= end_datecode.to_int(): #info percentage = 100 * (daycode.to_int() - start_datecode.to_int()) / ( end_datecode.to_int() - start_datecode.to_int()) print("\n\n\n===>Progress: %s/[%s-%s] (%d%%).....\n" % (daycode, start_datecode, end_datecode, percentage)) #上市行情 stock_dq = DailyQ_twse.get_data(daycode, DEBUG) H5Db.update_daily_quotation(stock_dq) #上櫃行情 stock_dq = DailyQ_tpex.get_data(daycode, DEBUG) H5Db.update_daily_quotation(stock_dq) #Advance one day daycode.go_next_day()
def PR_UpdateLatestStockInfo(H5Db, DEBUG=False): #更新上市公司資訊 today = DayCode() DailyQ = Web_TwseDailyQuotation(H5Db) while True: #Part1: Stock Info (TWSE) stock_info = DailyQ.get_stock_info(today, DEBUG) if (len(stock_info) > 0): break else: today.go_prev_day() H5Db.update_stock_info(stock_info) #更新上櫃公司資訊 today.today() DailyQ = Web_TpexDailyQuotation(H5Db) while True: #Part1: Stock Info (TWSE) stock_info = DailyQ.get_stock_info(today, DEBUG) if (len(stock_info) > 0): break else: today.go_prev_day() H5Db.update_stock_info(stock_info)
def testCalendar(self): d = DayCode(2016, 9, 27) while d.to_int() < 20181107: print(d.go_next_day()) while d.to_int() > 20170215: print(d.go_prev_day()) print(d.today())
def update_stock_info(self, stock_info): for key in sorted(stock_info): self.stockinfo_set(stock_info[key]) print("update [StockInfo] table %d entries." % len(stock_info)) #update attribute self.tbl_stockinfo.attrs.update_date = DayCode().__str__() #flush self.tbl_stockinfo.flush( ) #flush the table I/O buffer if we want to write all this data to disk.
DEBUG = False ''' #Open/Create database ''' H5Db = H5DataBase() ''' #Update Stockinfo : 更新公司資訊 ''' if (OPTION["update_stock_info"]): PR_UpdateLatestStockInfo(H5Db, DEBUG) ''' #Update Daily Quotation : 更新每日報價 ''' if (OPTION["update_daily_quotation"]): if (DEBUG == True): start_date = DayCode().go_prev_day().go_prev_day() else: start_date = DayCode(93, 2, 11) PR_UpdateDailyQuotation(H5Db, start_date, DayCode().today(), DEBUG) ''' #Test Zone ''' StockInfo_mos = Web_MopsBasicInfo(H5Db) stock_info = StockInfo_mos.get_stock_info(DEBUG) H5Db.update_stock_info(stock_info) ''' #Close file