mql----Program Run 程序运行
发布日期:2021-10-16 07:12:12 浏览次数:0 分类:技术文章

Program Run 程序运行

1、start与OnStart区别:

MT4更新之后,如果选择新建脚本,默认是下面的格式:void OnStart(),但是,我看过很多其他MT4教学视频的时候,MT4脚本默认的都是下面的格式:int start()

MT4 build 600 后的新函数名 void OnStart(), 如果你的 MT4 是还是旧版的, 可以改为 void start()

2、请问OnTick和start的区别

start是老版本mql4里面使用的,OnTick是新版本mql4里面使用的,都是每来一个价格运行一次的主函数。作用一样,但是一个ea里面只能用其中一个函数。

void OnTick();
只有在EA交易依附的图表中,交易品种收到新订单号时EA交易会生成新订单号事件。——订单号事件只为EA交易而生!

自定义指标或者脚本中确定OnTick()函数是无效的,因为订单号事件不为它们而生。
订单号事件只为EA交易而生,但是却不意味着EA交易需要OnTick()函数,因为EA交易不仅需要生成订单号,也需要生成计时器OnTimer,预定事件和图表事件。

init(), deinit() 和 start() 的预定义函数一直保持着兼容性,但是,现在使用OnInit(), OnDeinit(), OnStart(), OnCalculate() 和 OnTick()来代替。此外,已经实施新的预定义OnTimer(), OnChartEvent() 和OnTester() 处理函数。在之前的MQL4中,预定义函数可以有任何参数和任何返回类型。这些函数可以通过自己的名字进行调用,而无需签名。在新版MQL4中,所有预定义函数应完全匹配他们的签名。换句话说,他们应该清晰地定义设置参数和返回类型。

在MQL4 中存在三种预定义名称函数:
init() 在载入时调用,可以用此函数在开始自定义指标或者自动交易之前做初始化操作。
start() 是基本函数。对于智能交易,在下一个替克进入之后被调用。对于客户指标,在指标添加到图表之后,客户端开始(如果指标添加到图表)并且下一个替克进入之后,函数被调用。对于脚本,在脚本被添加到图表之后立即执行并初始化。如果在模板中不存在start()函数,模板 (智能交易,脚本或客户指标) 不能开启。
deinit() 当数据变动时触发,对于自定义指标或者自动交易的编程主要依靠此函数进行预定义函数需要一些参量。不过,当这些参量被客户端调用时,外部没有参量提供。 start(),init()和 deinit()函数从模板的任何一点按照常规调用,等于其他函数。
不建议从init()函数调用 start()函数或是执行交易业务,作为图表数据,市场开价格。模板的初始化会出现残缺。这时,init() 和 deinit() 函数必须尽可能结束运行。在调用start()函数之前,尝试重新全面开启运行。


1、程序在附加图表之后,它开始应用init()作用运行。

在客户端开始和历史数据加载,图表周期改变,由MetaEditor 编译程序,智能和客户指标的输入数据设定后,附加到图表上的智能交易客户指标将会运行。在账户发生改变后交易将会初始化。
2、每一个附加到图表上的交易必须在deinit()的作用协助下工作。

deinit()作用运行在客户端内停止,在图表中关闭在商品或图表周期改变之前,成功重新编译程序,改变输入数据或改变账户。在deinit()函数执行中,您可以使用 UninitializeReason()函数查看原因.deinit()函数必须在2.5 秒内执行.如果函数没有在指定的时间段内执行,它将强制完成。脚本除外,它的运行不取决于任何外界的命令. 如果脚本工作时间过长, 可以应用外部命令结束运行 (从图表的菜单中删除脚本,在原有的图表上添加新的脚本,改变图表的商品或图表周期).在这种情况下,deinit()函数限制在2.5 秒内.
3、新报价格的输入,start()函数将会添加到智能交易和客户指标上执行.

当新报价格进入时,如果start()函数没有开启运行,新的报价格会被忽略. function launched at the preceding quote was running when a new quote came, 随后,只有当新报价格进入后start()函数才会运行. 对于客户指标,由于新报价格的输入当前图表商品或期限发生改变, start()函数将会开启重新计算.在交易属性窗口打开时start()函数 停止运行.迟些在交易执行中不会打开.

从图表中拆卸程序, 改变商品或图表周期,改变账户,关闭图表,客户端的改变将会中断程序的执行.如果start()函数在给出停止命令的时刻执行 , 时间限制在2.5 秒. 程序能够尝试关闭IsStopped()函数并结束.


脚本的执行不取决于报价格的输入.在商品或图表周期发生改变时,脚本将停止运行并且中断从客户端上下载.
脚本和交易的运行在自己的界面.客户指标则是在主界面上运行. 如果客户指标中出现iCustom() 函数, 这个指标的运行是在程序中显示的. 资料库函数在程序界面.

上一篇:Tableau绘制雷达图
下一篇:人力成本BI中数据的连接(数据库字段)