初学者的问题 MQL5 MT5 MetaTrader 5 - 页 282

 

amavladi:


我想了解循环的机制,这样我就可以写一个复杂的EA。操作员 "返回 "将我扔到一个新的 "开始"。我并不总是需要它。

谢谢你的答复。

不客气。问题是,如果你想在 "第三方 "的帮助下理解 "机制",那么你需要向那些非常 "第三方 "提出问题,即描述你想从算法中得到什么,而不是你得到了什么。

"循环的循环 "不是一个问题,因为如果循环中除了继续操作符 之外没有任何东西,那么它必然会循环,直到循环条件变为假。

也就是说,你不应该问一些愚蠢的问题,比如:"在不工作的代码中什么不工作"。毕竟,即使是喝醉了的刺猬也知道,不工作的代码不工作,因为它是不工作的。但是,除了代码的作者之外,没有心灵感应能力的人都无法理解工作代码中应该有什么作用。

 
amavladi:

帮助!

我在这个网站上寻找好心人,请对我的错误提出建议。我刚刚开始学习MQL4,写了一个简单的专家顾问,打开一个订单,然后用一个小的止盈 来关闭它。我试着在strategy tester中检查,发现如果这样写的话,我的for和while语句会循环。

//--------------------------------------------------------------------

   while (Ask<=Level)

   { RefreshRates();

     continue;

   }         

那么在这里,一切似乎都很简单。

策略测试器生成一个tick,调用start(),并等待该函数完成后生成下一个tick。

因此,如果你想让你的机器人不挂在测试器上,请远离这样的结构。在你的案例中,Ask的价格在退出start()之前不会改变。

而当收到返回命令时,函数启动将终止,测试者将明白应该产生下一个tick。

此外,不是在策略测试器中,而是在真实模式中,你的代码将按照你的期望工作,因为RefreshRates将更新Ask价格。

你的代码运行良好,但对于策略测试者来说,它进入了一个无限循环。

在这里,使用回报将有所帮助。当你获得更多的经验时,你会摆脱这种构造。祝你们好运。

 
Reshetov:


也就是说,你不应该问一些愚蠢的问题,如 "在不工作的代码中什么是不工作的"。毕竟,即使是一只喝醉了的刺猬也知道,不工作的代码不工作,因为它不工作。但是,除了代码的作者之外,没有心灵感应能力的人都无法理解工作代码中应该有什么作用。

代码是有效的,只是总有一些新手不知道的细微差别......
 
Reshetov:

不客气。问题是,如果你想在 "第三方 "的帮助下理解 "力学",那么你需要向这些 "第三方 "提出问题,即描述你想从算法中得到什么,而不是你得到什么。

"循环的循环 "不是一个问题,因为如果循环中除了继续操作符 之外没有任何东西,它必然会循环,直到循环条件变为假。

也就是说,你不应该问一些愚蠢的问题,比如:"在不工作的代码中什么不工作"。毕竟,即使是喝醉了的刺猬也知道,不工作的代码不工作,因为它是不工作的。但是,除了代码的作者之外,没有心灵感应能力的人都无法理解工作代码中应该有什么作用。

我不喜欢人们在初学者身上扔很多脏东西。只要以人性化的方式写,比如--问题的措辞很差/不准确/不正确,或者--这里或那里有错误。记住你自己,当你开始学习做某件事时,也不止一次可能问过一个愚蠢的问题。而醉酒刺猬的比喻是否能给问题带来任何积极的解决方案?在新人面前,在自己的伟大光芒中感到凉爽,才是令人愉快的。
 
paladin800:
我不喜欢新手被扔了很多脏东西的时候。

一头猪到处都能找到泥土 © 民间谚语

你在哪里找到这些土?如果你发现了它,请问版主。

paladin800
醉酒刺猬的比喻是否给问题带来任何积极意义?

要求行政部门在规则中加入对隐喻和刺猬的禁令。

 
Reshetov:

一头猪到处都能找到泥土 © 民间谚语

你在哪里找到这些土?如果你找到了,就去找版主。

要求行政部门在规则中加入对隐喻和刺猬的禁令。

以及为什么版主和管理员...这是一个育种、职业道德、技巧、宽容、人性的问题,最终.........管理员也无能为力。

如果你不完全了解这个问题,你最好不要提出建议...有时,最好是咀嚼...虽然牺牲别人的利益来炫耀是你的权利......

 
elugovoy:

这一切都与教养、职业道德、策略、宽容、人性有关,最终...

幼儿园和贵族妇女研究所合二为一。

那么,我们为什么不跳过个人的东西,继续回答新手的问题呢?否则,我们就会在一个纯技术性的话题中得到一种来自人道主义方法支持者的轻蔑。

 
我要感谢Evgeniy Lugovoy(他有很好的心灵感应能力)。 你百分之百地回答了我关于真实和测试者周期问题的问题。 当天晚上,我通过链接http://articles《测试和优化专家顾问》一文。在同一个晚上,我看到了 "测试和优化EA "这篇文章的链接。mql4.com/en/824(这是为像我这样的新手准备的),我意识到,测试者会不连续地创建一个真实的价格走势,并且只在EA的下一次迭代时给出新的报价,所以我重新编写了测试的代码,使用一系列的IF语句,之前有循环的操作员。对于像我这样的初学者,我建议熟悉MQL4的 "常用函数"(链接http://docs.mql4.com/ru/common)。我惊讶地发现,一个相同的函数在真实终端和策略测试器中的操作是不同的,例如,测试器中的Sleep()不会造成任何应有的延迟,只在真实终端工作。最后,对于那些鲁莽的(如我)条件性无限循环的爱好者,int start(){ double Level=1300; while (Ask<=Level)代码的最后两行,尽管它是无害的,但在终端上运行后,只要价格达到1300,就会占用大量的CPU时间(在我的2x4核心25%上)。我的朋友建议,如果你不能放弃循环,你需要插入Sleep(int 100),也就是给一个间隔100到200毫秒的时间来缓解处理器。int start() { double Level=1300。while (Ask<=Level) { Sleep( int 100) continue; }
P.S. 对于 "第三方 "的崇拜者的表达:醉酒刺猬、螺丝钉、fluderasty等等。(虽然我们是在一个纯技术性的话题中),请允许我稍微参考一下费奥多尔-米哈伊洛维奇-陀思妥耶夫斯基,他在小说《白痴》中通过米什金王子说了一句非常奇怪的话:"美丽将拯救世界!"。对你尤金,我请求你向摩尔多瓦问好,尽管我生活在另一个国家,但我出生在基希讷夫。
 
amavladi:

没有心灵感应的事情)))),我想每个人都犯过同样的错误,当他们想 "抓住 "一个价格的时候,比如,拖网。包括我,大约6年前。

顺便说一下,这个话题是为新手准备的,它不是 "严格的技术"。

我会打招呼的。

好运。

 
elugovoy:

没有心灵感应的事情)))),我想每个人都犯过同样的错误,当他们想 "抓住 "一个价格的时候,比如,拖网。包括我,大约6年前。

顺便说一下,这个话题是为新手准备的,它不是 "严格的技术"。

我会打招呼的。

好运。

关于心灵感应和 "纯技术"--我支持雷谢托夫 先生:)))。

也祝你好运。