打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
(8)MQL4程序
程序结构

       其中特殊函数被客户端调用执行,内建函数与用户自定义函数被程序调用执行。这意味着一个程序代码必须写在函数内,否则将不会被被执行。

       Tick 是在某一时刻到来的、针对某一货币对的、市场新的报价事件。Ticks 是从远处服务器传到本机客户端的。

      Control 控制是指程序内部的代码流程,及其与客户端宿主平台MT4的交互。

一、MQL4 程序由以下几大部分组成:

 

1.头部

2.特别函数 init()

3.特别函数 start()

4.特别函数 deinit()

5.用户自定义函数 

二、可能的排列顺序:
禁止在一个函数中对另一个函数进行描述。

三、代码的执行顺序:

Header part:

1.关于程序的基本信息

2.全局变量的声明与初始化

Special function init ( ):

1.全局变量初始化

2.绘图对象输出

3.信息显示

Special function start ( ):

1.根据信息环境进行必要计算

2.交易请求打开、关闭和修改

Special function deinit ( ):

删除没必要的绘图对象和全局变量

User defined function( ):

四、特殊函数的特性:

init( ):

1.EA中:

   a.MT4启动并装入历史数据之后

   b.更换货币对之后

   c.更换K线图时间周期之后

   d.程序重新编译之后

   e.改变EA设置参数之后

   f.变更用户账号之后

2.指标中:

   a.MT4启动之后

   b.更换货币对之后

   c.更换K线图时间周期之后

   d.程序重新编译之后

   e.改变EA设置参数之后

3.脚本中:

   置入窗口之后

stat( ):

1.EA中:

   新报价(tick)到来之后

   在start( )执行时,有新报价到来时,则其被忽略不进行处理。

   当自动交易关闭状态时,start( )不能被调用执行。

   属性窗口打开时,start( )不能被调用执行。

2.指标中:

   a.新报价(tick)到来之后

   b.置入主窗口之后

   c.改变窗口大小之后

   d.更换货币对之后

   e.更换K线图时间周期之后

3.脚本中:

   一次性调用执行,是在脚本由init()初始化之后。

deinit( ):

   客户端调用它的原因是:MT4关闭、主窗关闭、更换货币对、改变K线周期、程序重新编译、改变输入参数、改变用户账号等。

   函数deinit()执行限于2.5秒内完成,若超时则被系统强行终止。

1.EA中:

   a.EA程序被关闭时

   b.新的同类程序置入主窗时

2.指标中:

   在新指标加入主窗时,不会调用deinit( )。

3.脚本中:

   a.脚本程序被关闭时

   b.新的同类程序置入主窗时

五、函数描述与调用:

函数描述:

1.函数头:返回值的类型、函数名、形式参数列表

2.函数体:简单操作符、复合操作符、调用其他函数

函数调用:

函数名、传递参数列表

函数类型区别:

函数类型          

函数描述          

函数调用          

特殊函数

适用的

不适用(*)

内建函数

不适用

适用的

用户自定义函数

适用的

适用的


(*)在技术上虽然特殊功能可以从一个程序,不建议这么做。

    六、形式参数、传递参数和返回值:
    形式参数:
    1.形式参数数量不超过64个
    2.只能是变量
    3.可以通过相应的常数定义默认值
    传递参数:
    1.传递参数数量不超过64个
    2.传递参数的数量、类型、顺序必须与调用函数中的形式参数相匹配
    3.只有变量、表达式、常数可以作为参数传递
    4.调用函数形式参数存在默认参数值的传递参数可以被跳过
    5.可以指定一个空列表(括号必须存在)
    返回值:
    1.必须匹配函数给出的函数头类型
    2.返回的表达式可以是变量、常数、函数调用
    3.可以返回void类型(无括号)
    七、案例分析:
    int start()                           
      {                                    
       int n;                               
       int T=15;                            
       for(int i=Func_yes_ret(T);i<=10;i++)   
         {                               
          n=n+1;                           
          Alert ("n=",n," i=",i);    
         }                                    
       return;                            
      }                                   
    //--------------------------------------------------------------------
    int Func_yes_ret (int Times_in)         
      {                                       
       datetime T_cur=TimeCurrent();        
       if(TimeHour(T_cur) > Times_in)       
          return(1);                         
       return(5);                          
      }                      
     
              
    本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
    打开APP,阅读全文并永久保存 查看更多类似文章
    猜你喜欢
    类似文章
    【热】打开小程序,算一算2024你的财运
    《用MQL4编程》读书笔记(4)
    MT4智能交易编程教程- 从 MQL4 到 MQL5
    mt4编程→简明教程+速成基础
    MT4智能交易 (程式的执行)
    MySQL UDF
    mql4 新版编程框架
    更多类似文章 >>
    生活服务
    热点新闻
    分享 收藏 导长图 关注 下载文章
    绑定账号成功
    后续可登录账号畅享VIP特权!
    如果VIP功能使用有故障,
    可点击这里联系客服!

    联系客服