下载MetaTrader 5
要添加评论,请登录注册
创建论坛主题并提高您的等级
Fa Cao
1143
Fa Cao 2013.11.14 05:24 

如:

#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

int init()
  {

   return(0);
  }

int deinit()
  {
   return(0);
  }

int start()
  {
  return(0);
  }

我理解的顺序是 先执行 init()进行初始化,然后执行 start(),最后执行deinit()。

但是在编程序测试的时候,发现顺序好像并非如此,而直接从start()开始。

求详解。

nolandcn
3
nolandcn 2013.11.15 05:00  
init()和deinit()在EA加载和删除时运行一次。start()是tick驱动。
Fa Cao
1143
Fa Cao 2013.11.15 09:08  
nolandcn:
init()和deinit()在EA加载和删除时运行一次。start()是tick驱动。


在加载的时候,start()程序是不是会经过预编译,而这个预编译是不是最先从start()函数开始?

BaiChun Li
838
BaiChun Li 2013.11.30 06:33  

如说的是运行,那个楼上回答就已经基本完毕了。

通常:

第一个执行的肯定是init(),当然如果它里面什么都没有呢?那接着就会继续往下执行。

第二个执行的肯定是start(),这个就说不其他的了,没什么补充的。

最后执行的是deinit(),只有程序被卸载的时候才会实行,之前的几个函数都运行过了。

我不知道什么地方说的“三大块”,当然实际上要看具体的情况完全可以只有一个start()的,而且绝大多数情况实际上都是或者类似是这样的,因为没有什么其他事情要做或者里面根本就不需要其他代码。

如果说的是编译中的处理过程或者干脆要研究的是反编译,那我的确就不清楚了。

okwh
1629
okwh 2013.12.03 04:19  

载入时执行init(),完成准备

在新数据到来时执行一次start(),所以是随时间和价格反复执行。

退出前执行deinit() 。

出现问题或某种需要刷新时,重新开始

/
要添加评论,请登录注册