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

news2025/1/16 17:50:54

 

目录

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

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

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

相关文章

【PHP面试题46】php-fpm的工作模式是什么,如何进行配置?

文章目录 一、前言二、PHP-FPM的工作模式三、进程数量配置依据四、php-fpm常见的配置参数4.1 pm.max_children4.2 pm.start_servers4.3 pm.min_spare_servers4.4 pm.max_spare_servers4.5 pm.max_requests4.6 request_terminate_timeout4.7 max_input_time4.8 upload_max_files…

UE4 常用控制台命令

ue4执行控制台命令有两种方式,一是在运行时按~呼出控制台输入命令后回车执行,二是调用蓝图函数ExecuteConsoleCommand函数传入参数执行命令,需要注意shipping包无法执行控制台命令 常用命令: Stat FPS 显示帧率 Stat Slate 显示…

激斗云计算:互联网大厂打响新一轮排位战

大模型如同一辆时代列车,所有科技大厂都想上车。 自去年底ChatGPT一炮而红,国内外数十家科技大厂、创业公司、机构相继下场,一时间掀起大模型的热浪。 《中国人工智能大模型地图研究报告》显示,截至今年5月28日,中国…

http连接处理(中)(四)

2. 结合代码分析请求报文解析 上一节我们对http连接的基础知识、服务器接收请求的处理流程进行了介绍,接下来将结合流程图和代码分别对状态机和服务器解析请求报文进行详解。 流程图部分,描述主、从状态机调用关系与状态转移过程。 代码部分&#xff…

内 网 优 化

拓扑 需求 1)所有部门中都使用了网关冗余技术,为了增强网关稳定性和冗余性 -配置VRRP -SW5是VLAN10和VLAN20的Master ,是VLAN30的Backup -SW6是VLAN10和VLAN20的Backup,是VLAN30的Master 2)交换机之间存在很多冗余链路,必须防止环…

AtcoderABC253场

A - Median?A - Median? 题目大意 给定三个整数a、b和c&#xff0c;判断b是否是这些整数的中位数。 思路分析 判断升序降序两种情况 时间复杂度分析 O(1) 代码 #include<iostream> using namespace std; int main() { int a,b,c; cin>>a>>b>>…

Non-Local Video Denoising by CNN

摘要 Non-local patch based methods were until recently state-of-the-art for image denoising but are now outper formed by CNNs. Y et they are still the state-of-the-art for video denoising, as video redundancy is a key factor to attain high denoising perfor…

JavaWeb——Cookie和Session的工作流程

目录 一、定义 1、Cookie定义 2、Session 二、Cookie和Session的联系和区别 1、联系 2、区别 一、定义 1、Cookie定义 Cookie是浏览器在本地存储数据的一种机制&#xff0c;来自于服务器。 服务器在响应中会带有Set-Cookie字段&#xff0c;通过这个字段就可以把要保存在浏…

及早识别面肌痉挛症状,科学治疗是关键!

随着现代社会的快节奏生活和各种压力的增加&#xff0c;面肌痉挛这一神经肌肉紊乱性疾病的发病率也逐渐上升。面肌痉挛是指由于面肌肌肉群异常收缩而导致的面部肌肉抽搐和不自主运动的症状。如果不及早识别和治疗&#xff0c;将对患者的生活质量产生严重影响。因此&#xff0c;…

C语言,封装自定义函数

1、封装自定义函数&#xff0c;计算数组的最大和&#xff0c;最大差 //第一数组 #include <stdio.h> #include <string.h> int MaxSum(int len,int arr[]); int MaxDel(int len,int arr[]); int main(int argc, const char *argv[]) {int arr[]{5,6,8,51,31,51,88…

2023 7.10~7.16 周报 (RTM研究与正演的Python复现)

0 上周回顾 上周简单阅读了论文《Deep-Learning Full-Waveform Inversion Using Seismic Migration Images》, 但是并没读完…因为这篇论文中提到一个技术吸引了注意力: RTM (Reverse-time migration) 于是计划下周去专门熟悉熟悉RTM的机制, 并且试着用Python复现这个操作. 另…

