我們首先需要獲取股票資料。
程式碼IDE選擇:PyCharm
計算機環境:MacOS
一、獲取股票資料的三種方式
二、獲取股票資料
這裡選定的是使用JoinQuant平臺提供的免費介面(有時間範圍限制),簡單整理如下。
使用前需要先申請許可權並初始化授權:
from jqdatasdk import * auth('', '') # 賬號是申請時所填寫的手機號
獲取所有A股股票列表
def get_stock_list(): """ 獲取所有A股股票列表 上海證券交易所.XSHG 深圳證券交易所.XSHE :return: stock_list """ stock_list = list(get_all_securities(['stock']).index) return stock_list
獲取單個股票行情資料
def get_single_price(code, time_freq, start_date=None, end_date=None): """ 獲取單個股票行情資料 :param code: :param time_freq: :param start_date: :param end_date: :return: """ # 如果start_date=None,預設為從上市日期開始 if start_date is None: start_date = get_security_info(code).start_date if end_date is None: end_date = datetime.datetime.today() # 獲取行情資料 data = get_price(code, start_date=start_date, end_date=end_date, frequency=time_freq, panel=False) return data
將資料轉換為指定週期:透過resample函式
def transfer_price_freq(data, time_freq): """ 將資料轉換為指定週期:開盤價(週期第1天)、收盤價(週期最後1天)、最高價(週期內)、最低價(週期內) :param data: :param time_freq: :return: """ df_trans = pd.DataFrame() df_trans['open'] = data['open'].resample(time_freq).first() df_trans['close'] = data['close'].resample(time_freq).last() df_trans['high'] = data['high'].resample(time_freq).max() df_trans['low'] = data['low'].resample(time_freq).min() return df_trans
獲取單個股票財務指標
def get_single_finance(code, date, statDate): """ 獲取單個股票財務指標 :param code: :param date: :param statDate: :return: """ data = get_fundamentals(query(indicator).filter(indicator.code == code), date=date, statDate=statDate) # 獲取財務指標資料 return data
獲取單個股票估值指標
def get_single_valuation(code, date, statDate): """ 獲取單個股票估值指標 :param code: :param date: :param statDate: :return: """ data = get_fundamentals(query(valuation).filter(valuation.code == code), date=date, statDate=statDate) # 獲取財務指標資料 return data