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

news2024/11/27 0:18:38

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

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

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

获取数据

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、设置完成,提取数据 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/858815.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开放世界实例分割:Exploring Transformers for Open-world Instance Segmentation

论文作者:Jiannan Wu,Yi Jiang,Bin Yan,Huchuan Lu,Zehuan Yuan,Ping Luo 作者单位:The University of Hong Kong;ByteDance;Dalian University of Technology;Shanghai AI Laboratory 论文链接:https://arxiv.org/pdf/2308.04206v1.pdf 内…

《孤注一掷》现实版:29万打水漂,华为程序员也躲不过的诈骗!!!

明天周五,约吗? 不管怎样,反正播妞已经订好了《孤注一掷》的电影票。不为别的,《孤注一掷》太敢拍了!!! 美女荷官在线发牌,高知程序员在线养“猪”,诈骗头目“虔诚”拜佛…

HTML笔记(2)

列表标签 项目标识符(项目符号)一般是不需要的 代码演示 改变符号样式,type属性 表格标签 代码演示 练习案例 布局标签 div是块儿级标签,占一整行; span标签不会占一整行,它只占包裹内容的那块儿区域&a…

甭提ChatGPT了,这个新的AI助手将永远改变人们的工作方式

我使用ChatGPT和Bard已有一段时间了,这些工具已成为我工作流程中不可或缺的一部分。我依靠它们来生成代码、进行统计测试、理解新的术语,并生成分析报告和总结论文。然而当我改用Poe后,使用体验却有了大幅改善。 我在本文中解释为什么我不再…

Element组件浅尝辄止2:Card卡片组件

根据官方说法: 将信息聚合在卡片容器中展示。 1.啥时候使用?When? 既然是信息聚合的容器,那场景就好说了 新建页面时可以用来当做页面容器页面的某一部分,可以用来当做子容器 2.怎样使用?How? //Card …

测试角色在项目各阶段的项目管理tips

目录 一、前言 二、现状及思考 三、详谈测试介入各阶段的项目管理tips 四、暴露风险最终与协作方共同确定运作策略 五、总结 资料获取方法 一、前言 项目管理是一个繁杂的过程,每个阶段需要涉及到不同人员、资源的协调配合。每个角色都有自己的定位和任务&…

15.3 【Linux】循环执行的例行性工作调度

相对于 at 是仅执行一次的工作,循环执行的例行性工作调度则是由 cron (crond) 这个系统服务来控制的。刚刚谈过 Linux 系统上面原本就有非常多的例行性工作,因此这个系统服务是默认启动的。另外, 由于使用者自己也可以…

Linux命名管道进程通信

文章目录 前言一、什么是命名管道通信二、创建方式三、代码示例四、文件进程通信总结 前言 命名管道 是实现进程间通信的强大工具,它提供了一种简单而有效的方式,允许不同进程之间进行可靠的数据交换。不仅可以在同一主机上的不相关进程间进行通信&…

[AHOI2002] 哈利·波特与魔法石

[AHOI2002] 哈利波特与魔法石 哈利波特与魔法石题目描述输入格式输出格式样例样例输入样例输出 解题思路AC 代码 哈利波特与魔法石 题目描述 输入格式 文件中第一行有七个数,分别是 S1、 S2 、 …、 S7 ;第二行有两个数,依次分别是起点城市…

网络知识面试题

一、TCP 和 UDP 的区别 我们一句话概率区别就TCP 是有连接的可靠传输,UDP 是无连接的不可靠传输。 1、TCP 在传输数据时需要先建立连接,UDP 不需要 2、TCP 传输的数据包比较复杂,UDP 传输的数据包比较简单 3、TCP 使用确认应答机制、超时重传…

通过Python模拟计算附近WIFI密码,没有我蹭不到的网

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 今天来分享一下如何通过 Python 脚本实现 WIFI 密码的自动猜解 无图形界面 先来看看怎么实现没有图形界面版的自动猜解。 WIFI猜解 导入模块 import pywifi from pywifi import const import time import datetime测试连…

ejbca:8443报文跟踪

安装客户端证书后,访问管理员页面 :8443/ejbca/adminweb 同时在wireshark抓包 1、客户端向对端发出Client hello 在Server Hello看到一个颁发给客户端的证书,颁发给5be85c9c1df9(客户端node hostname 5be85c9c1df9)但没有在Clie…

ROS机器人操作系统Catkin的编译与常用命令的使用介绍

ROS中命令有很多,对一些频繁使用的常见命令,做一个整理,这些命令在平时操作机器人当中都是常用到的,也是在ROS中如何让机器人正常运作的必备知识。 尤其是对包进行编译时,熟悉CMake的朋友来说会很简单,在R…

方法重载和方法重写

方法的重载 Overload 对于功能类似的方法,因为参数列表不一样,却需要记住那么多不同的方法名称,太麻烦。多个方法的名称一样,但是参数列表不一样。( 同名不同参 ) 方法重载与下列因素相关: 参…

Java正确的错误捕获姿态

理论概述 在Java中,捕获异常并且合理地处理或抛出异常是编写健壮和可靠代码的关键部分。但是有时候我们可能会对各种错误的捕获方法有点模棱两可,不知道怎么合适的去使用,这里作为基础知识我们做一个回顾巩固!只有正确的开发方法…

原生js发送ajax请求---ajax请求篇(一)

在原生js中我们使用的是XMLHttpRequest对象来发送ajax请求 主要步骤就是: 1.创建XMLHTTPRequest对象 2.使用open方法设置和服务器的交互信息 3.设置发送的数据,开始和服务器端交互 4.注册事件 5.更新界面 (1) get方式 //步骤一…

Java自学网站推荐,专业教学快速提升

Java自学网站可以是学习Java的有用资源之一。它们通常提供了丰富的教学材料、在线课程、编程练习和实例项目,帮助初学者系统地学习Java编程语言和相关技术。 动力节点是一家专业的Java培训机构,他们提供在线视频学习平台,你可以参考他们的官方…

在用的二手电动汽车,雨季时,要注意保养哪些地方?

二手电动汽车在雨季的保养有一些特别需要注意的地方。首先,你要确保你的车子有足够的防水措施。电动汽车的电池组和控制系统通常都装在车辆底部,而这些部分是最怕水的。如果这些部分进水,可能会导致严重的电气故障,甚至可能会引起…

多语言B2B2C跨境购物平台无货源商品库搭建(全开源)

要搭建一个多语言B2B2C跨境购物平台,需要以下几个步骤,包括商品库的搭建、网站基础架构、多语言支持、订单管理、会员管理、营销推广、物流配送和支付接口集成。 1. 商品库的搭建 首先需要建立一个商品库,包括商品的名称、描述、价格、图片…