新書推薦:
《
经纬度丛书·州县之民:治乱之间的小民命运
》
售價:HK$
96.8
《
女性史:古代卷(真正意义上的女性大历史)
》
售價:HK$
123.2
《
你当我好骗吗?
》
售價:HK$
120.9
《
跨代伴侣治疗
》
售價:HK$
96.8
《
精华类化妆品配方与制备手册
》
售價:HK$
217.8
《
经纬度丛书:出祁山:诸葛亮北伐得与失
》
售價:HK$
96.8
《
心理治疗中的真意:心理治疗师的心灵之旅
》
售價:HK$
96.8
《
心理咨询与治疗技术经典入门(第3版)
》
售價:HK$
142.9
|
編輯推薦: |
本书共分为四个部分。*部分是Python语言基础,主要介绍Python的基础编程、数据结构、结构化编程、函数以及模块和包等内容,掌握这一部分可以算是Python基本入门。第二部分是Python编程进阶,包括面向对象的编程、面向数据的分析与可视化以及数据持久化等内容,掌握了这一部分可以进行Python的专业编程实践。第三部分是使用PyQt进行界面开发。PyQt是一种常用而强大的图形用户界面GUI设计工具,使用它可以设计出美观、易用的用户界面。掌握这一部分,可以在大型项目团队中完成比较核心的工作。第四部分是vn.py量化交易平台,为读者提供高水平实践机会,在巩固专业程序员水平的同时,也在一个Python的重要应用领域中进行深入的探索。
|
內容簡介: |
本书共分为四个部分。*部分是Python语言基础,主要介绍Python的基础编程、数据结构、结构化编程、函数以及模块和包等内容,掌握这一部分可以算是Python基本入门。第二部分是Python编程进阶,包括面向对象的编程、面向数据的分析与可视化以及数据持久化等内容,掌握了这一部分可以进行Python的专业编程实践。第三部分是使用PyQt进行界面开发。PyQt是一种常用而强大的图形用户界面GUI设计工具,使用它可以设计出美观、易用的用户界面。掌握这一部分,可以在大型项目团队中完成比较核心的工作。第四部分是vn.py量化交易平台,为读者提供高水平实践机会,在巩固专业程序员水平的同时,也在一个Python的重要应用领域中进行深入的探索。
|
關於作者: |
张少娴,1993年毕业于原南京邮电学院计算机系计算机通信专业,获工学学士学位。2003年于南京邮电大学获计算机应用技术专业硕士学位。参加了国家自然科学基金面上项目、973项目、江苏省教育厅高校自然科学研究计划课题共5项,已在国内外学术期刊和会议上以第一作者和通讯作者发表论文10余篇,出版《Web应用开发技术与案例教程》、《数据库原理》等教材。
|
目錄:
|
第一部分Python语言基础
第1章准备工作31.1为何选择Python3
1.1.1非专业软件开发人员3
1.1.2专业软件开发人员3
1.2下载安装4
1.3测试安装是否成功6
1.3.1使用Python解释器6
1.3.2使用IDLE7
第2章初识Python编程8
2.1Python简单编程8
2.1.1简单计算9
2.1.2使用变量10
2.1.3print函数11
2.2特殊数据类型12
2.2.1其他数值类型12
2.2.2布尔bool类型14
2.2.3空值None14
2.3字符串15
2.3.1字符串定义15
2.3.2字符串的一般操作16
2.3.3字符串的索引和切片17
2.3.4字符串的修改19
2.3.5键盘输入20
2.3.6将值转换为字符串21
2.3.7字符串的方法21
2.3.8格式化输出24
2.4习题26
第3章数据结构28
3.1列表28
3.1.1列表的索引和切片28
3.1.2列表的修改29
3.1.3列表排序32
3.1.4堆栈和队列33
3.2元组34
3.3字典36
3.4集合38
3.5Python集成开发环境40
3.5.1集成开发环境介绍40
3.5.2PyCharm的安装与使用41
3.6习题44
第4章结构化编程47
4.1条件表达式47
4.1.1比较运算符48
4.1.2比较序列和其他类型50
4.1.3逻辑运算符50
4.2if语句52
4.3while语句56
4.4for语句57
4.4.1循环处理序列中的元素57
4.4.2range函数58
4.4.3序列上的循环技巧60
4.5循环控制62
4.5.1循环中的else子句62
4.5.2break语句62
4.5.3continue语句63
4.6习题64
第5章函数68
5.1定义函数68
5.2返回值69
5.2.1return语句70
5.2.2多分支return70
5.2.3返回值类型70
5.3参数的传递方式72
5.4参数类型73
5.4.1位置参数73
5.4.2默认值参数74
5.4.3关键字参数75
5.4.4元组参数的封装与拆封76
5.4.5字典参数的封装与拆封78
5.5变量的作用域79
5.5.1局部变量79
5.5.2全局变量80
5.5.3nonlocal82
5.6与函数有关的其他内容83
5.6.1pass语句83
5.6.2文档字符串83
5.6.3函数注解84
5.6.4编码风格85
5.7错误和异常85
5.7.1语法错误86
5.7.2异常86
5.7.3异常处理87
5.7.4定义清理行为89
5.8习题91
第6章模块和包92
6.1模块92
6.1.1导入模块93
6.1.2执行模块94
6.1.3模块的搜索路径95
6.1.4编译的Python文件96
6.2包96
6.2.1包的概念96
6.2.2包的一般导入97
6.2.3包的导入98
6.2.4包内引用99
6.3标准库99
6.3.1系统模块100
6.3.2操作系统功能100
6.3.3数学运算101
6.3.4日期和时间102
6.3.5多线程105
6.4第三方包109
6.5使用Anaconda112
6.5.1Python基础环境的问题112
6.5.2Anaconda的下载安装112
6.5.3管理虚拟环境114
6.6习题116
第二部分Python编程进阶
第7章面向对象编程1197.1创建和使用类119
7.1.1类的创建120
7.1.2创建并使用实例121
7.1.3属性的默认值122
7.2私有属性和私有方法123
7.3类属性和类方法124
7.3.1类属性124
7.3.2析构函数125
7.3.3类方法127
7.3.4静态方法127
7.4属性再研究129
7.4.1属性的增加与删除129
7.4.2@property装饰器130
7.5继承131
7.5.1简单的继承131
7.5.2重写父类的方法132
7.5.3重写_ _init_ _方法132
7.5.4为子类增加新的属性和方法133
7.5.5多重继承134
7.5.6抽象类和抽象方法135
7.6导入类136
7.6.1导入单个类137
7.6.2在模块中存储多个类137
7.6.3组织项目代码138
7.7习题138
第8章数据分析与可视化140
8.1数据分析概述140
8.2NumPy141
8.2.1创建NumPy数组142
8.2.2NumPy特殊数组142
8.2.3NumPy序列数组143
8.2.4NumPy数组索引144
8.2.5NumPy数组运算144
8.2.6NumPy数组复制145
8.2.7NumPy矩阵145
8.3Pandas146
8.3.1一维数组Series146
8.3.2二维数组DataFrame147
8.4数据可视化概述157
8.5matplotlib158
8.5.1绘制简单的折线图158
8.5.2修改标签文字和线条粗细159
8.5.3校正图表160
8.6习题162
第9章数据持久化164
9.1一般文件操作164
9.1.1文件的概念165
9.1.2文件的打开与关闭165
9.1.3从文件读167
9.1.4写文件169
9.1.5文件指针169
9.1.6预定义清理行为171
9.2CSV文件171
9.2.1DataFrame与CSV171
9.2.2读CSV文件173
9.2.3写CSV文件173
9.3JSON文件174
9.4SQL数据库操作177
9.4.1SQLite介绍177
9.4.2操作SQLite数据库178
9.5peewee181
9.6习题186
第三部分使用PyQt进行界面开发
第10章PyQt基础19110.1PyQt介绍191
10.1.1PyQt5191
10.1.2其他Python图形界面包192
10.2安装PyQt5193
第11章PyQt5界面编程194
11.1PyQt5基本功能194
11.1.1最简单的PyQt5程序194
11.1.2PyQt5的坐标体系195
11.1.3关闭窗口197
11.1.4自己解决问题199
11.2布局管理200
11.2.1绝对定位200
11.2.2盒布局BoxLayout201
11.2.3网格布局 QGridLayout203
11.3菜单栏、工具栏和状态栏204
11.3.1状态栏204
11.3.2菜单栏205
11.3.3子菜单207
11.3.4勾选菜单208
11.3.5右键菜单209
11.3.6工具栏210
11.4事件处理211
11.4.1信号与槽介绍211
11.4.2信号与槽的简单示例212
11.4.3事件发送者213
11.4.4内置信号与内置槽213
11.4.5自定义信号216
11.4.6事件对象218
11.5标准对话框219
11.5.1输入对话框220
11.5.2文件对话框221
11.5.3颜色对话框224
11.5.4字体对话框226
11.6习题228
第12章PyQt5控件229
12.1按钮QPushButton230
12.2复选框QCheckBox231
12.3列表框QListWidget233
12.4行编辑QLineEdit235
12.5下拉式列表框 QComboBox236
12.6日历控件 QCalendarWidget238
12.7定时器与进度条QProgressBar240
12.7.1QTimer和QBasicTimer定时器240
12.7.2进度条QProgressBar241
12.8树状列表QTreeWidget242
12.9表格QTableWidget246
12.10分割器QSplitter248
12.11习题250
第13章Qt Designer的使用251
13.1本章教学目标252
13.2Qt Designer基础254
13.2.1安装PyQt5tools254
13.2.2配置PyCharm开发环境254
13.2.3Qt Designer初步接触256
13.2.4Qt Designer的编程机制258
13.3控件及属性261
13.3.1Qt Designer的界面布局261
13.3.2修改控件的属性262
13.4Qt Designer中的信号与槽263
13.4.1直接连接信号与槽263
13.4.2手工编程法实现信号与槽的连接265
13.5菜单266
13.6工作区设计267
13.6.1创建主Tab Widget267
13.6.2设计股票列表界面268
13.7打开子窗口269
13.8习题271
第14章PyQt5绘图272
14.1图片显示272
14.2基本绘图类274
14.3图形视图架构275
14.4PyQtGraph基础281
14.4.1PyQtGraph介绍282
14.4.2PyQtGraph的安装与测试282
14.5PyQtGraph折线图284
14.6PyQtGraph自定义绘图288
14.6.1K线图绘制类288
14.6.2K线图表类290
14.6.3嵌入到普吸金294
14.6.4增加十字线显示295
14.7习题297
第四部分vn.py量化交易平台
第15章vn.py的使用30115.1量化交易基础301
15.1.1量化交易概念301
15.1.2量化交易平台分类302
15.1.3宽客304
15.2vn.py的安装与运行304
15.2.1源码下载与安装304
15.2.2vn.py的启动305
15.3VN Trader306
15.4CTA回测309
15.5CTA策略311
第16章VN Trader分析314
16.1程序主函数314
16.2主引擎315
16.2.1vn.py体系结构316
16.2.2初始化函数316
16.2.3初始化功能引擎318
16.2.4增加功能引擎318
16.2.5增加底层接口318
16.2.6增加上层应用319
16.3主界面319
16.3.1创建应用程序320
16.3.2主窗口的初始化320
16.4窗口组件321
16.4.1单元格类321
16.4.2监控组件类323
16.4.3初始化悬浮窗口325
16.5菜单326
16.5.1底层接口加入菜单327
16.5.2上层应用加入菜单328
16.6习题331
第17章数据库操作332
17.1vn.py支持的数据库332
17.2数据库管理器333
17.2.1数据库管理器基类334
17.2.2SQL数据库管理器334
17.2.3peewee模板类335
17.2.4数据库管理器的初始化336
17.3数据管理338
17.3.1数据管理应用类339
17.3.2数据管理窗体类339
17.3.3下载数据340
17.3.4导入数据340
17.4使用数据341
17.5习题344
第18章CTA回测345
18.1事件引擎345
18.1.1事件引擎的作用345
18.1.2事件引擎类346
18.2回测线程350
18.2.1类结构350
18.2.2执行流程351
18.2.3存在问题352
18.3回测执行352
18.3.1开始回测按钮的槽函数352
18.3.2回测操作354
18.3.3回测结束事件处理355
18.4习题357
参考文献358
|
內容試閱:
|
作为vn.py的作者,非常高兴能够看到本书的出版。最近十年,量化研究、大数据分析、机器学习等前沿技术越来越多地在金融和投资行业中得到实践应用,而要使用这类技术不可避免地都要先具备编程能力,就像学习代数要先掌握加减乘除。
我本人是量化交易员出身,早年刚开始工作的时候主要使用一些商业量化软件平台。尽管能基本满足工作需求,但也时常苦恼于某个想要研究的复杂策略无法回测,或者某个想要使用的执行算法无法实现。好在后来接触到了Python这一功能强大又易学易用的编程语言,在工作中也慢慢摸索掌握了交易API对接、UI界面开发、事件驱动算法等和量化交易相关的Python应用技术。后来秉承Python社区鼓励分享,回馈社区的开源精神,逐渐把自己积累的项目代码开源分享出来主要在Github上,也就是现在的vn.py项目。
尽管量化交易在中国已经有了快10年的历史,但目前整个金融市场对量化交易方面的需求依旧在飞速增长: 期权期货的做市商业务、银行间市场开放API接口、股票引入单次T 0制度等,都是目前全新的量化交易技术应用领域。
对于想要开始入门尝试学习Python量化交易的读者来说,学习本书是一个非常好的起点。从Python的语言基础开始,一步步掌握量化相关模块的使用方法,再到PyQt的图形界面开发,最后详细讲解vn.py的项目架构和使用方法。
最后,对于所有围绕编程语言的学习,我有一个建议,就是不要偷懒,把所有代码都手敲一遍不要复制、粘贴,自己运行一遍,能够帮助您更快地掌握编程语言的知识体系。
陈晓优vn.py作者,网名: 用Python的交易员2020年12月Python是一门简单易学且功能强大的编程语言。它拥有高效的数据结构,能够用简单而高效的方式进行面向对象编程。Python优雅的语法和动态类型,再结合它的解释性,使其在大多数平台的许多领域成为编写脚本或开发应用程序的理想语言。使用Python很容易实现常用的金融算法和数学计算,使其在大数据的挖掘和处理、量化金融以及财务数据分析等领域有着得天独厚的优势。
Python广受欢迎的一个重要原因是它的易学性,但再易学的编程语言也要方法适当才能达到事半功倍的效果。学习曲线是一条表示在一定时间内获得技能或知识的曲线,又称练习曲线practice curves,反映了学习进程中努力与学习效果的关系。按照不同的学习方法,会得到不同的学习曲线。学习曲线可能很复杂,可能多种多样,抽象后最有代表性的有3种,如图1中的曲线(a)、(b)和(c)所示。
图1学习曲线
学习曲线(a)是所谓的一步一个脚印,很多人认为学习就应该是这样,其实不然。很多情况下,学习曲线是偏(b)或偏(c)的形式。(b)表示初期见效慢,而一旦过了瓶颈期,就会厚积薄发,努力终究会有回报。(c)表示初期见效快,快速掌握编程技巧,并尽快用它解决实际问题,后期的学习可以边实践边进行。(b)和(c)只是方法不同,可以根据学习目标选择。按照本书的内容学习,可以达到曲线(c)的学习效果。顺便说一下,这3个图都是用Python的matplotlib包绘制的。
如果您是计算机专业人士,已经有多种编程语言的学习经历,您会发现本书非常符合学习习惯。如果您还是计算机专业的在校学生,本书在帮助您快速打下Python编程基础之后,用一个大型项目,让您直接升级为编程高手,在有限的课时中达到最大的学习效果。
如果您是非专业软件开发人员,学习编程是为了辅助本领域的研究工作,不需要达到顶级专业软件开发人员的水平。本书可以帮助您用最短的时间,取得最接近于顶级的效果。您不再需要学习软件开发的专业课程,甚至连Python本身都不需要全部学习,只需要学习与自己任务相关的部分,就可以完成绝大多数编程任务,如曲线(c)所示,期望用专业软件开发人员15甚至110的时间,达到60%到80%的效果。如果您是经济领域的专业人士,本书涉及的数据分析方面的知识,已经足够您应付工作中主要的数据分析工作,还能让您的程序带有漂亮的界面。如果您是金融领域的专业人士,或者您只是量化交易爱好者,使用本书,在学习Python编程的同时,还能接触到先进的量化交易技术。如果您还是经济或金融专业的学生,掌握本书内容对您今后就业会有极大帮助。
足球队的教练通常都有球员经历而不是仅仅当过足球评论员。本书作者在多种平台,使用多种编程语言,有长期从事编程工作的经验,愿意将此书作为团队知识的凝练与升华。
本书选用vn.py作为教学实践平台。vn.py是著名国产开源软件,在金融量化投资领域占据重要地位,大量从事金融和经济领域专业应用开发的读者,对此系统会感到亲切并有直接帮助。按照vn.py官网的介绍: vn.py是一套基于Python的开源量化交易系统开发框架,全功能量化交易平台,整合了多种交易接口,并针对具体策略算法和功能开发提供了简洁易用的API,用于快速构建交易员所需的量化交易应用。vn.py的编程水平很高,软件规模也是专业级的。作者对其进行深入分析,并有多方面优化的经验。本书不希望用一个专业程序员看起来很不像样的示例系统作为大型项目,vn.py符合专业化、高水平的要求。
本书内容一脉相承。第一部分以最浅显的方法介绍Python语言基础,即使是没有任何编程基础的读者都可以轻松掌握,本书完全可以作为Python编程的入门书籍使用。但本书的目的决不仅仅是入门,从第二部分开始是Python编程进阶,带领读者循序渐进地进入Python的专业编程实践。第三部分介绍PyQt界面开发,第四部分介绍vn.py量化交易平台,第四部分与前三部分是有机结合而不是割裂的。例如Python的数据分析和可视化工具有很多种,本书选择的NumPy、Pandas、matplotlib和PyQtGraph本身就是其中最常用的,也都在vn.py中确实得到了应用。虽然本书第四部分只是vn.py代码分析的基础,但vn.py编程涉及的所有技术,在前三部分都有介绍。从另一方面来说,有些读者,特别是编程的初学者,在学习新知识时,往往会困惑所学的知识是否有用。通过第四部分的验证,读者可以看到,本书的每个知识点,在实际编程中都是非常有用的。从编程初学者到专业程序员是一个成长的过程,第四部分的另一个作用是总结教学代码与实际系统的差别,培养真正程序员的编程习惯,而不是让读者自行摸索,帮助读者顺利完成这个成长与蜕变。
本书包含了大量真正的编程技巧,有vn.py这样的大型专业量化交易系统做支撑,Python量化交易的登堂入室,有此一本书足矣。但一本书毕竟篇幅有限,只能选择最通用的技术。为了兑现有此一本书足矣的承诺,把一些很通用、很重要的内容放到附配资源中,让读者花一本比较薄的书的钱,买到一本非常厚的书。本书的附配资源包含以下内容:
●附加的教学内容,会随着本书的使用以及技术的发展不断扩充和更新。
●本书的所有源代码。
●教学课件和部分习题的参考答案。
●vn.py代码更全面、深入的分析,vn.py行情接口的扩充,vn.py行情显示的扩充等,内容超过300页。
●版本与本书内容相匹配,包含了部分注释的vn.py源代码。
全部附配资源可以与清华大学出版社联系获取,仅与学习有关的资源也可以加入QQ群881645236下载。
在编写过程中,南京邮电大学的李玲娟教授、陈志教授仔细阅读了本书,提出了不少建设性的意见与建议;南京审计大学金审学院的刘力军等老师对本书的编写提出过很好的建议;感谢南京毕鹞信息科技有限公司的高屹老师跟我们一起深入分析vn.py量化交易平台的代码;感谢南京审计大学金审学院和南京邮电大学计算机学院对本书的大力支持!
张少娴2020年12月于南京
|
|