Python量化交易系統實戰--獲取股票資料

麦克煎蛋發表於2024-04-12

我們首先需要獲取股票資料。

程式碼IDE選擇:PyCharm

計算機環境:MacOS

一、獲取股票資料的三種方式

Python量化交易系統實戰--獲取股票資料

二、獲取股票資料

這裡選定的是使用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

相關文章