python量化需要什么基础_真格量化入门课程——②真格量化Python策略编写思路
四、如何在真格平台上做到这一切
现在我们想在真格量化上实现自己的策略,需要怎么做呢?
首先,真格量化使用Python语言编写策略。我们需要对Python语言有一些初步的了解。与C++或Java语言相比,Python是一种非常方便易用的脚本式编程语言,很适合非计算机专业的用户来上手量化交易。
举个简单的例子,如果直接用C++调用CTP的API进行下单委托,您可能需要写这些代码:
在真格量化,您只需要一行Python代码:
省下的时间,您可以用来研究策略,或者做些更有意义的事情。
4.1平台IDE不止是开发环境也是运行环境
真格量化由一个简洁的网页版Python编辑器、提供海量数据的数据库和用于运行策略的性能强大的服务器构成。用户在编辑器里写好策略代码后,可以直接去回测、交易模拟盘或交易实盘。用户无需在本地数据库、本地编译环境、云服务器上的各种软件之间频繁切换,无需自己花费时间精力去记录市场数据,也不用为优化网络、内存等硬件性能而头疼。
回测与模拟、实盘三合一的设计使得代码复用性得到了显著提高。策略研究代码只需极少量的改动就可投入实盘交易。
4.2 真格量化中的Python策略编写思路
4.2.1 事件驱动的设计思路
真格量化的策略设计应遵循“事件驱动”的开发思路。当新的“事件”(比如新的价格数据或者账户状态的变化)被推送到策略程序时,程序将调用和这个事件相对应的处理函数来进行相关操作。
这和我们最常使用的顺序式编程略有不同。程序执行各个任务的先后顺序取决于是否监听到了特定事件的发生。事件驱动型程序在启动后就处在一个循环当中。这个循环就在监听各种事件。真格量化中可监听的事件及其对应的监听函数如下表:
这些事件可以分为以下几类:
举个例子:
为实现每天开盘前实盘账户的自动登录,我们可以用OnMarketQuotationInitialEx函数去监听交易所行情初始化这个事件,当事件源(也就是交易所)发送事件时(发出行情初始化信息),监听该事件的监听函数(OnMarketQuotationInitialEx)就会收到消息并作出响应(比如登录实盘账户)。
我们也应当注意,行情数据是需要订阅的(通过SubscribeQuote或SubscribeBar函数)。只有被订阅的品种的行情才会被持续推送到相应监听函数(比如OnQuote或OnBar函数)。不订阅行情就不会有行情数据来驱动相应的监听函数。
下边这个例子展示了用不同的事件去驱动不同的操作。比如用“开始事件”驱动“登录账户”函数,用“开盘事件”来驱动“订阅行情(K线)”函数,用“K线更新事件”来驱动“计算均线”函数。
使用事件驱动的设计思想,我们可以通过监听到的各种“消息”和响应函数的各种“指令”将程序的各部件连接起来。
对于事件驱动型程序,我们还可以将其中各个组成部分划分为“元素”和“操作函数”:
元素包括:
事件源
事件监听器
事件对象
操作函数包括:
监听动作函数
发送事件函数
调用监听函数的响应函数
我们在编写策略时应注意区分元素和操作函数,了解一个操作需要哪些事件的发生作为启动条件,及监听到一个事件发生后可以采取哪些动作。
4.2.2 数据订阅
不同周期的行情订阅:
在事件驱动部分,我们已经介绍了策略程序要依靠订阅行情来驱动。在回测或实盘交易时,我们可以通过选择不同的时间周期参数,来指定策略在相应的”时间周期“上进行操作(例如策略是在分钟级别交易还是在Tick级别交易)。
在回测中,如果”时间周期“选择“Tick”则可以通过SubscribeQuote获得历史的tick行情。”时间周期“选择”分钟“则可通过SubscribeBar函数获得1~240分钟这些不同分钟周期的历史K线行情。”时间周期“选择”每天“则可以通过SubscribeBar函数订阅”天“、”星期“、”月“、”季度“、”年“这些更长周期的历史K线行情。
在实盘交易中,如果”时间周期“选择”Tick“则可以通过SubscribeQuote获得最新的tick行情。”时间周期“选择”分钟“则可通过SubscribeBar函数获得1~240分钟这些不同分钟周期的最新的K线行情。”时间周期“选择”每天“则可以通过SubscribeBar函数订阅”天“、”星期“、”月“、”季度“、”年“这些更长周期的最新K线行情。
使用SubscribeBar函数应注意,其BarType参数应当与“时间周期”参数对应:
例如”时间周期“选择”每天“,SubscribeBar函数的BarType参数可以根据需要写成BarType.Week,BarType.Month, BarType.Day等。”时间周期“选择”分钟“,SubscribeBar函数的BarType参数可以根据需要写成BarType.Min3,BarType.Min15,BarType.Min等。
而对于过去一段时间的历史行情,比如2018年12月1日到2019年3月1日之间的所有日K线,可以通过GetHisData函数来查询。
4.2.3 交易相关处理
我们在交易中最常处理的就是与账户有关的各种信息。
真格量化中与账户相关的信息,都可以视为“对象”。比如账户本身可以作为一个对象,可以调用其各种“方法”,比如登录、查询成交、进行风控等。
例如,账户的登录方法:
而查询到的账户的成交、持仓等信息,本身也可以作为对象,有与之对应的”属性“和”方法“。比如对于一个”委托对象“可以查询其委托价格、数量等属性,以及查询委托是否可撤等方法。
例如,通过监听委托状态变化(OnOrderChange)来查询委托的一些属性:
4.3 Python应当怎么写
对于Python初学者,可以参考“菜鸟教程”,学习基础的语法。当您掌握了Python的循环控制、数组和函数的知识,就已经可以使用真格量化的大部分功能。
对于 Python 编程有一定经验的用户,可以仔细阅读“真格量化API文档”(这里API文档的重要程度,相当于飞行手册对于飞行员的重要程度,您在真格量化中80%的问题都可以在API文档里找到答案)以及参考“Python for Finance-Analyze Big Financial Data”等专门介绍Python在金融领域应用的教程。在真格量化微信公众号(在微信搜索“真格量化”)和知乎(在知乎搜索“真格量化”)上也有不少与真格量化相关的Python编程和策略设计的技巧,能给您编写自己的量化交易策略提供灵感。
python量化需要什么基础_真格量化入门课程——②真格量化Python策略编写思路相关推荐
- Ex6_机器学习_吴恩达课程作业(Python):SVM支持向量机(Support Vector Machines)
Ex6_机器学习_吴恩达课程作业(Python):SVM支持向量机(Support Vector Machines) 文章目录 Ex6_机器学习_吴恩达课程作业(Python):SVM支持向量机(Su ...
- Python 数据挖掘与机器学习基础-韦玮-专题视频课程
Python 数据挖掘与机器学习基础-252人已学习 课程介绍 Python 数据挖掘与机器学习基础 课程收益 Python全栈工程师 讲师介绍 韦玮 更多讲师课程 ...
- python后端需要什么基础_【后端开发】python爬虫需要什么基础
入手爬虫确实不要求你精通Python编程,但基础知识还是不能忽视的,那么我们需要哪些Python基础呢? 首先我们先来看看一个最简单的爬虫流程: 第一步要确定爬取页面的链接,由于我们通常爬取的内容不止 ...
- 如何找到python廖雪峰基础_为什么看不懂廖雪峰的Python学习教程?
先不要怀疑自己的智商,也许是你完全没有编程基础,这个时候,可以选个视频课程看看,B站还有各路公开课上有很多,自己找找. 或者觉得这样有点麻烦,那就花点钱,买个基础入门课程学学,试试下面的链接. 我觉得 ...
- python 数组合并排重_并排深度学习:Julia vs Python
python 数组合并排重 Julia could possibly be the biggest threat to Python. For a variety of applications, J ...
- python模块cv2人脸识别_手把手教你使用OpenCV,Python和深度学习进行人脸识别
使用OpenCV,Python和深度学习进行人脸识别 在本教程中,你将学习如何使用OpenCV,Python和深度学习进行面部识别.首先,我们将简要讨论基于深度学习的面部识别,包括"深度度量 ...
- python难度大的题_早看少被坑!Python 最难的问题
超过十年以上,没有比解释器全局锁(GIL)让Python新手和专家更有挫折感或者更有好奇心. 未解决的问题 随处都是问题.难度大.耗时多肯定是其中一个问题.仅仅是尝试解决这个问题就会让人惊讶.之前是整 ...
- python构造方法与java区别_一张图秒懂Java和Python的区别,你知道吗?
对于程序员的语言千千万JAVA\C\C++\PHP\Python不同的程序员使用着不同的语言,做着功能相似需求却不同的产品. 但是最近Python在人工智能的推动下突然出现在人们的面前,其实和Java ...
- python爬虫挖掘平台搭建_一篇非常棒的安装Python及爬虫入门博文!
原标题:一篇非常棒的安装Python及爬虫入门博文! 一. 大数据及数据挖掘基础(私信小编007即可获取大量Python学习资料!) 第一部分主要简单介绍三个问题: 1.什么是大数据? 2.什么是数据 ...
- [Python图像处理] 一.图像处理基础知识及OpenCV入门函数
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
最新文章
- 工程建筑行业SAP整体解决方案
- 计算机技术在排水领域的应用,浅谈计算机技术在市政给排水中的应用.doc
- Android编译笔记四
- 在${}中为甚么采用@Param及多参数查询@Param
- python机器学习入门(Day1:Numpy)
- linux syslog 笔记
- 自动驾驶_感知_分割_车道线检测
- 风哥Oracle数据库视频培训教程大合集(网盘下载.共18套)
- ajax中php写法,jQuery中AJAX写法
- 完全卸载chrome
- 故障恢复控制台的启动方法
- Python 爬取朋友圈最新方法!!(文末赠书)
- 国产芯片传来好消息,纯国产CPU测试数据“曝光”
- 【GamePlay】UGUI的注意事项
- 微信小程序搭建项目起步
- 万能解压器安卓版_全能压缩软件下载-全能压缩 安卓版v11.5.8-PC6安卓网
- excel mysql仓库管理_用Excel表格设计仓库管理系统,里面加上数据库,并附上详细说明1、每次采购入库的物料逐渐消耗的过...
- autoit3 自动安装腾讯QQ【版本QQ2011Beta3】
- android app自动化测试框架Appium资料整理
- Java 基础实验 找出1000以内的完数