不想错过精彩课程?一键“订阅”,轻松学习!
大家好,欢迎来到金十交易学院《智能量化交易》课程。
摘要:什么是麦语言?所谓的麦语言就是从早期的股票技术指标延伸出来的一套程序化函数库。把算法封装到一个个函数里,用户只需要像拼“积木式”一样调用一行行函数,实现策略逻辑。
它采用"小语法,大函数"的构建模式,大幅提高编写效率,其他语言100多句的策略,用麦语言一般10几句就可以编出来。配合发明者量化工具的金融统计函数库和数据结构,同样也能支持部分复杂的交易逻辑。
一、完整策略
为了帮助大家快速理解本节的重点知识,在介绍发明者量化麦语言快速入门之前,先对本节名词概念有个初步了解。我们还是用长期50日均线和短期10日均线作为基本的案例,回顾一下上一章节讲过的完整策略案例:
l 多头开仓:如果当前没有仓位,并且收盘价大于短期均线,并且收盘价大于长期均线,并且短期均线大于长期均线,并且长期均线是上升的。
l 空头开仓:如果当前没有仓位,并且收盘价小于短期均线,并且收盘价小于长期均线,并且短期均线小于长期均线,并且长期均线是下降的。
l 多头平仓:如果当前持有多单,并且收盘价小于长期均线,或者短期均线小于长期均线,或者长期均线是下降的。
l 空头平仓:如果当前持有空单,并且收盘价大于长期均线,或者短期均线大于长期均线,或者长期均线是上升的。
如果用麦语言代码编写出来,就是这样的:
要想编写一个完整的量化交易策略,通常需要:数据获取、数据计算、逻辑计算、下单买卖等几个步骤。如上图所示,在整个代码中,只用到了一个获取基础数据的API,就是第一行和第二行中的“CLOSE”;然后第一行至第9行则是数据计算部分;最后第十一行至第十四行是逻辑计算和下单部分。
注意看,紫色的代码是变量;在第一行至第九行中,绿色的“:=”是赋值符,赋值符右边的数据计算完毕后赋值给赋值符左边的变量;橘色的代码就是API,比如在第一行中,调用MA(均线)需要传入两个参数,传入参数你可以理解为设置,也就是在调用MA的时候,需要设置MA的类型;玫红色的“AND”、“OR”是逻辑运算符,主要用来连接多个逻辑计算等等。有了以上的基础知识概念,下面我们就开始学习详细的麦语言基础。
二、基本数据
基础数据(开盘价、最高价、最低价、收盘价、成交量)是量化交易中不可或缺的一部分,在策略中获取最新的基础数据,只需要调用发明者量化工具的API就可以了。如果要获取历史的基础数据,可以使用“REF”,如:REF(CLOSE,1)就是获取昨天的收盘价。
三、变量
变量是可以变的数,变量的名字可以理解为代号,其命名支持汉字、字母、数字、划线格式命名,但长度需控制在31字符内。变量名称不能相互重复,不能与参数名重复,不能与函数名(API)重复,每个语句应该以分号结束。想要在编写后,加入自己的语言注释,在结尾处用“//”表示。需在半角输入法的大写状态下进行编写。如下图所示:
四、变量赋值
变量赋值就是把赋值符右边的数值给左边的变量,赋值符一共有4种,可以控制数值是否显示在图表上,以及定义显示的位置。下图绿色的字体就是赋值符啦,分别是“:”、“:=”、“^^”、“..”,图中代码注释部分,详细解释了它们的含义。
五、数据类型
在麦语言中,有多种数据类型,其中最常用的是数值类型、字符串类型、布尔类型。数值类型就是数字,包括整数、小数、正负数等,如:1、2、3、1.1234、2.23456……;字符串类型你可以理解为文字,中文、英文、数字都可以是字符串,如:'发明者量化'、'CLOSEPRICE'、'6000',字符串类型必须用英文分号包裹;布尔类型是最简单的,它只有2个值“是”和“否”,如:用1代表true表示“是”,0代表false表示“否”。
六、关系运算符
关系运算符,顾名思义是用来比较两个值的关系的运算符。分别为等于、大于、小于、大于等于、小于等于、不等于,如下图:
七、逻辑运算符
逻辑运算可以把单独的布尔类型语句连接成一个整体,最常用的是“AND”(并且)和“OR”(或)。假设有两个布尔类型值,分别是“收盘价大于开盘价”和“收盘价大于均线”,我们可以将它们组成一个布尔值,比如:“收盘价大于开盘价并且(AND)收盘价大于均线”,“收盘价大于开盘价或者(OR)收盘价大于均线”。
大家注意:
l “AND”是所有条件都为“是”的时候,最终条件才为“是”;
l “OR”是所有条件中,只要有任何一个条件为“是”,最终条件就为“是”。
l “AND”可以写成“&&”,“OR”可以写成“||”。
八、算数运算符
常用的麦语言的算数运算符(“+”、“-”、“*”、“/”)和小学学习的数学没有任何区别,如下图:
九、优先级
如果有一个100*(10-1)/(10+5)表达式,程序是先计算哪一步?中学数学告诉我们:①如果是同一级运算,一般按从左往右依次进行计算。②如果既有加减、又有乘除法,先算乘除法、再算加减。③如果有括号,先算括号里面的。④如果符合运算定律,可以利用运算定律进行简算。麦语言的优先级也是如此,如下图:
十、执行模式
在发明者量化工具的麦语言中,程序策略执行一共有2种模式,即:收盘价模式和实时价模式。收盘价模式指当前K线信号成立,在下根K线开始的时候立即执行下单交易。实时价模式指的当前K线信号成立,就立即执行下单交易。
十一、日内策略
如果是日内策略,尾盘需要平仓时,就需要用到“TIME”时间函数。该函数在秒周期以上,日周期以下,显示为四位数的形式,即:HHMM(1450——14点50分)。注意:使用TIME函数作为尾盘平仓的条件,建议开仓条件也要做相应的时间限制。如下图:
十二、模型分类
麦语言中的模型分类一共有两种,即:非过滤模型和过滤模型。这个其实很好理解:非过滤模型允许连续出现开仓信号或平仓信号,可以实现加仓和减仓功能。过滤模型不允许连续出现开仓或平仓信号,也就是当开仓信号出现后,之后的开仓信号会被过滤掉,直到出现平仓信号,过滤模型出信号的顺序是:开-平-开-平-开.....
下节预告:日内交易也是一种交易模式,这种方式不留仓过夜,所以受市场波动率风险较低,一旦出现不利行情,可以及时进行调整。学习了本节麦语言入门,下节我们将带大家手把手编写一个可行的日内量化交易策略。
课后习题:
1、试着用发明者量化工具写下麦语言获取基础数据的API。
2、变量赋值在图表中一共有哪些显示方式?
最后给大家一个温馨小提示:在课程和直播页面,点击“订阅”按钮,就可以及时接收提醒,不错过课程和直播的精彩内容!
金十交易学院,8点准时更新