掘金量化—Python SDK文档—3.变量约定

 

目录

Python SDK文档

3.变量约定

  3.1 symbol - 代码标识

    3.1.1交易所代码

    3.1.2交易标的代码

    3.1.3symbol 示例

    3.1.4期货主力连续合约

  3.2mode - 模式选择

    3.2.1实时模式

    3.2.2回测模式

  3.3context - 上下文对象

    3.3.1context.symbols - 订阅代码集合

    3.3.2context.now - 当前时间

    3.3.3context.data - 数据滑窗

    3.3.4context.account - 账户信息

    3.3.5context.parameters - 动态参数​​​​​​​

    3.3.6context.xxxxx - 自定义属性


Python SDK文档

3.变量约定

3.1 symbol - 代码标识

掘金代码(symbol)是掘金平台用于唯一标识交易标的代码,

格式为:交易所代码.交易标代码, 比如深圳平安的symbol,示例:SZSE.000001(注意区分大小写)。代码表示可以在掘金终端的仿真交易或交易工具中进行查询。

3.1.1交易所代码

目前掘金支持国内的 7 个交易所, 各交易所的代码缩写如下:

市场中文名市场代码
上交所SHSE
深交所SZSE
中金所CFFEX
上期所SHFE
大商所DCE
郑商所CZCE
上海国际能源交易中心INE
3.1.2交易标的代码

交易表代码是指交易所给出的交易标的代码, 包括股票(如 600000), 期货(如 rb2011), 期权(如 10002498), 指数(如 000001), 基金(如 510300)等代码。

具体的代码请参考交易所的给出的证券代码定义。

3.1.3symbol 示例
市场中文名市场代码示例代码证券简称
上交所SHSESHSE.600000浦发银行
深交所SZSESZSE.000001平安银行
中金所CFFEXCFFEX.IC2011中证 500 指数 2020 年 11 月期货合约
上期所SHFESHFE.rb2011螺纹钢 2020 年 11 月期货合约
大商所DCEDCE.m2011豆粕 2020 年 11 月期货合约
郑商所CZCECZCE.FG101玻璃 2021 年 1 月期货合约
上海国际能源交易中心INEINE.sc2011原油 2020 年 11 月期货合约
3.1.4期货主力连续合约

仅回测模式下使用,期货主力连续合约为量价数据的简单拼接,未做平滑处理, 如 SHFE.RB 螺纹钢主力连续合约,其他主力合约请查看期货主力连续合约

3.2mode - 模式选择

策略支持两种运行模式,需要在run()里面指定,分别为实时模式和回测模式。

3.2.1实时模式

实时模式需指定 mode = MODE_LIVE

订阅行情服务器推送的实时行情,也就是交易所的实时行情,只在交易时段提供,常用于仿真和实盘。

3.2.2回测模式

回测模式需指定 mode = MODE_BACKTEST

订阅指定时段、指定交易代码、指定数据类型的历史行情,行情服务器将按指定条件全速回放对应的行情数据。适用的场景是策略回测阶段,快速验证策略的绩效是否符合预期。

3.3context - 上下文对象

context 是策略运行上下文环境对象,该对象将会在你的算法策略的任何方法之间做传递。用户可以通过 context 定义多种自己需要的属性,也可以查看 context 固有属性,context 结构如下图:

3.3.1context.symbols - 订阅代码集合

通过 subscribe 行情订阅函数, 订阅代码会生成一个代码集合

函数原型:

context.symbols

返回值:

类型说明
set(str)订阅代码集合

示例:

subscribe(symbols=['SHSE.600519', 'SHSE.600419'], frequency='60s')
context.symbols

返回:

{'SHSE.600519', 'SHSE.600419'}

3.3.2context.now - 当前时间

实时模式返回当前本地时间, 回测模式返回当前回测时间

函数原型:

context.now

返回值:

类型说明
datetime.datetime当前时间(回测模式下是策略回测的当前历史时间, 实时模式下是用户的系统本地时间)

示例:

context.now

返回:

2020-09-01 09:40:00+08:00

3.3.3context.data - 数据滑窗

