如何确保EA只在其首次投放的图表上工作? - 页 4 12345678910 新评论 Sergey Kravchuk 2010.08.16 12:51 #31 这可能是它的工作方式。 开始,在图表上创建一个全局变量 和一个对象(在图表之外的某个地方,这样就不会意外地用手删除它),并在这两个对象中 "写入 "一个共同的键(例如,通过GetTickCount获得)。 在其他图表上重新运行,检查全局变量是否存在。如果存在--在我们的图表上搜索具有相同键的对象。如果没有找到--其他图表--不工作,并发出警报说这是一次重新运行! 由于图表对象和全局变量必须在重新启动和重新编译后仍然存在--该检查将始终正确工作)。 Alexandr Bryzgalov 2010.08.16 12:53 #32 ForexTools: 这可能是它的工作方式。 开始,在图表上创建一个全局变量和一个对象(在图表之外的某个地方,这样就不会意外地用手删除它),并在这两个对象中 "写入 "一个共同的键(例如,通过GetTickCount获得)。 在其他图表上重新运行,检查全局变量是否存在。如果存在--在我们的图表上搜索具有相同键的对象。如果没有找到--其他图表--不工作,并发出警报说这是一次重新运行! 由于图表对象和全局变量必须在重新启动和重新编译后仍然存在--该检查将始终正确工作)。 如果终端崩溃了,有时对象不会被保存。 exhumer 2010.08.16 12:56 #33 ForexTools: 专家顾问应该只用 "一个实例 "来工作。也就是说,我第一次把它附在任何图表上,它就会工作。如果我不小心或有意将其再次附加到另一个图表上,第二个附件应该检测到它已经在运行,而不会做任何事情。 把标签留在一个全局变量中可能不会起作用。如果我有两个附加的EA,我重新编译它的文本,不清楚哪一个会先工作它的init来创建这个全局变量。 谁能建议什么?对如何做到这一点有什么想法吗? 如果在初始化时打开文件进行写入,在非初始化时释放它。从逻辑上讲,一个新的EA实例不能打开一个先前被打开写入的文件。例如,如果五次迭代后,我们一直得到一个打开文件 写入的错误,这意味着EA的一个实例已经打开。 Sergey Kravchuk 2010.08.16 12:58 #34 exhumer: 一个新的EA实例将无法打开一个之前已经打开的文件进行写入。 在终端崩溃并重新启动 后,该文件 将被第一个打开它的人使用,而不是被第一个重置它的人使用 :( 我再次重申:你需要一个特定的图表-- 一个特定的专家顾问。 Candid 2010.08.16 13:06 #35 ForexTools: 你的想法是不可行的。 你说它不起作用是什么意思?虽然这是一个空洞的论断。特别是你除了一个想法(更不用说 "具体配方 "了),什么都没有我可以从你的 "解决方案 "中推断出什么?;) 这正是我们的想法。如果你没有足够的知识来了解如何检查,那么就这样写。事实上你做到了,但你把它写成了一个主张。至少说 "你的 "解决方案 "能让我有什么法?;) "看起来完全像一个索赔。然后出于某种原因,一组琐碎的事情 "应该 "并不意味着 "将","那里 "是 "哪里"? 如果 "没有成功" - 你怎么能对未经测试的解决方案提出建议? 听着,如果只提供行之有效的解决方案,你还会拿着棍子找根。 这是谁的问题,我的还是你的?你到底为什么要把一个想法的建议说成是一个解决方案的建议? 从我的观点来看,问题的表述是:我给你一个想法,你来测试,如果它成功了,你就通知我它成功了,以此来表达最起码的感谢。 P.S. 伙计,你应该出于好奇而研究一个chr文件,因为你假装是一个使用MT的专家。 Виктор 2010.08.16 13:18 #36 TheXpert: 然后直截了当地作为储物柜归档,没有问题。 为什么不使用这个最简单的选项呢?专家顾问创建一个控制文件,并在这之前检查该文件是否存在。如果同名的文件已经存在,专家顾问将不会启动。如果EA正确退出图表,它将删除该文件。如果发生崩溃,剩余的文件会阻止任何EA实例的启动,并被手动删除,以便继续工作。 Sergey Kravchuk 2010.08.16 13:21 #37 Candid: 这是谁的问题,我的还是你的?你到底为什么要把你的想法建议说成是对解决方案的建议? 因为这正是我在第一篇文章中所要求的--这就是为什么我把你的想法当成是这样。 你似乎假装是一个与MT合作的专家。 这就是为什么我认为许多 "想法 "的有效性,甚至是DOTO,因为他们.....。;) 如果我错怪了你--写一些EA代码,除了阻止你的第二个副本运行外,什么都不做。 检查它在重新编译和重启终端时是否真的有效,并在这里发布代码--一切都会归位;) Sergey Kravchuk 2010.08.16 13:26 #38 granit77: 当崩溃发生时,剩余的文件被....,封锁了。 有两个图表,其中一个有一个工作的EA持有文件,第二个有一个EA的副本由于文件被锁定而无法工作。 终端停机或关闭。 (在它上面有两个EA开始检查读取文件。是否有任何保证,真正的第一个会先抓住它,而不是上次被阻止的那个?:( 我第三次重申:我需要图表 和专家之间的联系,但不是用另一个专家顾问来阻止一个专家顾问。 TheXpert 2010.08.16 13:26 #39 granit77: 为什么不使用这个最简单的选项呢? 不,不,那只是在运行哪个实例无所谓的情况下。 Christo Tsvetanov 2010.08.16 13:28 #40 在 "大 "编程中,使用了mutex - 例如这里。 http://bitonic.wordpress.com/2008/10/09/mutex-%D0%BC%D1%8C%D1%8E%D1%82%D0%B5%D0%BA%D1%81-%E2%80%93-%D0%B7%D0%B0%D0%BF%D1%80%D0%B5%D1%82-%D0%BD%D0%B0-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5-%D1%87%D0%B5%D0%BC/ 12345678910 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这可能是它的工作方式。
开始,在图表上创建一个全局变量 和一个对象(在图表之外的某个地方,这样就不会意外地用手删除它),并在这两个对象中 "写入 "一个共同的键(例如,通过GetTickCount获得)。
在其他图表上重新运行,检查全局变量是否存在。如果存在--在我们的图表上搜索具有相同键的对象。如果没有找到--其他图表--不工作,并发出警报说这是一次重新运行!
由于图表对象和全局变量必须在重新启动和重新编译后仍然存在--该检查将始终正确工作)。
这可能是它的工作方式。
开始,在图表上创建一个全局变量和一个对象(在图表之外的某个地方,这样就不会意外地用手删除它),并在这两个对象中 "写入 "一个共同的键(例如,通过GetTickCount获得)。
在其他图表上重新运行,检查全局变量是否存在。如果存在--在我们的图表上搜索具有相同键的对象。如果没有找到--其他图表--不工作,并发出警报说这是一次重新运行!
由于图表对象和全局变量必须在重新启动和重新编译后仍然存在--该检查将始终正确工作)。
专家顾问应该只用 "一个实例 "来工作。也就是说,我第一次把它附在任何图表上,它就会工作。如果我不小心或有意将其再次附加到另一个图表上,第二个附件应该检测到它已经在运行,而不会做任何事情。
把标签留在一个全局变量中可能不会起作用。如果我有两个附加的EA,我重新编译它的文本,不清楚哪一个会先工作它的init来创建这个全局变量。
谁能建议什么?对如何做到这一点有什么想法吗?
如果在初始化时打开文件进行写入,在非初始化时释放它。从逻辑上讲,一个新的EA实例不能打开一个先前被打开写入的文件。例如,如果五次迭代后,我们一直得到一个打开文件 写入的错误,这意味着EA的一个实例已经打开。
一个新的EA实例将无法打开一个之前已经打开的文件进行写入。
在终端崩溃并重新启动 后,该文件 将被第一个打开它的人使用,而不是被第一个重置它的人使用 :(
我再次重申:你需要一个特定的图表-- 一个特定的专家顾问。
你的想法是不可行的。
我可以从你的 "解决方案 "中推断出什么?;)
"应该 "并不意味着 "将","那里 "是 "哪里"? 如果 "没有成功"
听着,如果只提供行之有效的解决方案,你还会拿着棍子找根。 这是谁的问题,我的还是你的?你到底为什么要把一个想法的建议说成是一个解决方案的建议?
从我的观点来看,问题的表述是:我给你一个想法,你来测试,如果它成功了,你就通知我它成功了,以此来表达最起码的感谢。
P.S. 伙计,你应该出于好奇而研究一个chr文件,因为你假装是一个使用MT的专家。
然后直截了当地作为储物柜归档,没有问题。
Candid:
这是谁的问题,我的还是你的?你到底为什么要把你的想法建议说成是对解决方案的建议?
因为这正是我在第一篇文章中所要求的--这就是为什么我把你的想法当成是这样。
你似乎假装是一个与MT合作的专家。
这就是为什么我认为许多 "想法 "的有效性,甚至是DOTO,因为他们.....。;)
如果我错怪了你--写一些EA代码,除了阻止你的第二个副本运行外,什么都不做。 检查它在重新编译和重启终端时是否真的有效,并在这里发布代码--一切都会归位;)
当崩溃发生时,剩余的文件被....,封锁了。
有两个图表,其中一个有一个工作的EA持有文件,第二个有一个EA的副本由于文件被锁定而无法工作。
终端停机或关闭。
(在它上面有两个EA开始检查读取文件。是否有任何保证,真正的第一个会先抓住它,而不是上次被阻止的那个?:(
我第三次重申:我需要图表 和专家之间的联系,但不是用另一个专家顾问来阻止一个专家顾问。
为什么不使用这个最简单的选项呢?
在 "大 "编程中,使用了mutex - 例如这里。
http://bitonic.wordpress.com/2008/10/09/mutex-%D0%BC%D1%8C%D1%8E%D1%82%D0%B5%D0%BA%D1%81-%E2%80%93-%D0%B7%D0%B0%D0%BF%D1%80%D0%B5%D1%82-%D0%BD%D0%B0-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5-%D1%87%D0%B5%D0%BC/