零基础学Pine Script——基于TradingView平台的量化分析(全彩)
  • 推荐0
  • 收藏0
  • 浏览172

零基础学Pine Script——基于TradingView平台的量化分析(全彩)

阎英姿 (作者)  黄爱萍 (责任编辑)

  • 书  号:9787121465383
  • 出版日期:2023-11-01
  • 页  数:
  • 开  本:
  • 出版状态:上市销售
  • 维护人:博文小编
这是第一本介绍Pine Script语言的中文图书。Pine Script是TradingView平台上特有的一种轻量级脚本语言,它简洁高效、易学易用,可用于编写/定制指标和策略,并进行策略的回测。
按照内容划分,本书可以归类于金融投资领域的量化分析图书范畴。全书内容分为四个部分,包括基础篇、函数篇、进阶篇和应用篇。本书从初学者角度出发,按照由浅入深、从基础到应用的顺序递进,先介绍Pine Script语言基础,再着重讲解该语言的特色、重点和使用技巧,最后给出精选的20多款颇具应用价值的实例。书中所有知识点都结合具体实例进行讲述,所涉及的脚本代码均在关键之处给出了详细的注释,使读者可以轻松领会Pine Script语言的精髓,并快速掌握应用技能。
解锁量化交易的力量 用代码畅享财富增长
阎英姿,985院校计算机专业硕士毕业,曾先后供职于中科院计算所、中国银行软件中心和全球前五百强外企的金融服务部门,拥有多年技术与咨询等行业经验。现担任一家FinTech公司的负责人,可通过微信公众号“鹦鹉嘉言”联络作者。
写作背景
近20年来,随着中国经济突飞猛进、蓬勃发展,中国居民储蓄总额已跃居世界首位。与此同时,约有2亿名股民和7亿名基民积极参与到金融市场中。普通投资者持续高涨的投资理财热情与缺乏专业级的图表软件和市场行情分析工具(尤其是免费的)形成矛盾。
这类情况与10多年前欧美地区的情况相似。当时,知名的财经资讯和金融数据服务提供商路透社和彭博社的服务对象几乎只限于金融机构和大客户,不菲的收费和专业性的高门槛将普通投资者隔绝在外。普通投资者和业余交易者渴望拥有一个免费的网络空间,能够与金融机构和专业人士平等地获取市场资讯、交流行情分析和分享交易观点。
TradingView平台应运而生、应势而起。TradingView平台于2011年在美国成立,现今它已成为全球最活跃的金融市场研究和业界交流的平台,也是全球最大的投资人与交易员汇聚的社区。每月有超过2000万名活跃用户汇聚在这里,用户可以自由浏览金融资讯和行情,共同分析市场动态、分享投资观点。该平台基于云计算技术搭建,可提供实时的金融市场行情报价、免费的金融图表、技术分析、交易策略和专家交易观点分享等服务。TradingView连接全球50多家交易所,支持股票、债券、外汇、加密货币和期货等金融产品,并且目前已经支持20多种自然语言。与此同时,TradingView平台上的Pine Script语言可供用户免费使用,用户可以利用该语言自主设计指标、策略并进行回测。从此,量化分析工具不再是金融机构和专业人士专属,普通投资者和业余交易者也能免费使用,并轻松入门、快速掌握。“工欲善其事,必先利其器”,Pine Script就是助力“金融淘金者”的量化利器。自此,量化工具在手,提升胜算无忧。
读者对象
本书适合零基础学习Pine Script语言的投资者和金融技术分析的爱好者阅读,还可供有编程基础的交易员和开发人员等相关从业者查阅。

