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(“https://www.metaquotes.net”);
}
Controlling compilation 编译控制
每个 MQL4 程序允添加以#property 名称特殊的参量来帮助客户端服务。 这是一个内设指标。
#property 识别值
示例:
#property link “https://www.metaquotes.net”
#property copyright “MetaQuotes Software Corp.”
#property library
#property stacksize 1024
在执行模板设定时,编译器将会写入值。
Including of files 包含文件
#include 命令可以放置到程序的任意部分, 但是通常所有文件的源代码被统一放置。 调用格式;
#include
#include “file_name”;
示例:
#include
#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 文件夹中卸下。
|
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(“https://www.metaquotes.net”);
}
Controlling compilation 编译控制
每个 MQL4 程序允添加以#property 名称特殊的参量来帮助客户端服务。 这是一个内设指标。
#property 识别值
示例:
#property link “https://www.metaquotes.net”
#property copyright “MetaQuotes Software Corp.”
#property library
#property stacksize 1024
在执行模板设定时,编译器将会写入值。
Including of files 包含文件
#include 命令可以放置到程序的任意部分, 但是通常所有文件的源代码被统一放置。 调用格式;
#include
#include “file_name”;
示例:
#include
#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 文件夹中卸下。