コード例 #1
0
    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分钟完成----------------------')
コード例 #2
0
    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('--------------------美股分钟成功--------------------------')
コード例 #3
0
 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('------------------国内分钟成功---------------------------')