Python期货量化交易中常用的数据类型有哪些?
off999 2024-10-21 06:50 32 浏览 0 评论
1 常用内置常量
Python解释器在启动时会创建None、True、False三个常量,None表示“无”,True表示“真”,False表示“假”。
None是NoneType类型的唯一值,表示缺少值或空值,例如,当函数没有返回值时会默认返回None值。
因为Python用“有”和“无”来表示“真”和“假”,“有”为真,“无”为假,所以None、0、空字符串、空列表、空字典都是假,非“空”数据则为真。
True和False是bool类型的值,True和False除了表示真和假,其本身也有值,True的值为1,False的值为0,可以与数值做计算。例如,5+True结果为6,3*False结果为0,1==True结果为True,1 is True结果为False,以上示例说明True的值为1,但True在内存中的地址和整数1的地址不同。
None、True、False这三个常量在量化策略中会经常用到。还有Ellipsis常量与省略号的字面含义相同,常用在注释当中。
2 整型
在计算交易手数时需要用到整型,如1、2、3、4。
Python可以直接用整数进行计算,当在Python代码中输入整数数值时,Python会自动把输入的数值创建为整型。
当然,你也可以用整型类int()创建整数,给整型类int()传递数值参数,int()便会把数值参数转换为整型。例如,int(5.89)的结果是5,转换时只保留了整数部分;int('123')的结果是123,把字符串类型转换成了整数类型。
我们可能需要从本地文件中读取数据,比如保存在本地的成交数据,所读取的数据通常是字符串类型,要把字符串类型转换成整型才能参与相关计算。
整型可以是正数也可以是负数,如3和?3。在量化策略中可定义净持仓pos=3,表示净多头3手;定义pos= -3,表示净空头3手。
3 浮点型
价格、保证金等属于浮点型数值,浮点型数值是带有小数点的小数。
类似于整型,Python可以直接用浮点型数值计算,也可以用浮点型类float()创建浮点型数值。例如,float(5)结果是5.0,在转换整数时增加了一个小数位;float('5.999')结果是5.999,把字符串转换成了浮点型数值。
整型和浮点型相加减,结果会转换成浮点型。如果在计算中想要保留两位小数,可以用round()函数,例如,a=5.946326598,round(a,2)结果是5.95,经过四舍五入之后保留两位小数。
4 字符串类型
字符串是由一对英文单引号、一对英文双引号、一对英文三单引号或一对英文三双引号包围的字符,交易品种、账号、密码等都是字符串类型。例如,'账号'、"123456"、'''密码'''、"""jkl"""都是合法的字符串。
字符串是序列类型的数据,字符串的字符有位置(索引)属性,从左到右字符的位置序号为0、1、2、3、4、5、6……从右到左的位置序号为?1、?2、?3、?4、?5、?6……
通常,字符串用一对英文单引号或一对英文双引号定义,英文三单引号或三双引号则用于多行注释。
如果一个字符串里需要有英文单引号,则应用英文双引号定义;如果一个字符串里需要有英文双引号,则应用英文单引号定义。此时的英文单引号和双引号为字符,而不是字符串的标识,例如,"ad'cd"、'ef"gh',英文双引号或单引号组成一对,成为字符串的标识,字符串中的引号则作为字符以有别于字符串标识,不会出现“含义”冲突。
字符串中可以有空格,因为空格也是字符。Python用“有”和“无”来表示“真”和“假”,没有任何字符的字符串为假,有字符的字符串为真。例如,“没有字符,为假;”有空格字符,为真。
Python可以直接处理代码中的字符串,把字符串创建在内存中并保存为字符串类型,也可以用字符串类str()创建字符串。例如,str(123)结果为'123',把数值123转换成了字符串'123'。
如果要在字符串中包含控制字符或有特殊含义的字符,就需要使用转义字符,常用的转义字符如表2-1所示。
表2-1
常用转义字符 | 描述 |
\n | 换行 |
\r | 按Enter键 |
\r\n | 按Enter键 + 换行 |
\t | 制表符(Tab) |
\ | 反斜杠(\) |
\' | 单引号字符串中的单引号 |
\" | 双引号字符串中的双引号 |
例如,print("abc\"de")输出abc"de,中间的英文双引号被\转义成字符,不会再与第一个英文双引号组成字符串标识。
当在字符串前加上r或R,此时字符串为原始字符串,字符串中的“\”便不再是转义字符,而是“\”本身。但字符串的最后一个字符不能是“\”,原始字符串主要用在文件路径中。
代码如下:
>>> print(r'C:\new\T0002\export\MA.csv')
C:\new\T0002\export\MA.csv
>>> print(r'C:\new\T0002\export\')
File "<stdin>", line 1
print(r'C:\new\T0002\export\')
^
SyntaxError: EOL while scanning string literal5 结构数据类型
Python语言有许多的结构数据类型,最常用的有列表、元组、字典,列表和元组是序列类型,它们的元素有位置(索引)属性,而字典是集合类型,其元素没有位置属性。
5.1 列表
列表是以方括号“[ ]”包围的数据集合,不同元素间以英文逗号“,”隔开,列表的元素可以是任意数据类型,也可以是列表,例如,[1]、[1,]、[1, 2, 'a', [1,3], 'bcd']都是合法的列表。
列表的元素有位置属性,从左到右元素的位置序号为0、1、2、3、4、5、6……从右到左的位置序号为?1、?2、?3、?4、?5、?6……
Python可以直接处理代码中的列表,Python会自动创建列表,也可以用列表类list()创建列表。例如,a=list()创建空列表,给list()传递的参数必须是可迭代的,list()会按照参数的元素创建列表。例如,list('adffgghjj')结果是['a', 'd', 'f', 'f', 'g', 'g', 'h', 'j', 'j'],字符串的每个字符被创建为列表的元素。
列表是可变的数据类型,对列表中的元素进行修改时会直接修改原列表,而不是生成一个新列表。
5.2 元组
元组可看成特殊的列表,元组是以小括号“( )”包围的数据集合,不同元素间以英文逗号“,”隔开,元组的元素可以是任意数据类型,也可以是元组,例如,(1,)、(1, 2, 'a', (1,3), 'bcd')都是合法的元组。当元组的元素只有一个时也不能省略英文逗号,否则小括号便不是元组的标识,而是语句运算,例如,(1,)是元组,而(1)则是数值1。
同列表一样,元组的元素有位置属性,元素从左到右的位置序号为0、1、2、3、4、5、6……从右到左的位置序号为?1、?2、?3、?4、?5、?6……
Python可以直接处理代码中的元组,Python也会把以英文逗号隔开的对象创建为元组,代码如下:
>>> 1,2,3,4,5
(1, 2, 3, 4, 5)Python也可以用元组类tuple()创建元组,例如,a=tuple()创建空元组,给tuple()传递的参数必须是可迭代的。tuple()会按照参数的元素创建元组,例如,tuple(['a', 'd', 'f', 'f', 'g'])的结果是('a', 'd', 'f', 'f', 'g'),把列表转换成了元组。
元组是不可变数据类型,对元组中的元素进行修改会创建一个新的元组,而不是直接修改原来的元组。若需要创建一组不可变的数据对象,可用元组创建。
元组主要用在变量定义中,代码如下:
>>> a,b,c=1,2,3
>>> a;b;c
1
2
3在上述代码中,等号右边的“1,2,3”是元组,Python会自动按位置顺序把1赋值给a,把2赋值给b,把3赋值给c。
5.3 字典
字典是以大括号“{ }”包围起来的数据集合,数据以“键:值”对的形式存在,“值”可以是任意类型的数据,但“键”必须是不可变数据。不可变数据又称为可哈希的数据,可哈希数据具有唯一性,能产生唯一映射关系,因此,字典中元素的“键”都是不同的,可以通过“键”来访问字典中的元素。例如,{'a':1,'b':2,3:'c'}和{'a':1,'b':2,c:[1,2]}都是合法的字典。
Python可以直接处理代码中的字典,也可以用字典类dict()创建字典,因为字典的元素是以“键:值”对的形式存在,所以传给dict()的参数应是关键字形式,代码如下:
>>> dict(h=1,i=2,j=3,k=4)
{'h': 1, 'i': 2, 'j': 3, 'k': 4}字典是集合类型,因此字典中的元素没有位置属性,元素是无序的,可以通过元素的键访问元素,不能通过位置访问元素。字典是可变的数据类型,修改元素的值或增删元素会直接改变原字典。
本文摘自《Python期货量化交易》
本书按内容逐级递进的层次进行编写,全书分两篇,共21章。
第一篇介绍Python基础。主要介绍Python编程的基础知识,共13章。
第1章主要介绍Python的语法规则。因为写一行代码就是写一条语句,所以先从语法规则介绍。
第2章介绍Python常用的数据类型。数据是要处理的对象,也是语句的组成部分。
第3章介绍函数。函数是代码重用的方式,我们编写的语句如果需要反复执行,就可以放进函数中,可把函数看作数据和各种语句的结合体。
第4章介绍常用数据类型的运算。数据是一个对象,对象具有方法(函数),我们可以用Python内置函数处理数据,也可以用数据自带的方法处理数据。
第5章介绍循环语句。Python语言的for循环和其他编程语言不同,Python的for循环是迭代执行可迭代对象,可迭代对象是Python语言的重要概念,特殊的可迭代对象生成器是异步协程的基础。
第6章介绍类的概念。类是面向对象编程的核心概念,类是数据的属性与方法的封装,类也是代码重用的方式,它便于我们处理同类的问题。类可以被看作各种语句与函数的结合体。
第7章介绍装饰器。装饰器也是代码重用的一种方式,装饰器可被看作“函数的继承”。
第8章介绍错误和异常的处理。学完前面几章的内容我们就可以写各种程序了,但程序在执行时可能遇到错误和异常,本章介绍了异常捕捉及错误处理的方法。
第9章介绍模块和包。模块是Python文件,我们写好的代码需要保存成Python文件,模块所在的文件夹称为包。
第10章介绍日期时间的处理。TqSdk业务数据的时间经常需要转换,我们也可能需要设置时间条件来选择执行量化策略。
第11~13章介绍实现异步任务的方法,分别是多进程、多线程和异步协程,这3章尽可能详尽地列出了量化中可能会用到的方法,TqSdk的代码比较依赖异步协程,读者应当掌握这部分内容。
第二篇介绍期货量化交易。主要介绍如何用TqSdk编写期货交易策略。
第14章介绍TqSdk的基本信息。
第15章介绍pandas模块。因为K线和tick数据是pandas的数据格式,所以有必要介绍pandas在数据处理中的使用。
第16章介绍TqSdk各接口如何使用,诸如账户登录、下单、生成图形化界面等。
第17章解读TqSdk的部分函数,深入了解这些函数才可以进行高级开发。
第18章介绍一些量化策略的框架,这些框架可用于多种策略场景中。
第19章和第20章介绍图形化编程。可以用PyQt5开发GUI程序,用
PyQtgraph绘制实时K线和技术指标。
第21章介绍时间序列的相关性检验方法,并作为量化分析的一个简单示例。
相关推荐
- win7忘记开机密码u盘启动(windows7忘记开机密码用u盘)
-
win7电脑忘记开机密码,之后可以通过PE的方式来进行启动。首先需要找一块U盘,然后再网上下载一个PE系统。把这块U盘做成PE系统启动盘,然后把电脑设置成U盘启动,这样就直接可以进入到系统,进去之后就...
- 开不了机的手机怎么处理(开不了机的手机怎么处理掉)
-
方法/步骤手机突然开不了机,先长按开机键,因为有的时候,现在的知道手机,突然关机了,系统一下子在死机状态,等你长了后,手机就会有一下振动的声音,你再放开手,再重新按开机键,就能开机了。如果长按还是开不...
- cdlinux手机版(cdlinux最新版0.9.8)
-
Kali更好。1.首先,Kali是专门为渗透测试和网络安全而设计的操作系统,它拥有广泛的渗透测试工具和资源,使得用户在这个领域有更多的选择和更强大的功能。2.其次,Kali具有更长的发展历史和更大...
- 电脑cpu处理器排名天梯图(电脑cpu处理器天梯榜)
-
1.荣耀王者段位:A15处理器(5核GPU版)、A15处理器(4核GPU版)不论是从跑分上还是具体体验上,苹果最新的A15处理器都是佼佼者,CPU和GPU大幅领先于安卓现役旗舰SOC2.王者段位:骁龙...
- 电脑怎么重装系统不删除文件
-
一般应用程序的目录你删了只影响程序本身,比如你把某雷的download目录删掉,那只是曾经下载在这个目录下的文件被删了,对电脑应用毫无影响,如果你删除程序的安装目录,那程序就跪了…如果你删除操作系统的...
- 电脑用久了反应慢怎么处理(电脑用久了反应迟钝)
-
方法一:检查电脑配置首先,我们要检查一下自己的电脑配置是否符合安装Windows10系统的要求。如果你的电脑配置本身比较低,比如CPU、内存、硬盘等都不够强劲,那么安装Windows10系统可能会导致...
- 怎么加入已有的局域网(怎么加入已有的局域网连接)
-
你要先知道你公司局域网自己建立的名字,可以从其他的机子上看,比如mshome,workgroup,或者别的什么的。然后,你们有集线器或者路由器吧,插好网线,一边接集线器,一边接电脑网卡。把网卡驱动。...
- 如何在微软官网下载win10系统
-
从微软官网下载win10具体有以下7步:1、输入微软的官网,进入。2、登录自己的账号。3、一直往下拉,可以看到“获取win10”。4、选择要下载的版本。5、选择下载到你自己制定的文件夹,点击...
- 路由器地址怎么改(路由器地址怎么改成别的城市)
-
1、将本机电脑IP地址设置为自动获取。2、打开IE浏览器,在地址栏中输入192.168.1.1或192.168.0.1,在弹出的用户名和密码框中输入默认值,即admin/admin,如果修改过路由器使...
-
- 台式电脑怎么换显卡(台式电脑怎么换显卡视频)
-
1.准备好螺丝刀,拆箱之前我们的手先在周围找金属物品触摸下,释放静电,避免静电击坏电子元件。用螺丝刀拆下螺丝,取下盖子。2.用螺丝刀拆下锁住扩展卡的螺丝和挡片。3.双手各握住一方,用力均衡,然后慢慢地推出电脑显卡。4.之后即可成功取出电脑主...
-
2025-12-26 17:51 off999
- wifi连接上却不能访问互联网
-
原因一:路由器问题,可能路由器过热或者损坏;重启一下路由器试试,或者将路由器恢复一下出厂设置,然后重新拨号上网,并根据设置向导重新设置WiFi,或者更换新路由器再进行拨号连接上网。 原因二:可能宽带...
-
- 显卡驱动在哪里打开(显卡驱动设置在哪里)
-
1.以华硕x16、windows11、amd22.8.1为例。先进入电脑桌面,然后点击电脑开始菜单。2.找到“AMDRadeonsettings”点击展开。3.可以看到“AMDRadeonsettings”的主程序,点击打开。4.这...
-
2025-12-26 16:51 off999
- bios启动项里找不到固态硬盘
-
这个是BIOS设置问题,操作步骤不正确。需要在【启动】菜单中【硬盘BBS属性】中设置。下面提供一下完整的操作步骤,请参考:1、将装有固态硬盘的电脑重启,同时按键盘F2键。2、进入BIOS界面,在标题栏...
-
- 用手机解除路由器限速(用手机解除路由器限速教程)
-
1、设置wifi限速等功能时,需要打开路由器管理页面,所以先打开一个浏览器,在里面输入192.168.1.1,然后点击确定,再把路由器的密码输进去点击确定,原始账密在路由器的背面会有。2、打开wifi路由器的管理页面后,找到设备管理项点击它...
-
2025-12-26 15:51 off999
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
