MQL4编程学习笔记(二)
来源:互联网 发布:aframe.js 加载obj 编辑:程序博客网 时间:2024/05/29 10:07
本系列学习笔记翻译和整理自S. Kovalyov的Programming in Algorithmic Language MQL4。
一、文件系统(file system)
客户端依据地址子目录(location in subordinate directories)来识别程序类型。
所有的应用程序将会集中在目录ClientTerminal_folder\experts(其实不然,为了方便描述以此为例)。 EA,脚本和习惯指标都存放在相对应的目录里(图1)。
图1 演示版本
图2 我的版本(说实话,跟演示版本差好多)
二、文件类型(file types)
在MQL4里,总共有3种文件类型携带有程序代码:mq4,ex4和mqh。
1、mq4
mq4类型代表了程序的代码。MetaEditor(图3红圈)会用来创建程序代码。mq4不能在客户端直接被执行,要被编译成ex4文件后才能够使用。
图3
2、ex4
ex4是被编译后产生的文件。ex4文件并不指明其包含的程序类型(EA或脚本或习惯指标)。以ex4为拓展名的文件拓可以作为库文件(library files)。
3、mqh
mqh文件是包含文件(include files)。它是一些常用程序块(frequently used blocks of custom programs)的源码。在编译环节,这些文件可以被包含在EA,脚本和习惯指标的代码之内。常用的mqh文件包含重要函数的描述(例如,stdlib.mqh和Winuser32.mqh)或常用常量或变量的描述。通常,mqh文件被存放在目路ClientTerminal_folder\experts\include。
由旧版本MetaEditor编译而成的文件可能无法运行且代码以灰色显示。
值得注意的是,包含文件(include files)通常比函数库(libraries)更受欢迎,因为库函数调用将会有一些附加消耗!
三、创建和使用程序
1)客户端的结构
为了方便操作,MetaEditor有内置工具栏(built-in toolbars):导航器(Navigator,Ctrl+D)和工具箱(Toolbox,Ctrl+T)。
2)创建一个新程序
图4
图5
由创建向导产生的代码只是一个框架,如:
//+------------------------------------------------------------------+//| MyFirstEA.mq4 |//| Alaya |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright "Alaya"#property link "https://www.mql5.com"#property version "1.00"#property strict//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int init() {//--- //--- return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() {//--- }//+------------------------------------------------------------------+
代码1
四、程序外貌(program appearance)
这是我们的第一个程序,注意一下批注和分块。
//--------------------------------------------------------------------// MyFirstEA.mq4// To be used as an example in MQL4 book.//--------------------------------------------------------------------int Count=0; // Global variable//--------------------------------------------------------------------int init() // Spec. funct. init() { Alert ("Funct. init() triggered at start"); // Alert return(0); // Exit init() }//--------------------------------------------------------------------int start() // Spec. funct. start() { double Price = Bid; // Local variable Count++; // Ticks counter Alert("New tick ",Count," Price = ",Price);// Alert return(0); // Exit start() }//--------------------------------------------------------------------int deinit() // Spec. funct. deinit() { Alert ("Funct. deinit() triggered at exit"); // Alert return(0); // Exit deinit() }//--------------------------------------------------------------------
代码2
变量声明放在程序的最前面。
顺便一提,我电脑上产生的框架(代码1)和教程上的不一样,但是代码2是直接从教程上复制过来的,不过依然可以编译。
五、程序编译(program compilation)
在导航框里选中文件右键点击,选择编译。
图6
编译没问题后,拖到Experts文件夹下(图7),重启MT4,在用户端导向栏下就会有新增项目(图8)。
图7
图8
六、运行程序
把导航栏里选中的EA程序左击拖动到你感兴趣的图表上,比如图8的USECHF。
图9
七、关闭程序
右击图表-EA交易程序-删除。
注意:值得注意的是,mq4文件在放入合适的目录后,在MetaTrader启动后会自行编译成可执行文件且显示在客户端里,实际上,用户现在已经不需要面对ex文件了。
- MQL4编程学习笔记(二)
- MQL4编程学习笔记(一)
- 《用MQL4编程》读书笔记(2)- MQL4基本知识
- 《用MQL4编程》读书笔记(4)- MQL4的程序结构
- 《用MQL4编程》读书笔记(1)
- 《用MQL4编程》读书笔记(6)- 变量
- mql4 编程框架
- MQL4关键函数学习
- MQL4关键函数学习
- 《用MQL4编程》读书笔记(3)- 专用编辑器MetaEditor
- 《用MQL4编程》读书笔记(5)- 运算操作
- 多线程编程学习笔记(二)
- UNIX Shell编程 学习笔记(二)
- LinuxC编程一站式学习笔记(二)
- java编程思想学习笔记(二)
- VC多线程编程学习笔记(二)
- c++编程规范学习笔记(二)
- 《OpenGL游戏编程》学习笔记(二)
- fortunes包 format包
- linux用户管理(2)
- NYOJ--49(动态规划)-题目----------------------------- 开心的小明
- Linux下的日志文件夹中常见日志文件与作用对照表
- java_基础_java面向对象编程的四大特征
- MQL4编程学习笔记(二)
- C++ 指定字面值的类型
- 输出螺旋矩阵
- Leetcode:Largest Number
- 致自己的一封信
- poj 3294 Life Forms
- 策略模式
- R语言从字符串中读取dataframe方法
- POJ 3083-Children of the Candy Corn(dfs+bfs)