新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1187

 
Сергей Таболин:

我可能是错的,但我认为你根本不知道EA是如何工作的。你说的 "程序正在运行 "是什么意思?

一个提示--首先,找出OnInit、OnTick和OnDeinit是什么。我想,一切都会水到渠成的 ))))

一般来说,从你的回答来看,你自己并不真正了解这个项目是如何运作的。既然这似乎是一个愚蠢的问题。是的,就像前面的评论者认为的那样,它停止了。从其他语言的编程经验来看,我认为它是在一个循环中执行其主体,当有事件发生时,它就潜入其中。如果程序以循环方式执行其主体,这就解释了为什么程序是 这样写的
 

大家好!我正在测试MT4中的专家顾问。
,请您告知如何使用MQL4函数Print()在MT4测试日志中打印 1次,并且只打印最后一小时的数值。下面是一个简单的代码。

int g;
void OnTick()
{
if (Hour()>g)
{
Print("------------------------------------=",Hour());
g=Hour();
}
}

Print()在每小时的МТ-4日志文件中被打印。

2020.06.24 15:54:12.250 2010.01.04 06:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=6
2020.06.24 15:54:12.249 2010.01.04 05:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=5
2020.06.24 15:54:12.249 2010.01.04 04:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=4
2020.06.24 15:54:12.248 2010.01.04 03:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=3
2020.06.24 15:54:12.247 2010.01.04 02:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=2
2020.06.24 15:54:12.247 2010.01.04 01:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=1
2020.06.24 15:54:12.214 2010.01.01 00:00:00  ОПТИМ КОДА test started
2020.06.24 15:54:12.196 TestGenerator: spread set to 2
2020.06.24 15:54:09.838 Expert ОПТИМ КОДА EURUSD,M1: loaded successfully
2020.06.24 15:54:09.827 Expert ОПТИМ КОДА EURUSD,M1: removed

但我需要Print()只在MT-4记录器中打印一次,并打印出每小时的最后一个值。合理的做法是,在日志中出现最后一个Print()条目后,删除倒数第二个,即前一个Print()条目。我知道如何删除一个订单,一个图形对象。但我还不知道如何从日志中删除Print()条目。

谢谢你的帮助。

Документация по MQL5: Общие функции / Print
Документация по MQL5: Общие функции / Print
  • www.mql5.com
Данные типа double выводятся с точностью до 16 десятичных цифр после точки, при этом данные могут выводиться либо в традиционном либо в научном формате – в зависимости от того, как запись будет наиболее компактна. Данные типа float выводятся с 5 десятичными цифрами после точки. Для вывода вещественных чисел с другой точностью либо в явно...
 
Valeriy Yastremskiy:
不,剔号不是由审查员切断的。如果EA正在运行,则跳过传入的ticks。当它完成后,下一次勾选将在待机模式下再次启动它。
按照你的逻辑,似乎程序永远不会进入地段设置功能。但官方出版商的程序就是这样写 的。我在以前的文章中写过函数的顺序。
 
我再问一遍,我对前面的评论者有了新的想法。官方的例子建议在程序的主体中计算手数,但在每一个tick 上计算不是很合理吗?在程序的正文中写的是什么?
 
我无法安装EA。我应该怎么做? 安装按钮无法点击。更准确地说,当我按下它时,什么也没有发生。
 
Сергей Таболин:

卡拉什还是马克西姆?))))))))))))


问题。

有一个脚本。它不能用标准手段从EA发射。因此,我们必须把它作为一个函数添加到专家顾问中。但我不想在编辑脚本时在专家顾问中做同样的修改。如何做到这一点?通过内含物的方式?

类)和对象
或通过粘贴)
 
Ivan_Invanov:
按照你的逻辑,似乎软件永远不会进入地段设置功能。但这是官方出版商的程序编写 方式。我在以前的帖子中写了函数的顺序。
初始化和非初始化工作一次。在开始和结束时。
 
Ivan_Invanov:
一般来说,从你的回答来看,你自己并不真正了解这个项目是如何运作的。因此,这似乎是一个愚蠢的问题。就像前面的评论者认为的那样,它停止了。从其他语言的编程经验来看,我认为它是在一个循环中执行其主体,当有事件发生时,它就潜入其中。如果程序以循环方式执行其主体,这就解释了为什么程序是 这样写的

从你的评论来看,你也不明白这一点。(((

这不是 "其他语言",这是MQL!

也给你建议--搞清楚这群人到底是怎么工作的。

所有其他功能都是派生的。

弄清楚。

 
Ivan_Invanov:
是的,我不明白,所以我在问。我知道ontick是一个事件,但我不明白EA之后会去哪里。它将进入程序的主体,并计算出手数,否则就不去? 为什么官方出版商的EA会被写成 这样?

而你认为这里有人会开始为你个人重写文件?只是为了你?在这里?擦亮自己的眼睛....

 
Ivan_Invanov:
是的,我不明白,这就是我所问的。我知道ontick是一个事件,只是我不清楚EA随后去了哪里。为什么出版商会这样 呢?

你会展示代码(但你必须明白,如果你展示代码,那么版权就在众目睽睽之下),这些人将看一看EA的方案,并说什么是所谓的,什么是没有打开的交易或不。