获取订阅的tick 对象 或者 bar 对象滑窗,数据为包含当前时刻推送 tick 或 bar 的前 count 条tick或者bar数据

原型:

context.data(symbol,frequency,count,fields)

参数:

参数名类型说明
symbolstr标的代码(只允许单个标的的代码字符串)
frequencystr频率,所填频率应包含在subscribe订阅过频率中。
countint滑窗大小,正整数,此处 count 值应小于等于 subscribe 中指定的 count 值
fieldsstr所需 bar 或 tick 的字段,如有多属性, 中间用,隔开,具体字段见: tick 对象 和 bar 对象

返回值:

类型说明
dataframetick 的 dataframe 或者 bar 的 dataframe

订阅 tick 时 示例:

Subcribe_data = context.data(symbol='SHSE.600000', frequency='tick', count=2)

输出:

[{'symbol': 'SHSE.600000', 'open': 9.680000305175781, 'high': 9.720000267028809, 'low': 9.619999885559082, 'price': 9.630000114440918, 'quotes': [{'bid_p': 9.630000114440918, 'bid_v': 360197, 'ask_p': 9.640000343322754, 'ask_v': 124200}, {'bid_p': 9.619999885559082, 'bid_v': 1265300, 'ask_p': 9.649999618530273, 'ask_v': 172859}, {'bid_p': 9.609999656677246, 'bid_v': 1030400, 'ask_p': 9.65999984741211, 'ask_v': 233400}, {'bid_p': 9.600000381469727, 'bid_v': 1200000, 'ask_p': 9.670000076293945, 'ask_v': 150700}, {'bid_p': 9.59000015258789, 'bid_v': 208000, 'ask_p': 9.680000305175781, 'ask_v': 199543}], 'cum_volume': 29079145, 'cum_amount': 280888066.0, 'last_amount': 963.0, 'last_volume': 100, 'created_at': datetime.datetime(2020, 11, 20, 11, 30, 1, 400000, tzinfo=tzfile('PRC')), 'cum_position': 0, 'trade_type': 0}, {'quotes': [{'bid_p': 9.630000114440918, 'bid_v': 315497, 'ask_p': 9.640000343322754, 'ask_v': 125900}, {'bid_p': 9.619999885559082, 'bid_v': 1291300, 'ask_p': 9.649999618530273, 'ask_v': 177959}, {'bid_p': 9.609999656677246, 'bid_v': 1035000, 'ask_p': 9.65999984741211, 'ask_v': 233400}, {'bid_p': 9.600000381469727, 'bid_v': 1213300, 'ask_p': 9.670000076293945, 'ask_v': 150700}, {'bid_p': 9.59000015258789, 'bid_v': 212100, 'ask_p': 9.680000305175781, 'ask_v': 173943}, {'bid_p': 0, 'bid_v': 0, 'ask_p': 0, 'ask_v': 0}, {'bid_p': 0, 'bid_v': 0, 'ask_p': 0, 'ask_v': 0}, {'bid_p': 0, 'bid_v': 0, 'ask_p': 0, 'ask_v': 0}, {'bid_p': 0, 'bid_v': 0, 'ask_p': 0, 'ask_v': 0}, {'bid_p': 0, 'bid_v': 0, 'ask_p': 0, 'ask_v': 0}], 'symbol': 'SHSE.600000', 'created_at': datetime.datetime(2020, 11, 20, 13, 0, 2, 430000, tzinfo=tzfile('PRC')), 'price': 9.630000114440918, 'open': 9.680000305175781, 'high': 9.720000267028809, 'low': 9.619999885559082, 'cum_volume': 29171845, 'cum_amount': 281780897.0, 'cum_position': 0, 'last_amount': 892831.0, 'last_volume': 92700, 'trade_type': 0, 'receive_local_time': 1605863292.163}]

订阅 bar 时 示例:

Subcribe_data = context.data(symbol='SHSE.600000', frequency='60s', count=2, fields='symbol,open,close,volume,eob')

输出:

  symbol         open         close        volume         eob
SHSE.600000    12.64000     12.65000      711900   2017-06-30 15:00:00
SHSE.600000    12.64000     12.62000      241000   2017-07-03 09:31:00

