程序化系统是指设计人员将交易策略的逻辑与参数在电脑程序运算后,并将交易策略系统化。程序化交易起源于美国1975年出现的“股票组合转让与交易”,即经纪人和专业投资经理可以通过计算机与证券交易所直接联机来实现股票组合的一次性买卖交易,股票市场的订单实现了电脑化。同时,电子信息网络(ECN)在20世纪70年代迅速兴起,极大地提高了交易速度。一方面,科学技术进步推动金融市场发展;另一方面,金融市场发展反过来要求进行金融市场基础制度变革,规范技术在金融市场的运用。
程序化交易及程序化交易其实是这几十年来交易电子化的必然过程。2000年国际证券交易所(ISE)建立了第一个完全电子化的美国期权交易所。到2008年中期,已有7个交易所提供完全的电子化,或者是电子化与交易大厅相结合的期权交易平台。截至2014年,全球许多交易所实现了电子化交易。
目前华尔街大型投行绝大部分的利润和交易量都是由程序化交易完成的,程序化交易相对于手动交易有着极大的优点,有逐渐取代手动交易的趋势,是未来金融市场的发展方向。未来的交易员之间的竞争,将会是程序代码之间的竞争,是智能交易系统之间的竞争,谁的程序技高一筹,谁就可以战胜市场,获得额外的盈利。
截止至2016年,全球已有超过81%的金融经纪公司和全世界四十多个国家的银行选择了迈达克软件作为网络化交易平台;全球超过90%的零售交易量是通过迈达克软件成交的,而这其中大部分又是由 EA 成交。
EA 编程,可以从现在开始:
第二章 MQL4 语言
2.1 预备知识
在学习 MQL4 语言前,首先要打消自己的顾虑,不要被网上流传的“写 MQL4 程序必须具备 C 语言基础”给吓到,大多数人学不会编程就是自己把自己劝退的。
当然,学习计算机语言要求你必须有很好的逻辑思维能力。我们可以通过下面的内容来理解计算机的逻辑。
所有的计算机语言都包含两个语句,一个是条件(if)语句一个是循环(for)语句。
If 语句顾名思义,满足条件就执行,否则就跳过。
for 语句顾名思义,就是在一定条件下反复执行规定的指令,直到条件不满足。
2.1.1 EA 框架
标准的 EA 由5 个部分组成,分别是变量预定义、EA 初始化程序、EA 结束程序、EA 执行程序和自定义变量,如下图:
在int init()的前面是 EA 变量定义区,当 EA 调入到图标时,需要做预设置的参数都在这里定义。
在int start()后面都是自定义函数区间。
2.1.2 指标框架
与 EA 框架一样。区别如下:
1、 变量预定义部分的首行必须定义该指标显示的位置,主图和副图。
2、 EA 初始化程序部分用来定义显示元素的属性。
3、 EA 执行程序部分用来计算指标值。
如下图:
2.1.3 坐标系
自动交易的执行是需要准确定位的,因此就必须建立起明晰坐标系的概念。
图上的横坐标既可以是市场时间也可以是蜡烛序号,在编程的时候通常使用蜡烛序号。 坐标系实际上是三维的,即时间、价格、开仓量,第三维开仓量通常在风险控制策略中考虑,比如出现亏损加大开仓量,或者亏损 20% 平仓等等,因此我们编写程序重点就在时间和价格这二维空间中。
建立起正确的坐标系概念是编程的基础,因为你即将对技术指标进行分析,计算开仓平仓信号,甚至在图表上画线做标记。
2.2 内置变量与函数
MQL4 提供了大量的内置变量与函数,用来取值计算。目前网上有许多的手册,但都是翻译机器从原版英文手册自动翻译的,可读性极差。作者通过积累大量的经验加上自己的理解,精选了部分常用的、实用的内容重新说明如下。
2.2.1 整数相除的方法
在 MQL4 的语法中有 “+ - * /” 四则运算,当你直接用“1/3”的时候,会返回0。
在程序中可以这么来实现的:double i=(1*0.01)/(3*0.01);这时变量 i 才会返回你所要的值:0.33333333。
以上观点仅供参考。祝福大家程序化交易顺利。
风险提示:以上内容仅代表作者或嘉宾的观点,不代表 FOLLOWME 的任何观点及立场,且不代表 FOLLOWME 同意其说法或描述,也不构成任何投资建议。对于访问者根据 FOLLOWME 社区提供的信息所做出的一切行为,除非另有明确的书面承诺文件,否则本社区不承担任何形式的责任。
FOLLOWME 交易社区网址: www.followme.asia
加载失败()