内容组织方式
本书内容划分为四个部分,包括基础篇、函数篇、进阶篇和应用篇,共有31章内容。全书内容的组织按照由浅入深、从基础到应用的顺序递进。
 第一部分基础篇:这一部分沿袭经典的计算机语言图书的逻辑顺序介绍Pine Script语言基础。基础篇共有9章(第1章~第9章)的内容,包括初识TradingView与Pine Script、快速上手Pine Script、Pine Script语法基础、数据类型、变量声明与变量再赋值、条件结构和循环结构等。其中第5章数据类型需要重点掌握,尤其是Pine Script语言的特色部分。
 第二部分函数篇:Pine Script语言的特色之一是它提供了大量的功能完善的函数。熟练掌握Pine Script主要函数的应用,是从零基础到精通该语言的必经之路。函数篇共有8章(第10章~第17章)的内容。在这一部分,详细解析了Pine Script中的主要函数的参数与功能,并进行了举例说明。其中,指标函数indicator和策略函数strategy是Pine Script的两大核心函数,同时它们也是主调函数,需要重点掌握。输出函数(如plot系列函数)也是编写指标时必不可少的,另外还有一些重要函数,比如输入函数input系列、库函数library、其他内置函数和用户自定义函数,它们对灵活应用Pine Script编程也很有帮助。
 第三部分进阶篇:这部分内容适合读者在初步掌握Pine Script语言后的进阶或提高阶段使用。进阶篇共有6章(第18章~第23章)的内容。其中,图表的配色设计、提醒功能都是Pine Script语言的特色部分,突显了该语言的灵活友好和便捷高效。此外,这一部分还包括数组、调试、发布脚本、小技巧集锦与实例分享等内容,引导读者走上熟练应用和进阶之路。
 第四部分应用篇:经过对前面3篇的学习,我们迎来了践行“知行合一”的重要时刻。应用篇共有8章(第24章~第31章)的内容,这部分将指标、策略和技术分析方法分为8类,包括趋势指标/策略、反转指标、动量指标、成交量指标和波动率指标,此外还有背离技术分析、K线形态与分形技术分析等更高阶的技术分析工具,旨在帮助读者更深入地洞察市场走势,抓住潜在的交易机会。
本书的内容组织不仅旨在帮助读者掌握Pine Script语言和熟悉TradingView平台,更致力于协助读者构建量化分析的思维方式和实践能力。通过理论与实际案例的结合,逐步培养进行量化研究和制定交易策略的能力,从而在金融交易中获益。扫描本书封底二维码,可以获取本书的源码资料。

建议
在金融投资领域中有3种常用的分析方法,即技术分析法、基本面分析法和市场心理分析法,它们用于预测和分析金融市场的走势和投资机会。这3种分析方法的关系不是割裂的,而是可以相得益彰和相辅相成的。我们强烈建议将这3种分析方法相结合以辅助交易决策。
第一,对于技术分析,强烈建议使用多个指标相互验证。在选择指标时应考虑它们之间的独立性和互补性,以提高验证结果的可靠性。
第二,结合技术面分析和基本面分析。基本面分析可以帮助投资者选择具有长期价值和成长潜力的投资标的,而技术面分析则可以帮助投资者确定最佳的买卖时机和控制风险,将技术面分析与基本面分析结合可以使投资决策更加全面和准确。
第三,结合市场情绪和心理分析。市场情绪和分理分析可以提供对市场参与者情绪和信心的洞察,帮助投资者更好地了解市场情况和预测市场走势。
采用上述的综合分析方法可以帮助投资者做出更明智的交易决策,提高胜率和利润率,并最大限度地降低风险。
致谢
本书得以顺利出版,要衷心感谢诸多亲朋、师友、电子工业出版社和各方合作伙伴们。
感谢我的父亲多年来对我无条件的支持,感谢家人的爱与陪伴。尤其要诚挚感谢电子工业出版社的黄爱萍老师为本书的出版付出的卓越而辛勤的工作。由衷感谢期权类丛书作者王勇老师和小马老师的交易指导。还要感谢我的朋友赵熠先生的信息支援,以及我的同事和小伙伴们的协力合作。
另外,要特别感谢TradingView公司及其技术支持团队和合作方。在本书的撰写过程中,我参考了很多TradingView公司的文档,以及TradingView平台上的用户@PineCoders的脚本范例;此外,还参考了tradingcode.net网站的一些源码和示例。在此,对TradingView公司、tradingcode.net网站和@PineCoders账户拥有者深表谢意。
“历尽天华成此景,人间万事出艰辛。”本书从构思到截稿历时两年,直至出版前又经历数月的修订与打磨。希望我和电子工业出版社的老师们共同努力下的这部倾情之作可以给读者朋友们带来收获和惊喜——享受丝滑编程、赏鉴精美图表、轻松高效交易和乐享投资收益。

