def get_cn_furture_min(self, file_path, update=False): for future in self.future_list: url_str = ( 'http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesMiniKLine15m?symbol=' + future) r = requests.get(url_str) r_json = r.json() r_lists = list(r_json)[::-1] if update: r_lists = r_lists[-30:-1] result = pd.DataFrame( data=r_lists, columns=['datetime', 'open', 'high', 'low', 'close', 'vol']) result = result.rename(columns={'vol': 'volume'}) if update: result = cut_min_repeated_row(file_path + future + '.csv', result) result.to_csv(china_furture_min_file_path + future + '.csv', index=False, mode='a', header=False) else: result.to_csv(china_furture_min_file_path + future + '.csv', index=False) print('期货分钟保存成功:', future) print('--------------------期货15分钟完成----------------------')
def get_us_stock_min(self, file_path, update=False, start=None, end=None, interval="5m"): #获取美股5min stock_dir = {} for s in self.stock_list: stock_dir[s] = yf.Ticker(s) for key, values in stock_dir.items(): result = values.history(interval=interval, start=start, end=end, prepost=False, actions=True, auto_adjust=True, back_adjust=False) result['datetime'] = result.index result['datetime'] = result['datetime'].apply( lambda x: x.tz_convert('America/New_York').strftime( "%Y-%m-%d %H:%M:%S")) result.columns = result.columns.map(str.lower) try: result.drop(['dividends', 'stock splits'], inplace=True, axis=1) except: pass if update: result = cut_min_repeated_row(file_path + key + '.csv', result) result.to_csv( file_path + key + '.csv', index=False, mode='a', header=False, ) else: result.to_csv(us_stock_min_file_path + key + '.csv', index=False) print('美股分钟保存成功:', key) print('--------------------美股分钟成功--------------------------')
def get_china_stock_min__data(self, stock_list, start_date, end_date, file_path, update=False, frequency=15): #获取国内股票15min if isinstance(stock_list, str): stock_list = [stock_list] for stock in stock_list: stock_code_ = ".".join(stock.lower().split('.')[::-1]) rs = bs.query_history_k_data_plus( stock_code_, "time,code,open,high,low,close,volume,amount", start_date=start_date, end_date=end_date, frequency=frequency, adjustflag="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) result['time'] = result['time'].apply( lambda x: make_datetime_str(x)) result = result.rename(columns={'time': 'datetime'}) if update: #每日更新 # with open(file_path + stock_code_ + '.csv', 'a') as f: # f.write('\n') result = cut_min_repeated_row(file_path + stock_code_ + '.csv', result) result.to_csv( file_path + stock_code_ + '.csv', index=False, mode='a', header=False, ) else: #直接保存 result.to_csv(file_path + stock_code_ + '.csv', index=False) print(" 国内分钟完成:", stock_code_) # print('进度: %4.2f' % ((self.index(stock) + 1) / len(self.stock_list))) print('------------------国内分钟成功---------------------------')