首页学院交易策略EA智能交易文章详细

外汇EA:MT4.0编程函数库

外汇网2021-06-17 09:42:19 63
汇外网 - 全球专业的黄金外汇门户导航行情资讯网站

MT4.0和3.x对比,编程语言迥然不同,差不多是C语言的翻版,所以有一部分C语言基础是很容易学会MT编程的。

MT4.0可以编撰的程序有好几类,首要是自动交易程序和指标,预期大家均为为了给自己的投资策略,受于我的精力有限,所以接下去只介绍自动交易程序。

1. MT程序的语法

MT程序既然是C语言的翻版,语法和C语言诚然很靠近了,用有限的篇幅来看明其语法疑似是一个不能完成的任务,我这里只能告诉大家如何去学习。

语法表明可以在Meta Editor的帮助中寻到,在工具栏上点MQL Navigator,就会弹出MT编程的导航,其中Dictionary就是语言和函数库的帮助。

在这个树状帮助目录下,语法的表明在Basic下,首要包含Syntax, Data type, Operations & Expressions, Operators, Functions, Variables, Preprocessor

假使会C的话,粗略看一下即可,假使不会,结合例程学习一遍吧。

受于帮助基本是英文的,所以刚开始学依旧有难度的,然而没有办法,我也帮不上忙,大家有困难就提吧,我尽量回答。啥时候能出个中文版的就好了。

学习的时机,从网上搜一部分现成的程序执行学习和修改是加速学习的一个办法,上一次我贴的Grid的交易程序就是一个很好的学习的例子。

2. 函数库

MT的函数库帮助执行了分类,看上去依旧比较方便的。这里也没有办法详细介绍,做一个扼要介绍。

依旧在帮助的Dictionary下,看这些帮助要挑战一下大家的英文,特别要涉及到金融和计算机专业英语。

包含下方几类:

(1) Stardard constants

也就是系统定义的标准常量,首要是一部分枚举类型和窗口常量等,一般先不用管它,在别的地方会链接过来。

(2) Predifined variables

一部分系统常量,包含购入价,出售价,最高、最低价等,依旧很有用的,然而不太多,挨个儿看一下吧。

(3) Account Information

账户相关的函数

(4) Array functions

数组处理函数。

(5) Common functions

常用处理函数。

(6) Conversion functions

转换函数,首要是字符串和首要类型之间的转换函数。

(7) Custom Indicators

编撰自定义指标用到的函数,假使不编撰自定义指标的话,可以不管它。

(8) Date&Time functions

时间日期相关的函数

(9) File functions

文件处理函数

(10) Globle variables

全局变量相关的处理函数。

(11) Math & Trig

数学计算函数

(12)Object functions

对象处理函数,首要是在图表中处理对象的函数,对象是指直线、文本等。

(13) String functions

字符串处理函数。

(14) Technical indicators

技术指标函数,相信大家一定会经常用到的。大家通过指标的英文,应当比较容易看出来谁是谁。

(15) Trading functions

交易函数。这一类对自动交易系统是很重要的。

(16) 万得ow functions

窗口处理函数,基本不需要用到。

3. 创建程序

在MT的程序组中,有一个Meta Editor,这就是MT的编译器,依旧很容易上手的。用过Visual Studio C++的人一看,稍微熟,对吧?

首先,点击菜单File->New,弹出对话框,程序类型选择Expert Advisor,后面按导航操作输入名称即可。

如此一个简单的MT空白交易程序就创建了,点按钮Compile或直接按快捷键F5就可以编译通过了。由于是空白的,这时候它什么也不能干。

注意:自动交易程序一定要存放在安装目录下的Experts子目录。

4. 修改

(1)全局变量

在程序的开头,可以定义一下全局变量。前面加extern的全局变量的值,在自动交易程序起步的时机可以直接在MT改,不需要从新编译。

(2)入口函数

MT程序的调用入口是start()函数,和C程序的main()函数是一样的,一般就在这里写处理过程即可。

(3) 子函数

比较复杂的过程,可以写子函数,在start()函数里调用子函数。

5. 例程:下方是在MT官方网站的论坛下hdb写的Grid自动交易程序,供参考。

#property copyright "外汇联盟 www.FXunion.com QQ群144033"

#property link ""

//#property version"1.8"

// DISCLAIMER ***** IMPORTANT NOTE ***** READ BEFORE USING *****

// This expert advisor can open and close real positions and hence do real trades and lose real money.

// This is not a 'trading system' but a simple robot that places trades according to fixed rules.

// The author has no pretentions as to the profitability of this system and does not suggest the use

// of this EA other than for testing purposes in demo accounts.

// Use of this system is free - but u may not resell it - and is without any garantee as to its

// suitability for any purpose.

// By using this program you implicitly acknowledge that you understand what it does and agree that

// the author bears no responsibility for any losses.

// Before using, please also check with your broker that his systems are adapted for the frequest trades

// associated with this expert.

// 1.8 changes

// made wantLongs and wantShorts into localvariables. Previously, if u set UseMACD to true,

//it did longs and shorts and simply ignored the wantLongs and wantShorts flags.

//Now, these flags are not ignored.

// added a loop to check if there are 'illicit' open orders above or below the EMA when the limitEMA34

//flag is used. These accumulate over time and are never removed and is due to the EMA moving.

// removed the switch instruction as they dont seem to work - replaced with if statements

// made the EMA period variable

//

//

// modified by cori. Using OrderMagicNumber to identify the trades of the grid

extern intuniqueGridMagic = 11111;// Magic number of the trades. must be unique to identify

// the trades of one grid

extern double Lots = 0.1;//

extern double GridSize = 6;// pips between orders - grid or mesh size

extern double GridSteps = 12;// total number of orders to place

extern double TakeProfit = 12 ;// number of ticks to take profit. normally is = grid size but u can override

extern double StopLoss = 0;// if u want to add a stop loss. normal grids dont use stop losses

extern double UpdateInterval = 1;// update orders every x minutes

extern boolwantLongs = true;// do we want long positions

extern boolwantShorts = true;// do we want short positions

extern boolwantBreakout = true;// do we want longs above price, shorts below price

extern boolwantCounter = true;// do we want longs below price, shorts above price

extern boollimitEMA = false;// do we want longs above ema only, shorts below ema only

extern intEMAperiod = 34;// the length of the EMA.. was previously fixed at 34

extern double GridMaxOpen = 0;// maximum number of open positions : not yet implemented..

extern boolUseMACD = false;// if true, will use macd >0 for longs only, macd >0 for shorts only

// on crossover, will cancel all pending orders. This will override any

标签:

随机快审展示
加入快审,优先展示

加入VIP