阎英姿

目录

一、基础篇
第1章 初识TradingView与Pine Script 2
1.1 初识TradingView 2
1.1.1 TradingView简介 2
1.1.2 如何访问TradingView 2
1.1.3 TradingView图表界面的布局与功能 4
1.2 初识Pine Script 7
1.2.1 Pine Script简介 7
1.2.2 Pine Script界面概览与功能 8
第2章 快速上手Pine Script 9
2.1 第一个程序 9
2.1.1 第一个indicator程序 9
2.1.2 第一个strategy程序 10
2.2 Pine Script的脚本结构 12
2.2.1 脚本结构简介 12
2.2.2 由Pine Editor自动生成的基础脚本框架 12
2.2.3 脚本头部 14
2.2.4 主调函数indicator/strategy/library的声明语句 15
2.2.5 脚本主体 15
2.3 执行模式 16
2.3.1 执行模式简介 16
2.3.2 由时间触发的脚本执行模式 16
2.3.3 由事件触发的脚本执行模式 17
2.3.4 函数indicator与函数strategy在脚本执行模式中的差异 17
2.4 小结 17
第3章 Pine Script语法基础之书写格式 18
3.1 注释规则 18
3.2 代码缩进 18
3.3 多行续写 20
3.4 一行写多条语句 21
3.5 小结 22
第4章 标识符、保留字、变量与常量 23
4.1 标识符的命名规则 23
4.2 保留字 24
4.3 变量 24
4.3.1 变量的定义 24
4.3.2 内置变量 25
4.4 常量 25
4.4.1 常量的定义 25
4.4.2 内置常量 25
4.5 小结 26
第5章 数据类型 28
5.1 基础数据类型 28
5.1.1 整型(int) 28
5.1.2 浮点型(float) 28
5.1.3 布尔型(bool) 28
5.1.4 字符串型(string) 29
5.1.5 颜色类型(color) 29
5.2 特殊数据类型 31
5.2.1 line、label、box和table数据类型 31
5.2.2 plot和hline数据类型 31
5.3 数据形式 32
5.3.1 常数(literal) 32
5.3.2 常量(const) 32
5.3.3 输入型(input) 33
5.3.4 商品代码(symbol) 33
5.3.5 时间序列(series) 33
5.4 数据结构 35
5.4.1 特殊的内置变量na 35
5.4.2 特殊类型void 37
5.4.3 多元组(Tuples) 37
5.4.4 数组(Array) 38
5.4.5 用户自定义类型(User-Defined Types) 39
5.4.6 矩阵(Matrix) 40
5.5 数据类型的转换 41
5.5.1 数据类型的自动转换 41
5.5.2 使用函数进行数据类型转换 42
5.6 小结 43
第6章 运算符、表达式和语句 44
6.1 运算符/操作符 44
6.1.1 数学运算符 44
6.1.2 比较运算符 45
6.1.3 逻辑运算符 45
6.1.4 条件运算符 46
6.1.5 历史行情数据引用操作符 46
6.1.6 赋值运算符 47
6.1.7 再赋值运算符 48
6.1.8 运算符的优先级 48
6.2 表达式 49
6.3 语句 50
6.4 小结 50
第7章 变量声明与变量再赋值 51
7.1 变量声明 51
7.1.1 变量声明语句的格式 51
7.1.2 显式类型声明与隐式类型声明 52
7.1.3 使用特殊值na进行变量初始化 53
7.2 变量再赋值 53
7.3 变量声明模式 55
7.3.1 未指定变量声明模式 55
7.3.2 var模式 55
7.3.3 varip模式 57
7.4 小结 58
第8章 条件结构 60
8.1 if语句 60
8.1.1 if语句:局部程序块无返回值,但是有副作用 60
8.1.2 if语句:局部程序块有返回值 61
8.2 switch语句 62
8.2.1 switch语句:右侧有表达式 62
8.2.2 switch语句:右侧无表达式 63
8.3 小结 64
第9章 循环结构 65
9.1 for语句 65
9.2 for…in语句 67
9.3 while语句 68
9.4 小结 70

