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文件了。



0 0
原创粉丝点击