咱们使用数字货币比特币做为量化交易标的。使用比特币的好处有几个:编程
接下来要作的,就是学习用WeQuant的标准,以完成一份有效的策略。咱们将以比特币定投为例(按期自动买入比特币,来换取比特币升值收益),做一个简单的介绍。编程语言
这里的bar不是指酒吧,是金融交易里面的行情bar,是一个图形概念。若是你多多少少看过交易的行情图,横向排列的高低不一样的“小柱子”,每一根柱子都称为一个bar。函数
bar跟时间是高度关联的。bar记录了固定间隔内,从开始时间到结束时间,价格的信息,常规的bar会记录以下价格信息:开始价格(开盘价)、结束价格(收盘价)、最高价、最低价。通常来讲,bar还会附带成交数量的信息。工具
bar在咱们的量化系统里面有什么用呢?除了提供基础的价格信息,在WeQuant设计的量化系统里面,策略是循环不间断地运转的,bar是循环的依据。学习
为何须要bar来支持循环呢?咱们知道,bar是自然带有时间属性的信息合集,在图形里,左边的bar比右边的bar发生的更早,最右边的bar反映的是当前最新的动态,因而,咱们能够利用bar的时间属性,让程序从左往右依次读取bar,来实现“从某时至某时”或者“实时不间断”的信息获取和计算的目的,既不遗漏,也不重复,时间间隔固定,因而咱们在写策略的时候,能够省略掉不少时间定义和处理的步骤,只须要关心在所读取的当前的bar里面,设计交易触发条件“若是 => 那么”——从而,整个策略的设计和编写,因为bar的循环的帮助,变得很是简单。翻译
bar就像老式时钟的钟摆,每摆一下,时间就往前进一格。只要bar不停地在更新和读取,咱们的策略就会不断地运行。bar跟前面几篇文章提到的行情系统,有极大的关联。设计
bar自己有频率的区分,区别就是每隔多少时长汇总一根bar。WeQuant提供分钟、小时、天、周级别的bar,来知足执行频率不一样的策略的要求。目前WeQuant提供的bar,主要针对数字货币交易市场,因为中间不休市,bar与bar之间所表示的时间区段是连续的,即紧密相连,不存在缝隙。接口
与bar密切相连,因为bar表示的是固定时间间隔内的价格信息,这里的frequency就是用来指定固定时间间隔有多长。ip
frequency有个正经的中文翻译叫频率,频率的单位是赫兹(次/秒)。而咱们为了省略换算的复杂(不少人算不过来),frequency设定的值仅做代指而非学术上的频率值,例如当frequency为1分钟时,实际上咱们说的是给策略指定成“依据1分钟时长的bar,每1分钟执行一次策略,所换算出来的频率值”。这段话献给特别较真的朋友们。文档
这是编程语言的概念,不做累述。在WeQuant的策略模板里面,只须要在策略里定义清楚两个函数,策略就能够生效。具体是哪两个函数须要定义,后文会做示例讲解。
除了用户须要本身编写函数以外,WeQuant自己提供了一些列的函数来辅助完成策略的表达,包括但不限于获取历史数据、获取账号信息、操做订单、计算和保存变量等等。详细的定义和使用方法,请在须要的时候移步至专门的API文档。
因为策略须要跟量化系统做整合,咱们要求在策略里添加一些预设的但跟交易逻辑自己无关的变量,让策略变得机器可读,使用方法请看示例,详细说明看API文档。
咱们对上文进行一个简单的汇总,一个WeQuant标准的策略应该长这个样子:
咱们看到,策略分红三部分,分别定义PARAMS(参数)变量、initialize和handle_data函数(分别须要传入context参数)。
这个策略什么意思呢?刨除掉其余设置的细节(想了解的话,请阅读API文档),咱们只看handle_data里的内容:
代码的意思是,天天,检查帐户里是否是剩余超过100块钱,若是超过,则按照当前的价格买入100块钱的比特币。
这样写完之后,平台就自动天天帮你买比特币了,做为一个自动化的定投策略,是否是很简单?
实际的定投策略会比这个更智能一些,那只是下单逻辑有了一些变化,总体的结构仍是同样的,此处为了简化教学目的。
在回测阶段,这段代码也是可用的,并且能够从回测结果里面看到,由于比特币价格在上涨,因此这个定投策略也是挣钱的呢。
基本概念先介绍到这里。若是但愿看更复杂的策略,策略讲堂里面有目前主流经典教科书策略的比特币版本,但愿大家喜欢。