二、函数篇
第10章 函数概述 72
10.1 函数简介 72
10.2 函数的分类 72
10.2.1 函数按照调用关系分类 72
10.2.2 函数按照在系统内是否预先定义分类 73
第11章 指标函数indicator 75
11.1 函数indicator声明语句格式与参数 75
11.2 函数indicator的参数解析与示例 76
11.2.1 参数title和参数shorttitle 76
11.2.2 参数overlay 77
11.2.3 参数format 78
11.2.4 参数precision 80
11.2.5 参数scale 81
11.2.6 参数timeframe 82
11.2.7 参数timeframe_gaps 83
11.2.8 参数explicit_plot_zorder 84
11.2.9 参数max_lines_count 86
11.2.10 参数max_labels_count 87
11.2.11 参数max_boxes_count 89
11.2.12 参数max_bars_back 91
11.3 小结 91
第12章 绘图函数 93
12.1 绘图函数简介 93
12.2 函数plot 93
12.3 plot系列的其他函数 112
12.4 非plot系列的绘图函数 116
第13章 输入函数input/input.*系列 124
13.1 输入函数input/input.*系列简介 124
13.2 输入函数input/input.*系列的示例 126
13.2.1 函数input的示例 126
13.2.2 函数input.int的示例 127
13.2.3 函数input.float的示例 129
13.2.4 函数input.bool的示例 129
13.2.5 函数input.color的示例 130
13.2.6 函数input.price的示例 132
13.2.7 函数input.session的示例 132
13.2.8 函数input.source的示例 134
13.2.9 函数input.string的示例 134
13.2.10 函数input.symbol的示例 135
13.2.11 函数input.text_area的示例 137
13.2.12 函数input.time的示例 137
13.2.13 函数input.timeframe的示例 138
第14章 策略函数strategy及strategy.*系列 140
14.1 交易策略、回测和前测 140
14.2 策略函数strategy的用户界面介绍 141
14.3 策略函数strategy 144
14.3.1 函数strategy的参数分类 144
14.3.2 strategy的函数声明语句格式与参数 145
14.3.3 可以运用于回测与前测的参数的详细解析与示例 147
14.3.4 专用于前测的三个参数的详细解析与示例 171
14.3.5 按时间段进行回测与前测的示例 179
14.4 其他strategy.*系列函数 183
14.4.1 strategy.*系列函数分类 183
14.4.2 订单处理 186
14.4.3 strategy.risk.*系列函数 196
14.5 小结 209
第15章 库函数library 210
15.1 库函数library简介 210
15.2 库函数library的定义/创建 210
15.3 发布库函数library 213
15.4 如何导入/使用库函数library 214
第16章 其他内置函数 217
第17章 用户自定义函数 220
17.1 用户自定义函数声明的语句格式与举例 220
17.1.1 用户自定义函数声明的单行语句格式与示例 220
17.1.2 用户自定义函数声明的多行语句格式与示例 221
17.2 小结 224

三、进阶篇
第18章 图表的配色设计 226
18.1 颜色的4种表示方法 226
18.2 color相关函数 230
18.2.1 返回值为color类型的函数 230
18.2.2 用于为图形、图表、背景或指定区域配色的函数 231
18.2.3 color相关函数的详细解析与示例 232
18.3 Z-index:图形/图表的堆叠顺序 239
18.4 颜色渲染与颜色渐变 241
18.5 小结 246
第19章 提醒功能及alert系列函数 247
19.1 划分提醒类型 247
19.2 将提醒信息发送到终端或其他渠道的设置 249
19.3 在用户界面创建提醒的方法 252
19.4 使用alert系列函数定制提醒的触发
条件和提醒信息 256
19.4.1 函数alertcondition 256
19.4.2 函数alert 257
19.5 使用函数strategy.*的参数alert_message定制提醒信息 263
19.6 小结 265
第20章 数组 266
第21章 调试 272
21.1 调试简介 272
21.2 使用输出函数将变量的值或提示信息输出到屏幕 273
21.3 使用用户自定义函数将变量值或提示信息输出到屏幕 277
21.4 小结 279
第22章 发布脚本 280
22.1 如何发布脚本 280
22.2 脚本的访问控制 283
22.3 如何更新/修改已发布的脚本 285
22.4 小结 286
第23章 初试牛刀之小技巧集锦与实例分享 287
23.1 将多个指标合并到一个脚本 287
23.2 用脚本替代人工识别K线形态 289
23.3 定制指标实例 295
23.4 indicator脚本与strategy脚本之间的相互转换 299
23.5 小结 302