注意:1. 所得数据按 eob 时间正序排列。 2. 不支持传入多个 symbol 或 frequency,若输入多个,则返回空 dataframe。 3. 若 fields 查询字段包含无效字段,返回 KeyError 错误。

Tips:context.data()与 bar 一起使用时的区别和联系

以订阅‘SHSE.600519’股票日频数据为例,在 on_bar()中同时输出 bar 和 context.data()。

  • 当订阅的滑窗大小(count)为 1 时,bar 返回的数据和 context.data 返回的数据是相同的
  • 当订阅的滑窗大小(count)大于 1 时,bar 返回的数据为最新的一条;而 context.data()返回的数据是 count 条,其中最后一条和 bar 返回的数据相同 也就是说,无论订阅滑窗大小如何设置,bar 每次只返回一条最新数据,而 context.data()返回数据条数等于 count,并且最后一条为最新数据。
3.3.4context.account - 账户信息

可通过此函数获取账户资金信息及持仓信息。

原型:

context.account(account_id=None)

参数:

参数名类型说明
account_idstr账户信息,默认返回默认账户, 如多个账户需指定 account_id

返回值:

返回类型为account - 账户对象。

示例-获取当前持仓:

# 所有持仓
Account_positions = context.account().positions()
# 指定持仓
Account_position = context.account().position(symbol='SHSE.600519',side = PositionSide_Long)

返回值:

类型说明
list[position]持仓对象列表

注意:没有持仓的情况下, 用 context.account().positions()查总持仓, 返回空列表, 用 context.account().position()查单个持仓,返回 None

输出

# 所有持仓输出
[{'account_id': 'd7443a53-f65b-11ea-bb9d-484d7eaefe55', 'symbol': 'SHSE.600419', 'side': 1, 'volume': 2200, 'volume_today': 100, 'vwap': 16.43391600830338, 'amount': 36154.61521826744, 'fpnl': -2362.6138754940007, 'cost': 36154.61521826744, 'available': 2200, 'available_today': 100, 'created_at': datetime.datetime(2020, 9, 1, 9, 40, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2020, 9, 30, 9, 40, tzinfo=tzfile('PRC')), 'account_name': '', 'vwap_diluted': 0.0, 'price': 0.0, 'order_frozen': 0, 'order_frozen_today': 0, 'available_now': 0, 'market_value': 0.0, 'last_price': 0.0, 'last_volume': 0, 'last_inout': 0, 'change_reason': 0, 'change_event_id': '', 'has_dividend': 0}, {'account_id': 'd7443a53-f65b-11ea-bb9d-484d7eaefe55', 'symbol': 'SHSE.600519', 'side': 1, 'volume': 1100, 'vwap': 1752.575242219682, 'amount': 1927832.7664416502, 'fpnl': -110302.84700805641, 'cost': 1927832.7664416502, 'available': 1100, 'created_at': datetime.datetime(2020, 9, 1, 9, 40, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2020, 9, 15, 9, 40, tzinfo=tzfile('PRC')), 'account_name': '', 'volume_today': 0, 'vwap_diluted': 0.0, 'price': 0.0, 'order_frozen': 0, 'order_frozen_today': 0, 'available_today': 0, 'available_now': 0, 'market_value': 0.0, 'last_price': 0.0, 'last_volume': 0, 'last_inout': 0, 'change_reason': 0, 'change_event_id': '', 'has_dividend': 0}]
# 指定持仓输出
{'account_id': 'd7443a53-f65b-11ea-bb9d-484d7eaefe55', 'symbol': 'SHSE.600519', 'side': 1, 'volume': 1100, 'vwap': 1752.575242219682, 'amount': 1927832.7664416502, 'fpnl': -110302.84700805641, 'cost': 1927832.7664416502, 'available': 1100, 'created_at': datetime.datetime(2020, 9, 1, 9, 40, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2020, 9, 15, 9, 40, tzinfo=tzfile('PRC')), 'account_name': '', 'volume_today': 0, 'vwap_diluted': 0.0, 'price': 0.0, 'order_frozen': 0, 'order_frozen_today': 0, 'available_today': 0, 'available_now': 0, 'market_value': 0.0, 'last_price': 0.0, 'last_volume': 0, 'last_inout': 0, 'change_reason': 0, 'change_event_id': '', 'has_dividend': 0}

