不想错过精彩课程?一键“订阅”,轻松学习!

大家好,欢迎来到金十交易学院《智能量化交易》课程。
摘要:提到编程,就一定离不开API,对于很多非IT人士而言,API到底是什么?API ≈ 听不懂。本节我们将用大白话科普,到底什么是API,以及介绍发明者量化工具中常用的API。
一、什么是API?
如果你在网上搜索,会得到如下结果:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。那么再通俗一点来说,API究竟是什么呢?
其实日常生活中,我们有很多类似API的场景,比如:你去一家饭店吃饭,只需要看着菜单点餐就行了,不需要知道具体是怎么做出来的。而菜单中的菜名就是具体的API,菜单就是API文档。
二、量化交易中的API是什么?
假如你需要获取当前品种今天的开盘价是多少,不需要知道具体是怎么获取到的。你只需要在代码编辑器中写入“OPEN”,直接使用就行了,“OPEN”就是麦语言中开盘价的API。
三、常用的麦语言API
在讲解麦语言API之前,我们先来看下常用的代码结构是怎样的,以及它都有哪些功能组成,这将帮助你更好的理解API,请看下图示例:

如上图所示的代码:
l 紫色的AA是变量,变量就是可以变的量,就跟我们初中学的代数是一样的。如果把开盘价赋值给AA,那么AA就是开盘价;如果把最高价赋值给AA,那么AA就是最高价。当然AA只是自定义的名字,你也可以定义为BB。
l 绿色的“:=”是赋值的意思,也就是将“:=”右边的数值给左边的变量。
l 橘色的代码就是发明者量化工具的麦语言API,注意看第一行中的OPEN是获取开盘价的API,直接使用就可以了;第二行中的MA是获取均线的API,它需要传入2个参数,也就是说你需要告诉发明者量化工具,你需要什么样的均线:如果你希望获取以开盘价计算的50周期均线,那么可以写为:MA(OPEN,50);注意两个参数之间有个英文逗号。
l 黄色的“//”是注释符,其后面的蓝色中文就是注释内容,这些都是自己看的,用来提示该行代码是什么意思。程序运行时不对注释做任何处理。注意注释符前面,每行代码都要有一个英文分号,作为该行的结尾。
有了基础的代码结构认知后,我们下面就给大家带来一些常用的麦语言,以后我们也会常用这些语言。
OPEN——获取最新K线的开盘价
例:AA:=OPEN; 获取最新K线的开盘价,并把结果赋值给AA
HIGH——获取最新K线的最高价
例:AA:=HIGH; 获取最新K线的最高价,并把结果赋值给AA
LOW——获取最新K线的最低价
例:AA:=LOW; 获取最新K线的最低价,并把结果赋值给AA
CLOSE——获取最新K线的收盘价,当盘中k线没有走完的时候,取得最新价
例:AA:=CLOSE; 获取最新K线的收盘价,并把结果赋值给AA
VOL——获取最新K线的成交量
例:AA:=VOL; 获取最新K线的成交量,并把结果赋值给AA
REF(X,N)——引用X在N个周期前的值
例:REF(CLOSE,1); 获取上根K线的收盘价
MA(X,N)——求X在N个周期内的简单移动平均
例:MA(CLOSE,10); //获取最新K线的10周期均线
CROSSUP(A,B)——表示当A从下方向上穿过B,成立返回1(Yes),否则返回0(No)
例:CROSSUP(CLOSE,MA(C,10)) //收盘价上穿10周期均价
CROSSDOWN(A,B)——表示当A从上方向下穿B,成立返回1(Yes),否则返回0(No)
例:CROSSDOWN(CLOSE,MA(C,10)) //收盘价下穿10周期均价
BK——买入开仓
例:CLOSE>MA(CLOSE,5),BK; //收盘价大于5周期均线,买入开仓
SP——卖出平仓
例:CLOSE<MA(CLOSE,5),SP; //收盘价小于5周期均线,卖出平仓
SK——卖出开仓
例:CLOSE<MA(CLOSE,5),SK; //收盘价小于5周期均线,卖出开仓
BP——买入平仓
例:CLOSE>MA(CLOSE,5),BP; //收盘价大于5周期均线,买入平仓
BPK——买入平仓,并买入开仓(反手做多)
例:CLOSE>MA(CLOSE,5),BPK; //收盘价大于5周期均线,平掉空仓,再买开仓。
SPK——卖出平仓,并卖出开仓(反手做空)
例:CLOSE<MA(CLOSE,5),SPK; //收盘价小于5周期均线,平掉多仓,再卖开仓。
CLOSEOUT——平掉所有持仓,建议在加减仓模型中使用
例:CLOSEOUT; 平掉所有方向的仓位。
四、常用的JavaScript语言API
在讲解JavaScript语言API之前,我们先来看下常用的代码结构是怎样的,以及它都有哪些功能组成,这将帮助你更好的理解API,请看下图示例:

如上图所示的代码:
l 在JavaScript语言中创建变量通常称为“声明”变量。红色代码,我们使用var关键词来声明变量,变量名是橘色代码:“aa”。
l 在JavaScript语言中,用等号赋值,也就是将“=”右边的数值给左边的变量。
l 青色代码“exchange”是交易所对象,这里的交易所指的就是你所设置的期货公司,这是一个固定的格式,也就是你在调用JavaScript语言的API时,必须指定交易所对象。
l 绿色代码就是JavaScript语言的API了,当我们调用它的时候,其实是调用交易所对象中的函数。注意蓝色代码后面的点,也是一个固定格式。这里的函数与我们中学时学的函数是一个意思。如果该函数不需要指定参数,就以空括号表示;如果该函数必须传入参数,就把参数写到括号里面。
通过案例,清楚代码的基本结构原理后,下面我们展示几个大家日后会常用到的的JavaScript语言API
SetContractType(“品种代码”)——设置合约类型,也就是你要交易哪个品种
例:exchange.SetContractType("rb1905"); //设置交易的品种为“螺纹钢1905合约”
GetTicker——获取Tick数据
例:exchange.GetTicker(); //获取Tick数据
GetRecords——获取K线数据
例:exchange.GetRecords(); //获取K线数据
Buy——买入
例:exchange.Buy(5000, 1); //以5000元的价格买一手
Sell——卖出
例:exchange.Sell(5000, 1); //以5000元的价格卖一手
GetAccount——获取账户信息
例:exchange.GetAccount(); //获取账户信息
GetPosition——获取持仓信息
例:exchange.GetPosition(); //获取持仓信息
SetDirection——设置做多做空下单类型
例:exchange.SetDirection("buy"); //设置下单类型为买入开多仓
exchange.SetDirection("closebuy"); //设置下单类型为卖出平多仓
exchange.SetDirection("sell"); //设置下单类型为卖出开空仓
exchange.SetDirection("closesell"); //设置下单类型为买入平空仓
Log——在日志中输出一条信息
例:Log(“hello, worle”); //在日志中输出”hello world”
Sleep——使程序暂停一段时间
例:Sleep(1000); //使程序暂停1秒
可能有些小伙伴会有疑问,上面这么多API,怎么记住呢?其实这些都不用你死记硬背,发明者量化官方有一套详尽的API文档。就像查字典一样,当你用的时候,需要什么直接查就行了。不必被代码等初次认识的内容吓住,我们要的是通过这些语言去组织自己的策略,请大家记住,技术永远不是量化的门槛,是否拥有好的策略才是你能否在量化市场走的长远的关键。

下节预告:编程就像是组装乐高积木,API就像积木的各个零件,而编程的过程就是把各个乐高零件组成一个完整的玩具。下节我将带领大家用麦语言API,组装一个完整的量化交易策略。
课后习题:
1、试着写一个麦语言5周期均线上穿10周期均线语句。
2、试着用JavaScript语言的GetAccount获取你的账户信息,并用Log打印到日志。
最后给大家一个温馨小提示:在课程和直播页面,点击“订阅”按钮,就可以及时接收提醒,不错过课程和直播的精彩内容!
金十交易学院,8点准时更新