四、应用篇
第24章 趋势指标/策略 304
24.1 均线类 304
24.1.1 均线类指标简介 304
24.1.2 实例1:均线彩虹指标 305
24.1.3 实例2:均线带策略 309
24.2 支撑/压力 313
24.2.1 支撑/压力简介 313
24.2.2 实例:支撑/压力通道 313
24.3 趋势线 321
24.3.1 趋势线简介 321
24.3.2 实例:趋势线 321
24.4 趋势通道 325
24.4.1 趋势通道简介 325
24.4.2 实例:ENV指标 325
24.5 一目均衡表 328
24.5.1 Ichimoku指标简介 328
24.5.2 实例:一目均衡表等多指标复合策略 329
24.6 艾略特波浪 334
24.6.1 艾略特波浪简介 334
24.6.2 实例:Elliot Wave Chart Pattern 334
24.7 小结 340
第25章 反转指标 341
25.1 反转指标简介 341
25.2 德马克序列指标 341
25.2.1 德马克序列指标简介 341
25.2.2 实例1:指标TD 9 342
25.2.3 实例2:指标TD 13 345
25.3 之字转向指标 351
25.3.1 之字转向指标简介 351
25.3.2 实例1:ZigZag++指标 351
25.3.3 实例2:Zigzag Trend/Divergence Detector指标 354
25.4 小结 357
第26章 动量指标 358
26.1 动量指标简介 358
26.2 MACD指标 358
26.2.1 MACD指标的含义 358
26.2.2 实例:MACD Divergence 359
26.3 RSI指标 363
26.3.1 RSI指标的含义 363
26.3.2 实例:带有超买/超卖提示的RSI指标 364
26.4 小结 366
第27章 成交量指标 367
27.1 成交量指标简介 367
27.2 实例1:成交量分布图 367
27.3 实例2:自动锚定成交量分布指标 368
27.4 实例3:Volume Level & Breakout 369
27.5 实例4:VWAP指标 370
27.6 小结 374
第28章 背离技术分析 375
28.1 背离简介 375
28.2 实例1:RSI Divergence 376
28.3 实例2:多指标背离提示——适用于任何震荡类指标 380
28.4 小结 385
第29章 K线形态与分形技术分析 386
29.1 K线形态简介 386
29.2 分形 387
29.2.1 实例1:威廉姆斯分形 388
29.2.2 实例2:Fractals(适用于多种常规分形和威廉姆斯分形) 391
29.3 小结 393
第30章 波动率指标 394
30.1 均幅指标 394
30.2 肯特纳通道 395
30.3 TTM Squeeze指标 396
30.3.1 TTM Squeeze指标简介 396
30.3.2 实例:TTM Squeeze 398
30.4 布林带 400
30.4.1 布林带简介 400
30.4.2 实例:布林带+均线带 401
30.5 小结 404
第31章 其他指标与技术分析工具 405
31.1 斐波那契回撤与扩展 405
31.1.1 斐波那契回撤与扩展简介 405
31.1.2 实例1:Auto Fib Retracement 405
31.1.3 实例2:Auto Fib Extension 407
31.1.4 实例3:Fibonacci Zone 407
31.2 跳空缺口 408
31.2.1 跳空缺口简介 408
31.2.2 实例:Gaps 409
31.3 砖形图 411
31.3.1 砖形图简介 411
31.3.2 如何使用砖形图 412
31.4 小结 416

读者评论