def day_year3(): """ 获取三年内的交易天数 :return: 三年内的交易天数 """ # 判断到最近一个交易日 d_end = today_get() while 1: rs = bs.query_trade_dates(start_date=d_end, end_date=d_end) data_list = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 data_list.append(rs.get_row_data()) if data_list[0][1] == '1': break else: day_change = datetime.timedelta(days=1) d_end = d_end - day_change # 获取今天和一周前日期 d_start = year3_get(d_end) # 获取交易日信息 rs = bs.query_trade_dates(start_date=d_start, end_date=d_end) # print('query_trade_dates respond error_code:' + rs.error_code) # print('query_trade_dates respond error_msg:' + rs.error_msg) # 打印结果集 data_list = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 data_list.append(rs.get_row_data()) # 获取一会走交易日数 i = 0 number_trade_day = 0 for data in data_list: if data_list[i][1] == '1': number_trade_day += 1 i += 1 # 判断一周前是不是交易日 if data_list[0][1] == '0': number_trade_day += 1 # 消除baostock交易日计算错误 number_trade_day += 3 return number_trade_day
def init_trade_date(): settings.init() # 登陆系统 #### lg = bs.login() # 显示登陆返回信息 print('login respond error_code:' + lg.error_code) print('login respond error_msg:' + lg.error_msg) # 获取交易日信息 #### rs = bs.query_trade_dates(start_date=settings.START_DATE, end_date=settings.END_DATE) print('query_trade_dates respond error_code:' + rs.error_code) print('query_trade_dates respond error_msg:' + rs.error_msg) # 打印结果集 #### data_list = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) # 结果集输出到csv文件 #### result.to_csv(settings.STOCKS_DATE, encoding="utf-8", index=False, header=True) print(result) # 登出系统 #### bs.logout()
def get_his_trade_date(start_date="2018-01-27", end_date="2019-05-01"): #### 登陆系统 #### lg = bs.login(user_id="anonymous", password="******") # 显示登陆返回信息 print('login respond error_code:'+lg.error_code) print('login respond error_msg:'+lg.error_msg) #### 获取交易日信息 #### rs = bs.query_trade_dates(start_date=start_date, end_date=end_date) print('query_trade_dates respond error_code:'+rs.error_code) print('query_trade_dates respond error_msg:'+rs.error_msg) #### 打印结果集 #### data_list = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) #### 登出系统 #### bs.logout() #### 结果集输出到csv文件 #### #result.to_csv("/data/trade_datas.csv", encoding="gbk", index=False) return result
def prepare_fetch_data(): # 获取当前年/季度 current_date = datetime.date.today().strftime('%Y-%m-%d') current_year = datetime.date.today().year current_month = datetime.date.today().month current_quarter = (current_month - 1) // 3 + 1 hour = datetime.datetime.now().hour # baostock data maybe not update right after the trade market close. if hour < 20: dd = datetime.date.today() + datetime.timedelta(-1) current_date = dd.strftime('%Y-%m-%d') # 计算最后一个交易日时间 start_date = "2006-01-01" data_list = [] bs.login() rs = bs.query_trade_dates(start_date=start_date, end_date=current_date) while (rs.error_code == '0') & rs.next(): data_list.append(rs.get_row_data()) bs.logout() lasttradedate = current_date for i in range(len(data_list) - 1, -1, -1): if data_list[i][1] == '1': lasttradedate = data_list[i][0] break print('start query day:' + start_date + ', last query data:' + lasttradedate) bs.login() stock_rs = bs.query_all_stock(day=lasttradedate) stock_df = stock_rs.get_data() bs.logout() return stock_df, current_year, current_quarter
def query_trade_dates(start_date, end_date): """ 交易日查询:query_trade_dates() 方法说明:查询股票交易日信息信息,可以通过参数设置获取起止年份数据,提供2014-2018年数据。 返回类型:pandas的DataFrame类型。 """ #### 登陆系统 #### lg = bs.login() # 显示登陆返回信息 #print('login respond error_code:'+lg.error_code) #print('login respond error_msg:'+lg.error_msg) #### 获取交易日信息 #### rs = bs.query_trade_dates(start_date=start_date, end_date=end_date) #print('query_trade_dates respond error_code:'+rs.error_code) #print('query_trade_dates respond error_msg:'+rs.error_msg) #### 打印结果集 #### data_list = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) #### 结果集输出到csv文件 #### result.to_csv(path + "trade_dates.csv", encoding="gbk", index=False) #### 登出系统 #### bs.logout() return
def getTradeDays(start_date, end_date): tradeDays = bs.query_trade_dates(start_date, end_date) # print('query_trade_dates respond error_code:'+tradeDays.error_code) # print('query_trade_dates respond error_msg:'+tradeDays.error_msg) tradeDays_data_list = [] while (tradeDays.error_code == '0') & tradeDays.next(): tradeDays_data_list.append(tradeDays.get_row_data()) return pd.DataFrame(tradeDays_data_list, columns=tradeDays.fields)
def download_trade_cal(): filename = FILE_PATH + 'trade_cal.csv' rs = bs.query_trade_dates() data_list = [] while (rs.error_code == '0') & rs.next(): data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) result.to_csv(filename, encoding="gbk", index=False) return result
def query_trade_dates(self, start_date = None, end_date = None): ''' start_date:开始日期,为空时默认为2015-01-01。 end_date:结束日期,为空时默认为当前日期。 ''' rs = bs.query_trade_dates(start_date=start_date, end_date=end_date) self.log('query_trade_dates respond error_msg:', rs) data_list = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) return result
def record(self, entity, start, end, size, timestamps): df = pd.DataFrame() dates = query_trade_dates(start_date=start).get_data() dates = dates[dates.is_trading_day == '1'] self.logger.info(f'add dates:{dates}') df['timestamp'] = pd.to_datetime(dates['calendar_date']) df['id'] = [to_time_str(date) for date in dates['calendar_date']] df['entity_id'] = 'stock_sz_000001' df_to_db(df=df, data_schema=self.data_schema, provider=self.provider, force_update=self.force_update) logout()
def get_trading_time(self, s_time, e_time): rs = bs.query_trade_dates(start_date=s_time, end_date=e_time) # print('query_trade_dates respond error_code:' + rs.error_code) print('query_trade_dates respond error_msg:' + rs.error_msg) #### 打印结果集 #### data_list = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) result.columns = ['date', 'is_trading_day'] # print(result) return result
def collector(self) -> Iterable[pd.Timestamp]: lg = bs.login() if lg.error_code != "0": raise ValueError(f"login respond error_msg: {lg.error_msg}") rs = bs.query_trade_dates( start_date=self._format_datetime(self.start_date), end_date=self._format_datetime(self.end_date) ) if rs.error_code != "0": raise ValueError(f"query_trade_dates respond error_msg: {rs.error_msg}") data_list = [] while (rs.error_code == "0") & rs.next(): data_list.append(rs.get_row_data()) calendar = pd.DataFrame(data_list, columns=rs.fields) calendar["is_trading_day"] = calendar["is_trading_day"].astype(int) return pd.to_datetime(calendar[calendar["is_trading_day"] == 1]["calendar_date"]).to_list()
def tradedate(): ''' 获取最近交易日 ''' import datetime import time yestoday30=(datetime.date.today() + datetime.timedelta(-10)).strftime("%Y-%m-%d") today=time.strftime('%Y-%m-%d',time.localtime(time.time())) rs = bs.query_trade_dates(start_date=yestoday30, end_date=today) data_list = [] while (rs.error_code == '0') & rs.next(): data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) result=result.loc[result.is_trading_day=='1','calendar_date'].values[-2] return result
def trading_orlast(date): rs = bs.query_trade_dates(start_date=date, end_date=date) data_list = [] while (rs.error_code == '0') & rs.next(): data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) if result.iloc[0]['is_trading_day'] == '1': return date else: year = int(date[:4]) month = int(date[5:7]) day = int(date[8:]) dt = datetime.date(year, month, day) dt = dt - datetime.timedelta(days=1) dt = dt.strftime('%Y-%m-%d') return trading_orlast(dt)
def get_trade_dates(start_date, end_date=today, is_trading_day=1): # 获取交易日信息 rs = bs.query_trade_dates(start_date=start_date, end_date=end_date) if rs.error_code != '0': print('query_trade_dates respond error_code::' + rs.error_msg) login() return get_trade_dates(start_date, end_date) # 打印结果集 data_list = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) result['is_trading_day'] = pd.to_numeric(result['is_trading_day']) result = result[result['is_trading_day'] == is_trading_day] return result
def get_trade_dates(start_date, end_date): lg = bs.login() # 显示登陆返回信息 print('login respond error_code:' + lg.error_code) print('login respond error_msg:' + lg.error_msg) #### 获取交易日信息 #### rs = bs.query_trade_dates(start_date, end_date) print('query_trade_dates respond error_code:' + rs.error_code) print('query_trade_dates respond error_msg:' + rs.error_msg) #### 打印结果集 #### data_list = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) bs.logout() return result
def future_calendar_collector(qlib_dir: [str, Path], freq: str = "day"): """get future calendar Parameters ---------- qlib_dir: str or Path qlib data directory freq: str value from ["day", "1min"], by default day """ qlib_dir = Path(qlib_dir).expanduser().resolve() if not qlib_dir.exists(): raise FileNotFoundError(str(qlib_dir)) lg = bs.login() if lg.error_code != "0": logger.error(f"login error: {lg.error_msg}") return # read daily calendar daily_calendar = read_calendar_from_qlib(qlib_dir) end_year = pd.Timestamp.now().year if daily_calendar.empty: start_year = pd.Timestamp.now().year else: start_year = pd.Timestamp(daily_calendar.iloc[-1, 0]).year rs = bs.query_trade_dates(start_date=pd.Timestamp(f"{start_year}-01-01"), end_date=f"{end_year}-12-31") data_list = [] while (rs.error_code == "0") & rs.next(): _row_data = rs.get_row_data() if int(_row_data[1]) == 1: data_list.append(_row_data[0]) data_list = sorted(data_list) date_list = generate_qlib_calendar(data_list, freq=freq) date_list = sorted( set(daily_calendar.loc[:, 0].values.tolist() + date_list)) write_calendar_to_qlib(qlib_dir, date_list, freq=freq) bs.logout() logger.info( f"get trading dates success: {start_year}-01-01 to {end_year}-12-31")
def latestTradeDate(): customLogin() # set_trace() rs = bs.query_trade_dates(start_date=date.today().replace(day=1), end_date = date.today()) if rs.error_code != '0': raise RuntimeError("交易日api调用失败了:" + rs.error_code) tradeDates = [] while (rs.error_code == '0') & rs.next(): row = rs.get_row_data() if row[1] == "1": tradeDates.append(row[0]) # set_trace() if len(tradeDates) == 0: raise RuntimeError("取不到最新的交易日") now = datetime.now() set_trace() tradeDatesCount = len(tradeDates) ## 因为baoStock的日K数据更新时间是 17:30, 所以如果在18点前启动,可能取不到当天数据,交易日向前推一天 if (now.hour < 18 and tradeDatesCount > 1): return tradeDates[tradeDatesCount - 2] else: return tradeDates[len(tradeDates) - 1]
def getLatestTradeDay(inDate): tmp = inDate.split('-') if tmp[1] == '01': date1 = str(int(tmp[0]) - 1) + '-12-' + tmp[2] else: month = int(tmp[1]) - 1 if month < 10: month = '0' + str(month) else: month = str(month) date1 = tmp[0] + '-' + month + '-' + tmp[2] rs = bs.query_trade_dates(start_date=date1, end_date=inDate) if rs.error_code != '0': print('从指定日期返回最近一个交易日: %s' % rs.error_msg) data_list = [] while (rs.error_code == '0') & rs.next(): data_list.append(rs.get_row_data()) data_list.pop() data_list.reverse() for i in data_list: if i[1] == '1': return i[0]
def query_trade_dates(start_date=None, end_date=None): """ 交易日查询 方法说明:通过API接口获取股票交易日信息,可以通过参数设置获取起止年份数据,提供上交所1990-今年数据。 返回类型:pandas的DataFrame类型。 :param start_date:开始日期,为空时默认为2015-01-01。 :param end_date:结束日期,为空时默认为当前日期。 """ lg = bs.login() if lg.error_code != '0': logger.error('login respond error_msg:' + lg.error_msg) rs = bs.query_trade_dates(start_date=start_date, end_date=end_date) if rs.error_code != '0': logger.error('query_trade_dates respond error_msg:' + rs.error_msg) data_list = [] while (rs.error_code == '0') & rs.next(): data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) bs.logout() return result
def init_trade_date(): # 登陆系统 #### lg = bs.login() # 显示登陆返回信息 print('login respond error_code:' + lg.error_code) print('login respond error_msg:' + lg.error_msg) # 获取交易日信息 #### st = ConfigUtils.get_stock("START_DATE") et = ConfigUtils.get_stock("END_DATE") print(st, et) rs = bs.query_trade_dates(start_date=st, end_date=et) print('query_trade_dates respond error_code:' + rs.error_code) print('query_trade_dates respond error_msg:' + rs.error_msg) # 打印结果集 #### data_list = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) result.to_csv(ConfigUtils.get_stock("STOCKS_DATE"), index=False) # 结果集输出到csv文件 ####import ujson bs.logout()
import baostock as bs import pandas as pd def today(): import datetime print (datetime.datetime.now().strftime("%Y-%m-%d")) #### 登陆系统 #### lg = bs.login() # 显示登陆返回信息 print('login respond error_code:'+lg.error_code) print('login respond error_msg:'+lg.error_msg) #### 获取交易日信息 #### rs = bs.query_trade_dates(start_date="2000-01-01", end_date=today()) print('query_trade_dates respond error_code:'+rs.error_code) print('query_trade_dates respond error_msg:'+rs.error_msg) #### 打印结果集 #### data_list = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) result.to_csv("/home/toby/data/datasource/baostock/trade_dates.csv", encoding="gbk", index=False ) # print(result) #### 登出系统 #### bs.logout()
if __name__ == '__main__': createDB.createDB() current_date = datetime.date.today().strftime('%Y-%m-%d') hour = datetime.datetime.now().hour #baostock data maybe not update right after the trade market close. if hour < 20: dd = datetime.date.today() + datetime.timedelta(-1) current_date = dd.strftime('%Y-%m-%d') start_date = "2017-01-01" data_list = [] bs.login() rs = bs.query_trade_dates(start_date=start_date, end_date=current_date) while (rs.error_code == '0') & rs.next(): data_list.append(rs.get_row_data()) bs.logout() lastTradeDate = current_date for i in range(len(data_list) - 1, -1, -1): if data_list[i][1] == '1': lastTradeDate = data_list[i][0] break if start_date <= lastTradeDate: print("start to refresh all stock") parse_stock_data.refresh_all_stock(lastTradeDate) print("start to refresh all stock day K") parse_stock_data.refresh_all_stock_day_k(start_date, lastTradeDate) print("start to calculate sh")
def _bao_get_trade_days(start_date=None, end_date=None): k_rs = bs.query_trade_dates(start_date=start_date, end_date=end_date) return k_rs.get_data()
else: return False # 返回每年交易日数据框 lg = bs.login() trading_log = pd.DataFrame() for year in range(2010, 2021): date_ori1 = '{}-01-01'.format(year) date1 = trading_ornext(date_ori1) if year != 2020: date_ori2 = '{}-12-31'.format(year) date2 = trading_orlast(date_ori2) else: date2 = '2020-03-31' rs2 = bs.query_trade_dates(start_date=date1, end_date=date2) data_list = [] while (rs2.error_code == '0') & rs2.next(): data_list.append(rs2.get_row_data()) result2 = pd.DataFrame(data_list, columns=rs2.fields) trading_date = result2[result2['is_trading_day'] == '1']['calendar_date'] df = trading_date.to_frame() trading_log = pd.concat([trading_log, df], axis=0) trading_log = trading_log.reset_index(drop=True) trading_log['capital'] = None #获取大盘数据 from openpyxl import load_workbook
def trade_dates(self, start_date, end_date): self.getStockInstance() rs = bs.query_trade_dates(start_date, end_date) self._test_rs(rs) return rs
return lszhibiao lg = bs.login() if datetime.datetime.now().hour >= 17: nowday = datetime.datetime.now().date() else: nowday = datetime.datetime.now().date() - datetime.timedelta(days=1) newday = models.Jiaoyiday.objects.last().date print('最新数据为', newday, '今天是', nowday, '准备开始更新') if newday >= nowday: togmail.send('*****@*****.**', '股票更新报错', f'最新日期是{newday},现在需要更新的日期是{nowday},不需要更新,直接退出') raise Exception(f'最新日期是{newday},现在需要更新的日期是{nowday},不需要更新,直接退出') rs = bs.query_trade_dates(start_date=str(newday), end_date=str(nowday)) date_list = [] while (rs.error_code == '0') & rs.next(): date_list.append(rs.get_row_data()) for daylist in date_list[1:]: if daylist[1] == '1': newday = daylist[0] print(newday, '是交易日,开始更新。。。') zhibiaodf = zhibiao(newday) c = models.Jiaoyiday(date=newday, isover=False) c.save() n = 0 gupiaolist = models.Gupiaolist.objects.all() tiaoguolist = [] for ii in gupiaolist:
# -*- coding: utf-8 -*- # @File : get_trading_calender.py # @Author: Lizi # @Date : 2021/4/13 import baostock as bs import pandas as pd #### 登陆系统 #### lg = bs.login() # 显示登陆返回信息 print('login respond error_code:' + lg.error_code) print('login respond error_msg:' + lg.error_msg) #### 获取交易日信息 #### rs = bs.query_trade_dates(start_date="2020-01-01", end_date="2022-01-01") print('query_trade_dates respond error_code:' + rs.error_code) print('query_trade_dates respond error_msg:' + rs.error_msg) #### 打印结果集 #### data_list = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) #### 结果集输出到csv文件 #### result.to_csv("../trade_datas.csv", encoding="gbk", index=False) print(result) #### 登出系统 ####
def computeAllRSIDataIntegrate(period, specifiedDateStr, includeST): BaoStockUtil.customLogin() specifiedDate = datetime.datetime.strptime(specifiedDateStr, "%Y-%m-%d") today = datetime.date.today() #如果把时间设成未来,自动调成今天 if specifiedDate > datetime.datetime.today(): specifiedDate = datetime.date.today() #避免跨年问题,直接从去年开始取 startDate = specifiedDate - datetime.timedelta(days=365) #取交易日列表,用作倒推周期使用 rs = bs.query_trade_dates(start_date=datetime.datetime.strftime( startDate, "%Y-%m-%d"), end_date=specifiedDate) BaoStockUtil.customLogout() if rs.error_code != '0': raise RuntimeError("交易日api调用失败了:" + rs.error_code) tradeDates = [] while (rs.error_code == '0') & rs.next(): row = rs.get_row_data() if row[1] == "1": tradeDates.append(row[0]) if len(tradeDates) == 0: raise RuntimeError("取不到最新的交易日") #若期望计算的日期比库里RSI最新日期还晚,数据不全待补齐 rsiLatestDate = findLatestRSIDate(period) rsiLatestDateStr = datetime.datetime.strftime(rsiLatestDate, "%Y-%m-%d") if rsiLatestDate < specifiedDate: raise RuntimeError(specifiedDateStr + " 的 " + period + " RSI的数据不存在,待补齐数据") #找到指定日期以及rsi存量数据最近日期在交易日周期的序号 specifiedDateIndex = tradeDates.index(specifiedDateStr) if specifiedDateIndex == -1: raise RuntimeError(specifiedDateStr + " 可能不是交易日") daysBefore = computeRSIDataStartTradeDateRange(period, specifiedDateStr) startDateIndex = specifiedDateIndex - daysBefore #起始日期index负数,说明rsi数据不够 if startDateIndex < 0: raise RuntimeError(period + " rsi数据不够") startDateStr = tradeDates[startDateIndex] print("compute rsi tradeDates from ", startDateStr, "to", specifiedDateStr) processCount = 0 failCount = 0 startDateIndex = -1 dictStocks = KlineService.allStocks() klineDataFrame = KlineService.readAllStockKline(period, specifiedDateStr, specifiedDateStr) klineDataFrame = klineDataFrame.set_index("code") klineDict = klineDataFrame.to_dict('index') jobTotal = len(dictStocks) rsiValueArrs = [] for i in range(0, 6): rsiValueArrs.append([]) for key, stock in dictStocks.items(): processCount = processCount + 1 #指数没有分钟线,跳过指数的RSI分钟线计算 if period.endswith("m") and stock.stockType != 1: continue #如果不计算ST,跳过 if not includeST and stock["isST"]: continue #退市股就不要算了 if "退" in stock["name"]: continue #科创板不达门槛没法买,不看 if key.startswith("sh.68"): continue try: rsiDF = readRSI(period, key, startDateStr, specifiedDateStr) rsiCount = len(rsiDF) if rsiCount < INTEGRATE_CALC_RANGE: raise RuntimeError("积分计算节点不够") rsiValueArrs[0].append(key) rsiValueArrs[1].append(stock["name"]) rsiValueArrs[2].append(klineDict[key]["closePrice"]) #取最近的数据用于计算积分 rsiValueArrs[3].append( rsiDF["rsi_6"][rsiCount - INTEGRATE_CALC_RANGE:rsiCount]) rsiValueArrs[4].append( rsiDF["rsi_12"][rsiCount - INTEGRATE_CALC_RANGE:rsiCount]) rsiValueArrs[5].append( rsiDF["rsi_24"][rsiCount - INTEGRATE_CALC_RANGE:rsiCount]) except BaseException as e: failCount = failCount + 1 print("compute rsi integrate " + key + " error:" + str(e)) if processCount % 100 == 0 and processCount > 0: print("compute rsi integrate process:", processCount, " of ", jobTotal, " failed:", failCount) rsi6Arr = np.array(rsiValueArrs[3]).reshape(-1, INTEGRATE_CALC_RANGE) rsi6InteArr = integrateValues(rsi6Arr) rsi12Arr = np.array(rsiValueArrs[4]).reshape(-1, INTEGRATE_CALC_RANGE) rsi12InteArr = integrateValues(rsi12Arr) rsi24Arr = np.array(rsiValueArrs[5]).reshape(-1, INTEGRATE_CALC_RANGE) rsi24InteArr = integrateValues(rsi24Arr) rsiInteDF = pd.DataFrame() rsiInteDF["code"] = rsiValueArrs[0] rsiInteDF["name"] = rsiValueArrs[1] rsiInteDF["closePrice"] = rsiValueArrs[2] rsiInteDF["rsi_inte_6"] = rsi6InteArr rsiInteDF["rsi_inte_12"] = rsi12InteArr rsiInteDF["rsi_inte_24"] = rsi24InteArr return rsiInteDF
import sys import baostock as bs import pandas as pd lg = bs.login() rs = bs.query_trade_dates(start_date=sys.argv[1], end_date=sys.argv[2]) data_list = [] while (rs.error_code == '0') & rs.next(): data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) print(result.to_json(orient='records')) bs.logout()
import baostock as bs import pandas as pd #### 登陆系统 #### lg = bs.login() # 显示登陆返回信息 print('login respond error_code:' + lg.error_code) print('login respond error_msg:' + lg.error_msg) #### 获取交易日信息 #### rs = bs.query_trade_dates(start_date="2017-01-01", end_date="2017-06-30") print('query_trade_dates respond error_code:' + rs.error_code) print('query_trade_dates respond error_msg:' + rs.error_msg) #### 打印结果集 #### data_list = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 data_list.append(rs.get_row_data()) result = pd.DataFrame(data_list, columns=rs.fields) #### 结果集输出到csv文件 #### result.to_csv("D:\\trade_datas.csv", encoding="gbk", index=False) print(result) #### 登出系统 #### bs.logout()