📅 财经日历 📊 实时波动 📈 大盘云图 📶 行情走势 🆚 投机情绪 🚀 今日热点

    MQL4-预处理程序

    alizee LV18
    2012-12-03 · 6095 阅读
    预处理程序是一个特殊MQL4的子程序,在程序执行之前预先准备的程序源代码。
    预处理程序会尽可能地读取源代码。代码的结构可能包括MQL4 程序源代码的特殊文件。 对于读取的代码尽可能地按照具体常数分配储存。
    预处理程序允许MQL4 程序参量指定。
    如果# 标志被使用在程序的第一线, 这条线是预处理程序方针。预处理程序方向末端以换行字符结尾。
    MQL4包括4种预处理程序:
    A、 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");
      }
    B、 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
    在执行模板设定时,编译器将会写入值。
    C、 Including of files
    #include 命令可以放置到程序的任意部分,但是通常所有文件的源代码被统一放置。调用格式;
    #include <file_name>
    #include "file_name";
    示例:
    #include <WinUser32.mqh>
    #include "mylib.mqh"
    对于 WinUser32.mqh.文件内容预处理程序还原线。三角括号表示WinUser32.mqh文件将会从默认目录调用(通常默认目录 terminal_directory\experts\include)。不需要搜索当前目录。
    如果载开盘价栏内文件名称未锁,搜索将在当前目录中执行(加载的源代码主文件)。 不需要搜索标准目录。
    D、 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文件夹中卸下。
    最后感谢大家,欢迎回帖批评指正。

    ""
    还没有人打赏,支持一下
    回复

    举报

     

    回答|共 6 个

    竹乐居士 LV4

    发表于 2013-12-30 21:58:21 | 显示全部楼层

    [s:144][s:144]

    wyzq12315 LV1

    发表于 2014-11-18 11:07:13 | 显示全部楼层

    看看什么EA,,,

    NWFB LV3

    发表于 2014-11-22 23:46:22 | 显示全部楼层

    没有使用说明书

    流金岁月 LV3

    发表于 2014-11-23 16:38:21 | 显示全部楼层

    谢谢分享!!!!!

    ririge LV9

    发表于 2014-11-24 12:35:07 | 显示全部楼层

    多谢分享 看看是什么

    小水滴 LV3

    发表于 2014-11-24 15:23:23 | 显示全部楼层

    赚钱,赚积分。顶....
    您需要登录后才可以回帖 登录 | 注册

    提醒: 禁止引战、谩骂、灌水内容

    微信二维码

    有问题联系客服