示例-获取当前账户资金:

context.account().cash

返回值:

类型说明
dict[cash]资金对象字典

输出

{'account_id': 'd7443a53-f65b-11ea-bb9d-484d7eaefe55', 'nav': 1905248.2789094353, 'pnl': -94751.72109056474, 'fpnl': -94555.35135529494, 'frozen': 1963697.3526980684, 'available': 36106.277566661825, 'cum_inout': 2000000.0, 'cum_trade': 1963697.3526980684, 'cum_commission': 196.3697352698069, 'last_trade': 1536.1536610412597, 'last_commission': 0.153615366104126, 'created_at': datetime.datetime(2020, 9, 1, 8, 0, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2020, 9, 30, 9, 40, tzinfo=tzfile('PRC')), 'account_name': '', 'currency': 0, 'order_frozen': 0.0, 'balance': 0.0, 'market_value': 0.0, 'cum_pnl': 0.0, 'last_pnl': 0.0, 'last_inout': 0.0, 'change_reason': 0, 'change_event_id': ''}

示例-获取账户连接状态:

context.account().status

输出

state: 3
​​​​​​​3.3.5context.parameters - 动态参数

获取所有动态参数

函数原型:

context.parameters

返回值:

类型说明
dictkey 为动态参数的 key, 值为动态参数对象, 参见动态参数

示例-添加动态参数和查询所有设置的动态参数

add_parameter(key='k_value', value=context.k_value, min=0, max=100, name='k值阀值', intro='k值阀值',group='1', readonly=False)

context.parameters

输出

{'k_value': {'key': 'k_value', 'value': 80.0, 'max': 100.0, 'name': 'k值阀值', 'intro': 'k值阀值', 'group': '1', 'min': 0.0, 'readonly': False}}

​​​​​​​3.3.6context.xxxxx - 自定义属性

通过自定义属性设置参数, 随 context 全局变量传入策略各个事件里

context.my_value = 100000000

返回值:

类型说明
any type自定义属性

示例-输出自定义属性

print(context.my_value)

输出

100000000

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker 镜像解密:分层存储与构建原理多角度解析

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

实现将redis中的所有数据备份到数据库表中

