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

这篇具有很好参考价值的文章主要介绍了掘金量化—Python SDK文档—3.变量约定。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

掘金量化—Python SDK文档—3.变量约定,python,开发语言,掘金量化,量化策略,量化研究

 

目录

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(注意区分大小写)。代码表示可以在掘金终端的仿真交易或交易工具中进行查询。

掘金量化—Python SDK文档—3.变量约定,python,开发语言,掘金量化,量化策略,量化研究

3.1.1交易所代码

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

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

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

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

3.1.3symbol 示例
市场中文名 市场代码 示例代码 证券简称
上交所 SHSE SHSE.600000 浦发银行
深交所 SZSE SZSE.000001 平安银行
中金所 CFFEX CFFEX.IC2011 中证 500 指数 2020 年 11 月期货合约
上期所 SHFE SHFE.rb2011 螺纹钢 2020 年 11 月期货合约
大商所 DCE DCE.m2011 豆粕 2020 年 11 月期货合约
郑商所 CZCE CZCE.FG101 玻璃 2021 年 1 月期货合约
上海国际能源交易中心 INE INE.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 结构如下图:

掘金量化—Python SDK文档—3.变量约定,python,开发语言,掘金量化,量化策略,量化研究

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)

参数:

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

返回值:

类型 说明
dataframe tick 的 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_id str 账户信息,默认返回默认账户, 如多个账户需指定 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

返回值:

类型 说明
dict key 为动态参数的 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)

输出文章来源地址https://www.toymoban.com/news/detail-574250.html

100000000

到了这里,关于掘金量化—Python SDK文档—3.变量约定的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【python-致用】为嫖掘金月更奖品,我用刚学的python做了个批量文件内容替换

    前几天学习了python的文件读取操作,可以用来干点什么呢?嘿,正好很多平台都推出了博客月更活动,但由于不同的平台环境(如markdown语法差别、活动要求),每搬运一篇博客都要幸苦地进行一些 重复性的 手动修改,实在是麻烦。 人生苦短 ,我决定试试 python 能不能帮我

    2024年02月12日
    浏览(44)
  • Python学习笔记(四):函数的定义、函数的返回值、None类型、函数说明文档、函数的嵌套调用、局部变量、全局变量、global关键字

    目录 一、函数介绍 1. 函数是: 2. 使用函数的好处是: 二、函数的定义: 三、函数的参数 1.传入参数的功能是: 2.函数的传入参数 - 传参定义 3.注意事项: 4.练习:测量体温 四、函数的返回值 1.函数返回值的定义 2.None类型 五、函数说明文档 六、函数的嵌套调用 七、变量的

    2024年02月05日
    浏览(67)
  • 【Python 全栈开发 ④】Python 中的变量

    变量,英文名叫做 variable ,是 计算机语言 中能 储存计算结果 或能 表示值 的 抽象 概念。 在 《计算机科学概述》 中,变量是这样定义的:“ 高级程序设计语言 允许使用描述性的名字指向主存储器中的位置,而不必再使用数字地址,这样的名字称为 变量(variable) 。之所

    2024年02月02日
    浏览(40)
  • 05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域

    对应输出如上,没有使用len()函数,对应的子算出字符的长度,但是代码整体写的就很别扭。代码过于重复,代码中唯一不一样的地方就是被统计的字符串不同。同时对应的,代码整体也就会比较低效。可以使用函数,优化过程,先定义函数。 同样的输出,效果一样,两者

    2024年01月19日
    浏览(80)
  • [Python物联网]Python基础知识和语法--变量和数据类型--Python快速上手开发物联网上位机程序

    目录 一、前言 二、Python变量 三、Python数据类型         1.数值类型         2.字符串类型         3.列表类型         4.元组类型         5.字典类型         6.数据类型转换         当你开始学习Python编程语言时,第一步就是了解 变量和数据类型 。变量是存储

    2024年02月04日
    浏览(58)
  • 【文档翻译】__cdecl/__stdcall/__fastcall?解开神秘的调用约定!

    本文档译自 www.codeproject.com 的文章 \\\"Calling Conventions Demystified\\\",作者 Nemanja Trifunovic,原文参见此处 在学习 Windows 编程的漫长、艰难而美妙的旅途中,你可能会对函数声明前出现的奇怪说明符感到好奇,比如 __cdecl 、 __stdcall 、 __fastcall 、 WINAPI 等等。在阅读过 MSDN 或其他参考资

    2024年02月05日
    浏览(39)
  • Python爬虫学习笔记:1688商品详情API 开发API接口文档

      1688API接口是阿里巴巴集团推出的一种开放平台,提供了丰富的数据接口、转换工具以及开发资源,为开发者提供了通用的应用接口及大量数据资源,支持开发者在1688上进行商品搜索、订单管理、交易报表及物流等方面的操作。 1688API接口主要包含以下几类: 商品API:提供

    2024年02月16日
    浏览(42)
  • Python民宿农家乐攻略和点评系统毕业设计成品作品(4)开发技术文档

    开发操作系统:windows10 + 4G内存 + 500G硬盘 开发环境:Python3.8 开发语言:Python 开发框架:Django 开发工具:pycharm 数据库:mysql8 数据库管理工具:navicat 其他开发语言:html + css +javascript Python民宿农家乐攻略点评系统  后台管理文件 Python民宿农家乐攻略点评系统  前端文件 P

    2024年02月11日
    浏览(46)
  • Python:Python编程:金融量化交易

    在金融量化交易中,下面几个模块是应用的比较广泛的 numpy (Numberic Python) : 提供大量的数值编程工具,可以方便的处理:向量矩阵等运算,相比高昂的 matlab , NumPy的出现使 Python得到了更多人的青睐。 scipy : 更多应用于 统计,优化,差值,数值积分,时频率转换等领域 Pandas

    2024年02月07日
    浏览(39)
  • 【Python使用】嘿马头条完整开发md笔记第2篇:数据库,作用【附代码文档】

    嘿马头条项目从到完整开发笔记总结完整教程(附代码资料)主要内容讲述:课程简介,ToutiaoWeb虚拟机使用说明,Pycharm远程开发,产品与开发,数据库1 产品介绍,2 原型图与UI图,3 技术架构,4 开发。OSS对象存储,七牛云存储,CDN,缓存。缓存,缓存架构,缓存数据,缓存有效

    2024年03月18日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包