MQL4 Reference MQL4命令手册(完整版)
 
 
 
| 
 
| Preprocessor预处理 预处理程序是一个特殊MQL4的子程序,在程序执行之前预先准备的程序源代码。
 预处理程序会尽可能地读取源代码。代码的结构可能包括MQL4 程序源代码的特殊文件。 对于读取的代码尽可能地按照具体常数分配储存。
 预处理程序允许MQL4 程序参量指定。
 如果# 标志被使用在程序的第一线, 这条线是预处理程序方针。预处理程序方向末端以换行字符结尾。
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| Constant declaration常量声明 使用#define定义常数可以在程序中指定货币对字串符并且定义货币对名称或货币对常数。 稍候,编辑器会按照相应的字串符名称还原所有显示。事实上,这些名称可以由任意数组文本替换:
 #define identifier value
 此常数识别符符合变量名称的规则 值可以是以下任意类型:
 #define ABC          100
 #define PI           0.314
 #define COMPANY_NAME "MetaQuotes Software Corp."
 ...
 void ShowCopyright()
 {
 Print("版权所有 © 2001-2007, ",COMPANY_NAME);
 Print("http://www.metaquotes.net");
 }
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| Controlling compilation编译控制 每个MQL4 程序允添加以#property名称特殊的参量来帮助客户端服务。这是一个内设指标。
 #property 识别值
 常数        类型        描述
 link        string        公司网站的相关连接
 copyright        string        公司名称
 stacksize        int        栈式储存器大小
 library                 资料库;查看任何可出现的功能错误
 indicator_chart_window        void        在图表窗口显示指标
 indicator_separate_window        void        在指定窗口显示指标
 indicator_buffers        int        对于指标计算的数字,最大为 8
 indicator_minimum        double        在指标窗口下端
 indicator_maximum        double        在指标窗口的上端
 indicator_colorN        color        在1和8之间显示线的颜色
 indicator_widthN        int        在1和8之间显示线的宽度
 indicator_styleN        int        在1和8之间显示线的风格
 indicator_levelN        double        在客户指标窗口1和8之间N的水平
 indicator_levelcolor        color        水平线颜色
 indicator_levelwidth        int        水平线宽度
 indicator_levelstyle        int        水平线风格
 show_confirm        void        在脚本运行之前显示确认
 show_inputs        void        在脚本运行之前显示它的属性和确认
 示例:
 #property link        "http://www.metaquotes.net"
 #property copyright   "MetaQuotes Software Corp."
 #property library
 #property stacksize   1024
 在执行模板设定时,编译器将会写入值。
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| Including of files包含文件 #include 命令可以放置到程序的任意部分,但是通常所有文件的源代码被统一放置。调用格式;
 #include <file_name>
 #include "file_name";
 示例:
 #include <WinUser32.mqh>
 #include "mylib.mqh"
 对于 WinUser32.mqh.文件内容预处理程序还原线。三角括号表示WinUser32.mqh文件将会从默认目录调用(通常默认目录 terminal_directory\experts\include)。不需要搜索当前目录。
 如果载开盘价栏内文件名称未锁,搜索将在当前目录中执行(加载的源代码主文件)。 不需要搜索标准目录。
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| Importing of functions导入功能 函数从MQL4 编译模板 (*.ex4 文件) 和执行系统文件模板(*.dll文件)通过。模板名称被指定在#import指令中。来自输入函数和通过参量的兵役数据需要带有完整的描述部分。函数描述会立即按照#import "模板"名称执行。新的#import 命令完成引入输入函数描述部分。
 #import "file_name"
 func1 define;
 func2 define;
 ...
 funcN define;
 #import
 输入函数必须有自己的名称。相同名称的函数无法从不同的模块同时引入。引入的函数名不能与那些内部函数融合。
 因为引入函数是在模块外面被编写, 编译器无法检查通过参量的正确性。这就是为什么, 避免运行错误, 它是必要精确地公开命令的原因。在参量引入函数(从EX4 和从DLL 模块)后, 没有任何值。
 示例:
 #import "user32.dll"
 int    MessageBoxA(int hWnd, string lpText, string lpCaption, int uType);
 #import "stdlib.ex4"
 string ErrorDescription(int error_code);
 int    RGB(int red_value, int green_value, int blue_value);
 bool   CompareDoubles(double number1, double number2);
 string DoubleToStrMorePrecision(double number, int precision);
 string IntegerToHexString(int integer_number);
 #import "Expert示例.dll"
 int    GetIntValue(int);
 double GetDoubleValue(double);
 string GetStringValue(string);
 double GetArrayItemValue(double arr[], int, int);
 bool   SetArrayItemValue(double& arr[], int,int, double);
 double GetRatesItemValue(double rates[][6], int, int, int);
 int    SortStringArray(string& arr[], int);
 int    ProcessStringArray(string& arr[], int);
 #import
 在mql4 程序执行期间引入输入函数,需要使用稍后安装。 这就意味着直到调用输入函数,相应模板(ex4 或 dll)将不会进行加载。
 不建议使用Drive:\Directory\FileName.Ext为文件名安装。MQL4 资料库会从 terminal_dir\experts\libraries 文件夹中卸下。如果没有发现资料库,则没有可能从 terminal_dir\experts文件夹中卸下。
 
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| Standard constants标准常数 为了简化编写程序并使其程序文本更加方便,在MQL4中预定义了标准变量。
 int类型的标准变量与 macro substitutions 类似 。
 此变量是按照用途分组的。
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| Series arrays系列数组 系列数组识别符在ArrayCopySeries(), iHighest() 和iLowest()函数中使用。
 可以是以下任意值:
 常数        值        描述
 MODE_OPEN        0        开价
 MODE_LOW        1        最低价
 MODE_HIGH        2        最高价
 MODE_CLOSE        3        关单价
 MODE_VOLUME        4        应用在iLowest()和iHighest()函数中的成交量
 MODE_TIME        5        应用在ArrayCopySeries()函数中的开柱时间
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| Timeframes图表周期时间 图表的时间周期。可以是以下任意值:
 常数        值        描述
 PERIOD_M1        1        1 分钟
 PERIOD_M5        5        5分钟
 PERIOD_M15        15        15 分钟
 PERIOD_M30        30        30 分钟
 PERIOD_H1        60        1 小时
 PERIOD_H4        240        4 小时
 PERIOD_D1        1440        每天
 PERIOD_W1        10080        每星期
 PERIOD_MN1        43200        每月
 0 (zero)        0        在图表中使用的时间周期
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| Trade operations交易操作 对于OrderSend()函数的交易类型。可以是以下任意值:
 常数        值        描述
 OP_BUY        0        买仓
 OP_SELL        1        卖仓
 OP_BUYLIMIT        2        买挂单交易
 OP_SELLLIMIT        3        卖挂单交易
 OP_BUYSTOP        4        买停挂单交易
 OP_SELLSTOP        5        卖停挂单交易
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| Price constants价格常数 提供的价格常数,它可以是以下的任意值:
 常数        值        描述
 PRICE_CLOSE        0        平仓价
 PRICE_OPEN        1        开仓价
 PRICE_HIGH        2        最高价
 PRICE_LOW        3        最低价
 PRICE_MEDIAN        4        中间价(high+low)/2.
 PRICE_TYPICAL        5        典型价格 (high+low+close)/3.
 PRICE_WEIGHTED        6        价格 (high+low+close+close)/4.
 
 | 
 | 
|  | 
|
|  | 
|  |