实现将redis中的所有数据备份到数据库表中 /*** 将redis中的数据同步到mysql中*/Overridepublic void saveMysqlForRedis(){Jedis jedis new Jedis("127.0.0.1", 6379);//System.out.println(jedis.ping());Set keys jedis.keys("*");//列出所有的keyI…

直流有刷电机

直流有刷电机 直流有刷电机(Brushed DC motor) 具有结构简单、易于控制、成本低等特点,在一些功能简单的应用场合,或者说在能够满足必要的性能、低成本和足够的可靠性的前提下,直流有刷电机往往是一个很好的选择。例如便宜的电子玩具、各种风…

【分布式训练】基于Pytorch的分布式数据并行训练

基于Pytorch的分布式数据并行训练 动机为什么要并行分布数据?现有资料的不足 Outline整体框架图带解释的最小demo示例没有multiprocessing开启multiprocessing 分布式训练启动方式混合精度训练(采用apex) 参考资料 简介: 在PyTorc…

Element-UI 实现动态增加多个不同类型的输入框并校验(双重v-for表单验证)

文章目录 前言定义表单格式表单渲染和验证扩展 前言 在做复杂的动态表单,实现业务动态变动,比如有一条需要动态添加的el-form-item中包含了多个输入框,并实现表单验证,但在element-ui组件库中给出的表单校验中没有这样的格式&…

Day977.除了授权码许可类型,OAuth 2.0还支持什么授权流程? -OAuth 2.0

除了授权码许可类型,OAuth 2.0还支持什么授权流程? Hi,我是阿昌,今天学习记录的是关于除了授权码许可类型,OAuth 2.0还支持什么授权流程?的内容。 授权码许可的流程最完备、最安全没错儿,但它…

【Jenkins】Jenkins构建前端流水线

目录 一、前言二、新建前端流水线1、点击新建任务2、填写流水线名称(这里我选择的是自由风格的软件项目),任务名称一般格式为:项目名称-前后端3、创建成功后的结果 三、配置前端流水线1、进入刚创建好的任务页面中,点击…

音视频H265编码; Socket通信实现N对N连接代码示例

H.265编码和Socket通信是两个不同的概念,它们分别涉及视频编码和网络通信。在实现N对N连接时,您可以将它们结合起来,但要注意每个方面的具体实现。 H.265编码(视频编码): H.265编码涉及将视频数据进行压缩…

分布式文件系统与HDFS的shell操作及查看元数据

启动hadoop和hive的metastore查看sbin的目录下的文件 执行./start-all.sh 查看相关的进程

C语言 register关键字与“傲娇的编译器”

1.作用: “建议”编译器把变量放到寄存器内,编译器不一定听你的(傲娇)!! 2.速度:寄存器>高速缓存>内存,寄存器空间很宝贵(非常非常少) 3.寄存器不支持取…

【深度学习】目标检测的全面回顾

一、说明 随着自动驾驶汽车、智能视频监控、面部检测和各种人数统计应用的兴起,对快速准确的物体检测系统的需求也在不断增长。这些系统不仅涉及识别和分类图像中的每个对象,还涉及通过在图像周围绘制适当的边界框来定位每个对象。这使得对象检测比其传统…

css基本样式的使用

1、高度和宽度 .c1{height: 300px;width: 500px; }注意事项: 宽度,支持百分比行内标签,默认无效块级标签,默认有效(即使右侧空白,也不给你占用) 块级和行内标签 css样式 标签: di…

【使用机器学习和深度学习对城市声音进行分类】基于两种技术(ML和DL)对音频数据(城市声音)进行分类(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

图片速览 DCN K-means-friendly Spaces: Simultaneous Deep Learning and Clustering

本文使用了一种交替更新网络参数和聚类中心的方法。在网络更新完成之后,对于固定的网络参数和 M,再更新当前样本的分配向量。然后根据新的分配结果如式子3.8更新聚类中心: 注:文中还有问题是否能进行凸优化的部分 CG https…

IDEA使用GIT提交代码中文日志(commit message)乱码

最近换了新的开发环境,导致提交gti中文注释乱码,遂记录一下解决方案 idea中查看git提交信息显示中文是正常的 gitee上显示乱码 本地显示也是乱码 一、命令修改编码格式 git 安装目录下执行 git config --global i18n.commitencoding utf-8git config …

SpringMvc配置静态资源访问路径

文章目录 1. 整体流程2. registry.addResourceHandler()2.1 函数分析2.2 结果演示 3. ResourceHandlerRegistration.addResourceLocations()3.1 函数分析3.2 结果演示 1. 整体流程 1. 写一个配置类继承WebMvcConfigurationSupport 2. 利用 registry.addResourceHandler("…

vscode 配置ssh 免密登录 多台服务器

0、下载vscode Visual Studio Code - Code Editing. Redefined 之前一直用pycharm 但是好像社区免费版本不能连接服务器,还要本地同步代码,比较繁琐,因此改用vscode。 1、添加ssh 添加后可以尝试登录,确认下账号密码&#xff0…

浅谈性能测试策略之银行测试

一、性能测试的四个方面 在一般的性能测试讨论中大家通常只围绕三个方面进行提问和总结:测试脚本如何编写,被测系统如何监控,性能瓶颈如何调优。大部分刚刚接触性能测试的人会纠结于脚本的编写,如何设置参数化、如何设置关联、何时…

结合ChatGPT制作PPT

今天看到圈友的一个AI分享,然后自己本身需要做一个分享的PPT。刚好那着帖子实战一下。先说下整体感受。 优点:制作成本确实会比较低,很熟练的话大概就是1分钟一个都有可能。整体流程是先找个第三方PPT制作网站,看下支不支持文本转…

C# 属性

文章目录 实例属性静态属性只读属性:内部只读属性:动态计算值的属性方式一:主动计算方式二:被动计算 快速生成属性的方法:输入propfull,按两下tab键,然后再按tab键一次修改有底纹的字段&#xf…