真格量化入门课程——②真格量化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编程和策略设计的技巧,能给您编写自己的量化交易策略提供灵感。


原文地址:https://blog.51cto.com/14258357/2373256

时间: 2024-11-05 22:56:24

真格量化入门课程——②真格量化Python策略编写思路的相关文章

量化资料学习《Python与量化投资从基础到实战》+《量化交易之路用Python做股票量化分析》+《组织与管理研究的实证方法第2版》

我们需要利用Python进行数据分析的指南,有大量的关于数据处理分析的应用,重点学习如何高效地利用Python解决投资策略问题,推荐学习<Python与量化投资从基础到实战>等电子资料. 学习<Python与量化投资从基础到实战>电子书,主要讲解如何利用Python进行量化投资,包括对数据的获取.整理.分析挖掘.信号构建.策略构建.回测.策略分析等.<Python与量化投资>利用Python进行数据分析的指南,有大量的关于数据处理分析的应用,并将重点介绍如何高效地利用P

【福利】python免费入门课程

发现了一个免费的python入门课程,之前有偶尔听过其它课程还是很有质量的.特来分享 先上张图 大概流程就是: 加好友进群 注册账号 报名等开播 ps:有其它自学途径欢迎分享

很棒的计算机入门课程:公开课从与非门到俄罗斯方块(第二部分)

博客中的文章均为meelo原创,请务必以链接形式注明本文地址 Build a Modern Computer from First Principles: Nand to Tetris Part II (project-centered course) by: Noam Nisan & Shimon Schocken from: Hebrew University of Jerusalem 课程链接:https://www.coursera.org/learn/nand2tetris2/home

大侠唐在飞 《实战juniper入门课程》

大侠唐在飞在51CTO学院推出的一个以经验传递.实战为主的juniper入门课程,现场录制已经有三分之一了,欢迎大家捧场,提宝贵意见.http://edu.51cto.com/course/course_id-3284.html. 实战juniper入门课程 QQ群  263642196 只有付费学员才能加入,加入需提供付费的51CTO用户名.本群为大家提供技术交流.解疑释惑.资料分享使用(参考资料.案例.学习资料.认证资料). 培训内容安排 1 关于实战juniper入门课程 2 Junipe

写给程序员的管理入门课程 -《格鲁夫给经理人的第一课》

写给程序员的管理入门课程 -<格鲁夫给经理人的第一课> 序 格鲁夫给经理人的第一课 <格鲁夫给经理人的第一课> 最早出版于 2007 年,书原名为<High Output Management>.本书的作者格鲁夫是 Intel 的前 CEO,领导了 Intel 从一家濒临倒闭的存储器公司,转型为微处理器公司,并且在个人 PC 开始流行时,成功和微软缔结 Wintel 联盟,主宰了整个 PC 电脑时代. 格鲁夫是一个技术出身的管理者,在本书中,我们甚至看到他多次用编译器来

云计算学习哪里好?云计算入门课程

云计算是是一种服务的使用和交付模式,通常涉及经过网络来提供动态易扩展且经常是虚拟化的资源.以前的网络拓扑图中往往用云来表示ISP网络,后来也用来表示网络和底层基础设施的抽象.因此,云计算甚至可以让你体验每秒数万次的运算能力,拥有这么强大的计算能力可以进行试验模拟.大数据分析和市场发展趋势.用户用自己的电脑就能享用到这些资源(前提是给多少钱用多少资源). 云计算是一种按使用量付费的模式,这种模式提供可用的.快捷的.按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用服务)

移动端自动化测试Appium 从入门到项目实战Python版

移动端自动化测试Appium 从入门到项目实战Python版 说到APP自动化测试,Appium可是说是非常流行了, 不仅支持多语言.多平台的优势,同时支持Andriod.iOS.H5的自动化测试:本课程会从初级的Appium框架讲起,涉及业界常见的po模型.关键字模型.服务自动化.持续集成等实战讲解,让你快速上手移动端自动化测试工作 appium做app自动化测试,环境搭建是比较麻烦的.也是很多初学者在学习app自动化之时,花很多时间都难跨越的坎. 但没有成功的环境,就没有办法继续后续的使用.

下载大数据实战课程第一季Python基础和网络爬虫数据分析

python语言近年来越来越被程序相关人员喜欢和使用,因为其不仅简单容易学习和掌握,而且还有丰富的第三方程序库和相应完善的管理工具:从命令行脚本程序到gui程序,从B/S到C/S,从图形技术到科学计算,软件开发到自动化测试,从云计算到虚拟化,所有这些领域都有python的身影:python已经深入到程序开发的各个领域,并且会越来越多的人学习和使用. 大数据实战课程第一季Python基础和网络爬虫数据分析,刚刚入手,转一注册文件,视频的确不错,可以先下载看看:链接:http://pan.baidu

《Python入门》Linux 下 Python Web开发环境搭建笔记

之前写过 Windows 7下Python Web开发环境搭建笔记,今天写一下在Linux系统下搭建Python Web的开发测试环境. 我使用的系统是:ubuntu 14.04 server,根据个人经验,CentOS 6.5 下也适用. 关于Python的版本 进入Python的网站,鼠标移到导航条上的下载,我们会发现提供两下主版本的下载链接! 这两个之间存在什么差别呢? 个人理解,2.7.x的版本为更加稳定的版本,而3.x的版本则是比较前卫的版本,包含了很多新功能新特性之类的: 但如果想要