Note

从零开始学MT4编程(三)

· Views 55,482

    程序化系统是指设计人员将交易策略的逻辑与参数在电脑程序运算后,并将交易策略系统化。程序化交易起源于美国1975年出现的“股票组合转让与交易”,即经纪人和专业投资经理可以通过计算机与证券交易所直接联机来实现股票组合的一次性买卖交易,股票市场的订单实现了电脑化。同时,电子信息网络(ECN)在20世纪70年代迅速兴起,极大地提高了交易速度。一方面,科学技术进步推动金融市场发展;另一方面,金融市场发展反过来要求进行金融市场基础制度变革,规范技术在金融市场的运用。

    程序化交易及程序化交易其实是这几十年来交易电子化的必然过程。2000年国际证券交易所(ISE)建立了第一个完全电子化的美国期权交易所。到2008年中期,已有7个交易所提供完全的电子化,或者是电子化与交易大厅相结合的期权交易平台。截至2014年,全球许多交易所实现了电子化交易。

    目前华尔街大型投行绝大部分的利润和交易量都是由程序化交易完成的,程序化交易相对于手动交易有着极大的优点,有逐渐取代手动交易的趋势,是未来金融市场的发展方向。未来的交易员之间的竞争,将会是程序代码之间的竞争,是智能交易系统之间的竞争,谁的程序技高一筹,谁就可以战胜市场,获得额外的盈利。

    截止至2016年,全球已有超过81%的金融经纪公司和全世界四十多个国家的银行选择了迈达克软件作为网络化交易平台;全球超过90%的零售交易量是通过迈达克软件成交的,而这其中大部分又是由 EA 成交。

    EA 编程,可以从现在开始:

第二章 MQL4 语言 

2.1 预备知识

    在学习 MQL4 语言前,首先要打消自己的顾虑,不要被网上流传的“写 MQL4 程序必须具备 C 语言基础”给吓到,大多数人学不会编程就是自己把自己劝退的。

    当然,学习计算机语言要求你必须有很好的逻辑思维能力。我们可以通过下面的内容来理解计算机的逻辑。

 从零开始学MT4编程(三)

    所有的计算机语言都包含两个语句,一个是条件(if)语句一个是循环(for)语句。

    If 语句顾名思义,满足条件就执行,否则就跳过。

    for 语句顾名思义,就是在一定条件下反复执行规定的指令,直到条件不满足。

2.1.1 EA 框架

    标准的 EA 由5 个部分组成,分别是变量预定义、EA 初始化程序、EA 结束程序、EA 执行程序和自定义变量,如下图:

从零开始学MT4编程(三)

    在int init()的前面是 EA 变量定义区,当 EA 调入到图标时,需要做预设置的参数都在这里定义。

    在int start()后面都是自定义函数区间。

2.1.2 指标框架

    与 EA 框架一样。区别如下:

    1、 变量预定义部分的首行必须定义该指标显示的位置,主图和副图。

    2、 EA 初始化程序部分用来定义显示元素的属性。

    3、 EA 执行程序部分用来计算指标值。

    如下图:

从零开始学MT4编程(三)

2.1.3 坐标系

    自动交易的执行是需要准确定位的,因此就必须建立起明晰坐标系的概念。

    图上的横坐标既可以是市场时间也可以是蜡烛序号,在编程的时候通常使用蜡烛序号。 坐标系实际上是三维的,即时间、价格、开仓量,第三维开仓量通常在风险控制策略中考虑,比如出现亏损加大开仓量,或者亏损 20% 平仓等等,因此我们编写程序重点就在时间和价格这二维空间中。

从零开始学MT4编程(三)

    建立起正确的坐标系概念是编程的基础,因为你即将对技术指标进行分析,计算开仓平仓信号,甚至在图表上画线做标记。

2.2 内置变量与函数

    MQL4 提供了大量的内置变量与函数,用来取值计算。目前网上有许多的手册,但都是翻译机器从原版英文手册自动翻译的,可读性极差。作者通过积累大量的经验加上自己的理解,精选了部分常用的、实用的内容重新说明如下。

2.2.1 整数相除的方法

    在 MQL4 的语法中有 “+ - * /” 四则运算,当你直接用“1/3”的时候,会返回0。

    在程序中可以这么来实现的:double i=(1*0.01)/(3*0.01);这时变量 i 才会返回你所要的值:0.33333333。

以上观点仅供参考。祝福大家程序化交易顺利。

Disclaimer: The content above represents only the views of the author or guest. It does not represent any views or positions of FOLLOWME and does not mean that FOLLOWME agrees with its statement or description, nor does it constitute any investment advice. For all actions taken by visitors based on information provided by the FOLLOWME community, the community does not assume any form of liability unless otherwise expressly promised in writing.

FOLLOWME Trading Community Website: https://www.followme.com

If you like, reward to support.
avatar

Hot

鼓掌
太难
@社区里收益率净值余额线最靓的仔:难者不会,会者不难。
学习了
有啥用
难得,做基础内容
你可以教我写ea吗,我有好策略
既然以后都是EA之间竞争,那还学个屁,难道你的EA比大头行的EA更牛逼,不还是个韭菜吗?还不如手动更灵活,又能磨砺自己的心性。
@8额度 EA剃头皮可以刷单返佣,
学习
加油!👍
继续努力
👍加油
大笑
👍
补充一下,init,start这类函数不要翻译成框架,很别扭,框架指的是底层源码架构,叫生命周期会比较专业一些,类似人的生老病死
厉害👍 哈哈~
王阳Shine
@VEER量化对冲
@VEER量化对冲 大笑大笑大笑与你交流非常愉快
学习了!
@彼岸的风光:强壮
这个需要一定基础
是的啊!
哈哈
👍
路过
👍👍

Pull-up Update