量化投研之如何获取所需的数据?

本文介绍了掘金量化平台提供的两种数据获取方式:通过订阅获取实时高频行情数据,以及通过接口直通获取历史数据。详细讲解了订阅函数的使用和接口查询的历史行情、基本面数据获取示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据是决策和分析的基础,数据的速度、完整性非常重要。

掘金量化提供两大类数据获取方式:订阅数据获取实时数据、接口直通获取历史数据。

下面是两个方式各自的步骤介绍。

获取数据

1. 通过订阅获取高频行情数据

步骤

1、设置初始化函数: init, 使用 subscribe 函数进行数据订阅;

2、实现一个函数: on_bar, 来根据数据推送进行逻辑处理;

3、执行策略。

描述

预先订阅所需数据,在使用时,用对应的事件函数接收数据,数据发生更新时返回,并能够返回指定格式的时间序列滑窗数据。如:

# 第一步:订阅函数(参数规格)
subscribe(标的列表,数据频率,数据序列长度);

# 第二步:接收函数标识(全局变量,指定数据返回)
On_event (全局变量,指定数据集);
    print (指定数据集)
    print (全局变量)

示例

# coding=utf-8
from __future__ import print_function, absolute_import
from gm.api import *


# 订阅平安银行10个长度1分钟的bar数据,然后求收盘价均值
# 设置初始化函数, 通过订阅将需要的数据申明
def init(context):
    # 进行数据订阅
    subscribe(symbols='SZSE.000001', frequency='60s', count=10)


# 通过on_bar函数接收bar数据事件,并在该函数中求均值
def on_bar(context,bar):
    # 打印当前获取的bar信息
    print(bars)

    # context.data提取缓存的数据滑窗, 可用于计算指标
    # 注意:context.data里的count要小于或等于subscribe里的count
    data = context.data(symbols='SZSE.000001', frequency='60s', count=10, fields='close'))
    print(data)

if __name__ == '__main__':
    '''
    strategy_id策略ID,由系统生成
    filename文件名,请与本文件名保持一致
    mode实时模式:MODE_LIVE回测模式:MODE_BACKTEST
    token绑定计算机的ID,可在系统设置-密钥管理中生成
    backtest_start_time回测开始时间
    backtest_end_time回测结束时间
    backtest_adjust股票复权方式不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
    backtest_initial_cash回测初始资金
    backtest_commission_ratio回测佣金比例
    backtest_slippage_ratio回测滑点比例
    '''
    run(strategy_id='strategy_id',
        filename='main.py',
        mode=MODE_BACKTEST,
        token='token_id',
        backtest_start_time='2020-04-01 09:00:00',
        backtest_end_time='2020-05-31 15:00:00',
        backtest_adjust=ADJUST_NONE,
        backtest_initial_cash=10000000,
        backtest_commission_ratio=0.0001,
        backtest_slippage_ratio=0.0001)

结果保存

订阅后的数据滑窗储存在 context.data 中,提取数据需要调用 context.data()接口,可以在自定义函数 algo()中调取或是在 on_xxx()事件驱动函数中调取,调取格式为:

data = context.data(标的,频率,滑窗大小,字段)


2. 通过接口获取数据

步骤

1、set_token 设置用户 token, 如果 token 不正确, 函数调用会抛出异常;

2、调用数据查询函数, 直接进行数据查询。

描述

通过接口返回值获取数据,数据仅返回一次,如:

# 数据返回=请求函数(参数规格)

# 查询历史行情数据:获取指定时间段内的历史数据
history(标的,频率,开始时间,结束时间,是否复权)

# 查询基本面数据类:获取指定时间段内的历史数据
get_fundamentals(表名,字段名,标的,开始日期,结束日期)

# 查询成分股:获取指数成分股
get_constituents(指数代码)

# 查询业务数据:获取交易日期列表
get_trading_dates(交易所,开始时间,结束时间)

示例

# coding=utf-8
from __future__ import print_function, absolute_import
from gm.api import *


# 掘金终端需要打开,接口取数是通过网络请求的方式
# 设置token,可在用户-密钥管理里查看获取已有token ID
set_token('your token_id')


# 查询行情快照
current_data = current(symbols='SZSE.000001')


# 查询历史行情数据,并以结构方式返回
history_data = history(symbol='SHSE.000300', frequency='1d', start_time='2010-07-28', end_time='2017-07-30', df=True)


# 查询财务数据,在股票交易衍生表中查询几个字段的值
get_fundamentals(table='trading_derivative_indicator', symbols='SHSE.600000, SZSE.000001', start_date='2017-01-01', end_date='2017-01-01', fields='TCLOSE,PETTMNPAAEI')

补充:使用 Jupyter Notebook 提取数据做研究

说明

jupyter notebook 是 Anaconda 集成的工具包,安装了 anaconda 后,打开 jupyter notebook 获取数据。

开始前需要先确认以下三点:

  • 掘金终端需要打开

  • jupyter notebook 的 Python 解析器已安装 gm 包(前面文档有介绍怎么下载 SDK)

  • 已设置 token ID

步骤

1、初始化设置,获取数据的必要代码

from __future__ import print_function, absolute_import, unicode_literals
from gm.api import *
# 终端开启 设置token
set_token('your token')

2、设置完成,提取数据 。

### 关于智能体技术在A股市场的应用 随着人工智能技术的发展,越来越多的工具被应用于金融领域,尤其是在股票市场分析方面。以下是关于智能体技术和其在A股中的具体应用场景: #### 智能体技术解析上市公司年报 通过使用 **LlamaIndex** 或其他类似的自然语言处理框架,可以实现对A股上市公司年报的自动化解读[^1]。这种方法能够帮助资者快速提取关键财务数据、业务模式以及未来展望等内容,从而减少人工阅读的时间成本。 例如,在实际操作中可以通过以下 Python 代码加载模型并对某份年度报告进行初步分析: ```python from llama_index import GPTSimpleVectorIndex, SimpleDirectoryReader documents = SimpleDirectoryReader('annual_reports').load_data() index = GPTSimpleVectorIndex(documents) query_result = index.query("请总结这份年报的主要亮点") print(query_result) ``` 此脚本会读取指定目录下的文档集合,并利用预训练的语言模型生成简洁明了的回答。 #### 自动生成K线图和技术指标 除了文字资料外,历史价格走势也是研究个股不可或缺的一部分。借助开源项目 AKShare 可轻松获取特定时间段内的交易记录并绘制 K 线图表[^2]。下面展示了一段针对贵州茅台 (600519) 的实例程序: ```python import akshare as ak import matplotlib.pyplot as plt stock_zh_a_hist_df = ak.stock_zh_a_hist( symbol="600519", start_date="20240307", end_date="20240605", adjust="qfq" ) plt.figure(figsize=(14, 8)) plt.plot(stock_zh_a_hist_df['日期'], stock_zh_a_hist_df['收盘']) plt.title('Guizhou Maotai Stock Price') plt.xlabel('Date') plt.ylabel('Price') plt.grid(True) plt.show() ``` 上述代码片段不仅展示了如何抓取所需数据集,还包含了基本可视化功能以便直观观察趋势变化情况。 #### 相关公司与股票列表 目前市场上已有若干企业专注于开发基于 AI 的量化交易平台或者提供辅助决策服务的产品和服务。部分知名案例包括但不限于通达信软件股份有限公司及其推出的“萝卜”,东方财富信息股份有限公司旗下的Choice终端等等。这些平台通常集成多种算法策略供用户选择尝试,同时也支持自定义参数调整满足个性化需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值