数据处理 | Matlab实现Lichtenberg算法的机器学习数据选择

文章目录 效果一览基本介绍源码设计参考资料效果一览 基本介绍 Matlab实现Lichtenberg算法的机器学习数据选择 Lichtenberg算法适用于回归和分类数据集,并根据数量和最大覆盖范围选择最佳算法。Lichtenberg算法(Lichtenberg algorithm,LA)是由Pereira等人于2021年提出的一种…

Python爬虫——urllib_下载

urlretrieve(url&#xff0c; filename)函数 url 代表的是下载的路径 filename文件的名字 下载网页: url_page "http://www.baidu.com" urllib.request.urlretrieve(url_page, baidu.html)下载图片: url_img "https://img0.baidu.com/it/u2751401762,34216…

VUE研究

1.v2与v3的区别 vue3对源码的管理根据模块进行拆分&#xff0c;在不同目录中对不同的模块进行分别维护&#xff1b; vue3是基于typescript语言进行开发的&#xff0c;这样可以进行更好的类型检查&#xff1b; vue3体积减小&#xff0c;去除了不常使用的API&#xff0c;Tree sha…

DevOps B站学习版(二)

学习地址&#xff1a; 01.DevOps的诞生_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Pt4y1H7Zq/?p1&vd_source1f09c23f556b3d6a9b7706f8db12fa54%E3%80%81 正文开始 找到这个地方&#xff0c;修改 可以写成基于标签拉取和构建工程&#xff0c;下面也选择Tag即可…

Python 自学 day03 容器tuple(元组)的定义与使用,序列,字典,集合,多返回值传递,不定长参数函数

1. tuple 元组 1.1 元组的定义 定义&#xff1a;元组同列表一样&#xff0c;都是可以封装多个、不同类型的元素在内。但最大的不同点在于: 元组一旦定义完成﹐就不可修改。 1.2 元组的创建方法 t1 (1,111,1111,11,1111,222) #元组的定义方法 t2 (22,) …

Postman+Newman+Git+Jenkins+Slack 接口自动化和监控

目录 前言&#xff1a; 一、Newman 介绍&#xff1a; 1、简介 2、安装 3、检查 4、运行 二、Newman 命令行介绍&#xff1a; newman run [options] 测试结果配置 ------------------------------------分 割 线----------------------------------------------------…

2023年最新水果编曲软件FL Studio Producer Edition 21.0.3 Build 3517中文完美至尊解锁免费下载安装激活详细教程

fl studio21.0.3.3517中文解锁特别版是一款功能强大的编曲软件&#xff0c;也就是众所熟知的水果软件。它可以编曲、剪辑、录音、混音&#xff0c;让您的计算机成为全功能录音室。除此之外&#xff0c;这款软件功能非常强大&#xff0c;为用户提供了许多音频处理工具&#xff0…

《红蓝攻防构建实战化网络安全防御体系》读书笔记

作者&#xff1a;奇安信安服团队 ◆ 1.3 红队 各个团队在演练中的角色与分工情况如下。目标系统运营单位&#xff1a;负责红队整体的指挥、组织和协调。安全运营团队&#xff1a;负责整体防护和攻击监控工作。攻防专家&#xff1a;负责对安全监控中发现的可疑攻击进行分析和研…

LiveNVR监控流媒体Onvif/RTSP功能-安全控制HTTP接口鉴权开启禁止游客访问开启后401 Unauthorized如何播放调用接口

LiveNVR安全控制HTTP接口鉴权开启禁止游客访问开启后401 Unauthorized如何播放调用接口&#xff1f; 1、安全控制1.1、接口鉴权1.2、禁止游客访问 2、401 Unauthorized2.1、携带token调用接口2.1.1、获取鉴权token2.1.2、调用其它接口2.1.2.1、携带 CookieToken2.1.2.2、携带 U…