[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 385 1...378379380381382383384385386387388389390391392...432 新评论 Chiripaha 2013.06.02 17:38 #3841 granit77: 维克多,你错了。感谢这个有点冗长的讨论,两个程序员同时回答了新人的问题,这对这个话题只有好处:) 嗯,我很喜欢读它。而且很能看出先进的态度(我不知道现在该怎么称呼你们这些程序员--我现在很迷惑:)。)- 我们这样说吧--专家,解决先进的问题。)))以及他们对看似简单任务的看法。我真诚地希望这是一次没有情绪的友好讨论,尽管有各种不同意见。不幸的是,我也仍然有分歧(未解决的)。但我在这里只是宣称一种哲学的方法。如果用这种方式解决一个问题的方法不明显,你必须找到另一种方法。但了解这个问题是非常有用的。非常感谢您的讨论。令人遗憾的是,我们没有达成共识。(但是,目前还没有出现共识...(我想到了那首 "在遥远的地方,在地铁旁 "的歌曲))。当然,很遗憾的是,我和阿尔勒的问题没有明显的答案。我认为这些问题不仅仅是针对他和我的,也是针对许多经验不足的专业人士的,他们发现很难建立自己的线程和I.T.,这就是为什么他们要求助于高级专业人士编写的程序和外壳。好吧,这没关系。假以时日,我们也会解决这些问题。: ))非常感谢您的努力。各方最后都有一个积极的态度(尽管他们有不同的解决方式)。而且它很高兴。 顺便说一下,在我的教学研究中,我经常说:不是所有的问题都能解决,我们往往不知道所有的答案;因此,他们仍然可以...保持开放。(我正试图为讨论找到一个微妙的结局)再次感谢! SDM 2013.06.02 18:35 #3842 需要帮助 1 如何知道顶部开仓或挂单 卖出的价格 2 如何检查在我指定的价格上是否有开仓或挂单卖出的情况? Vadim Zhunko 2013.06.02 21:19 #3843 谢尔盖,哪些问题没有得到解决?如果这样。 Chiripaha:也就是说,在回答Arles的 问题时,如果一个EA完成了订单的核算并 "打了个盹",这时另一个没有超过分配资金上限的EA(让我们假设80%的存款--两个EA都有这个规模)将下订单(在市场上进行交易)。而当第1位恢复工作时(而且资金管理终端已经在前一天计算过了),他/她也会开出超过专家顾问所设定的限额的交易?如果这个系统(假设)被多个EA所乘,那么可能有一个,风险管理将在关键系统中?我对这个多线程的理解正确吗?- 如果是这样,那么从财务角度来看,当然是一团糟。但由于小账户中的概率很小,所以这只是一种假设。而在较大的账户上,他们可能会自己写一些东西。但仍然是这样,结果是这样吗? 而我有一个问题--这是官方的立场,还是像我一样只是猜测和经验? 第378页上有一个代码。又来了。#property show_inputs extern int Pause = 1000; int hwndChart = NULL; // Уникальный идентификатор скрипта. string sName = "Condition"; void init() { hwndChart = WindowHandle(Symbol(), 0); // Создаём глобальную переменную синхронизации скриптов. if (!GlobalVariableCheck(sName)) GlobalVariableSet(sName, 0); } void deinit() { GlobalVariableDel(sName); } void start() { while (!IsStopped()) {// Начало блока синхронизации. GlobalVariableSetOnCondition(sName, hwndChart, 0); if (GlobalVariableGet(sName) == hwndChart) { Print("Start"); Sleep(Pause); // Имитация работы. Print("End"); } GlobalVariableSetOnCondition(sName, 0, hwndChart); // Завершение блока синхронизации. Sleep(200); } } 如果延迟是 "仿制作品",则插入对存款或其他资源的参考。你可以把这个同步块变成一个函数,并把它放在库中。你将有一个从任何EA访问存款的同步功能。 Рустам 2013.06.02 21:36 #3844 用图表窗口的句柄替换索引 Vadim Zhunko 2013.06.02 21:44 #3845 FAQ: 用图表窗口的句柄来代替索引 对了!很难弄清楚什么是指数。我已经重新做了。===================虽然,索引将允许正确地删除一个全局变量。我们应该在deinit中递减索引。并在索引等于零时删除全局变量。但这种递减将不允许在删除后重新加载脚本。指数将被混在一起。我们应该创建一个全局数组,包含所有访问该资源的模块的索引。嗯,并与之合作。也可以做两个全局变量。一个是最后的索引,另一个是当前的模块数。指数只会增加。也许,这将是更容易的。或者根本不需要使用全局变量。在第一次运行前手动删除。 Рустам 2013.06.02 22:19 #3846 这将工作得很好,直到第一次失败,当实验者不递减总计数器的时候。 Vadim Zhunko 2013.06.02 22:25 #3847 我已经得到了它!我们也必须同步退出。在deinit中等待轮到你的时候,用全局变量 重置退出。如果资源被访问的时间很短,那么在deinit中就会没事。 Рустам 2013.06.02 23:33 #3848 1) 问题:每个脚本(EA)都必须知道所有其他脚本的存在。2) 问题:如果出现了故障,来自故障的globals将被挂起未被占用,队列将被卡住。3) 解决方案: 每个exp组织1个globalka,名称为--通用前缀+窗口手柄+符号。globalka的值是该仪器上最后一个刻度的时间。2个普通的全局,有自己的句柄(工作后,它将自己的句柄写入其中,如果它是最古老的,则将其清除)队列按升序排列(手柄),最高级的将第二个globale设置为零在每个exp中,我们创建了三个数组(因为缺乏结构)--符号/手柄/最后访问时间/最后打勾时间。所有的EXP都会跟踪它们的(最后访问时间/最后勾选时间),一旦它们不同(其中一个EXP失败),失败的EXP的两个globals就会被删除,它被认为是不活跃的。队列被恢复这实际上是由EA站在最活跃的图表上完成的(频繁点击)。当正常去初始化时,每个expo会自己清理。最大限度地跳过--打一个勾。ZS.而一般来说,最好是做一个多币种的 Dmitry Fedoseev 2013.06.03 03:18 #3849 Zhunko:谢尔盖,哪些问题没有得到解决?如果这样。 第378页上有一个代码。又来了。 在有延迟的 "模仿作品 "的地方,你要插入对存款或其他资源的参考。你可以把这个同步块变成一个函数,并把它放在一个库中。你会得到一个同步的功能,即从任何专家顾问那里获取存款。 这是一个原子访问块,不存在同步问题。只适用于存款是没有意义的。对任何一个存款参数函数的调用都将本身是原子性的,没有任何提示。如果你以原子方式进行,专家顾问的所有工作。这就是你解决问题的方式--你认为你已经做了一些事情,但事实上这只是一个幻觉。 Dmitry Fedoseev 2013.06.03 03:21 #3850 FAQ:1) 问题:每个脚本(EA)必须知道所有其他脚本的存在。2) 问题:如果出现了故障,来自故障的globals将被挂起未被占用,队列将被卡住。3) 解决方案: 每个exp组织1个globalka,名称为--通用前缀+窗口手柄+符号。globalka的值是该仪器上最后一个刻度的时间。2个普通的全局,有自己的句柄(工作后,它将自己的句柄写入其中,如果它是最古老的,则将其清除)队列按升序排列(手柄),最高级的将第二个globale设置为零在每个exp中,我们创建了三个数组(因为缺乏结构)--符号/手柄/最后访问时间/最后打勾时间。所有的EXP都会跟踪它们的(最后访问时间/最后勾选时间),一旦它们不同(其中一个EXP失败),失败的EXP的两个globals就会被删除,它被认为是不活跃的。队列被恢复这实际上是由EA站在最活跃的图表上完成的(频繁点击)。当正常去初始化时,每个expo会自己清理。最大限度地跳过--打一个勾。ZS.而一般来说,最好是做一个多货币的 他不会明白,从上面看到的太糟糕了))))。我的这项任务大约是以这种风格解决的。有一个了解问题本质的人,这很好。只有我仍然有一个队列,在这个队列中,任务开始执行的顺序,并在一个圈子中进一步执行。 1...378379380381382383384385386387388389390391392...432 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
维克多,你错了。感谢这个有点冗长的讨论,两个程序员同时回答了新人的问题,这对这个话题只有好处:)
嗯,我很喜欢读它。而且很能看出先进的态度(我不知道现在该怎么称呼你们这些程序员--我现在很迷惑:)。)- 我们这样说吧--专家,解决先进的问题。)))以及他们对看似简单任务的看法。我真诚地希望这是一次没有情绪的友好讨论,尽管有各种不同意见。不幸的是,我也仍然有分歧(未解决的)。但我在这里只是宣称一种哲学的方法。如果用这种方式解决一个问题的方法不明显,你必须找到另一种方法。但了解这个问题是非常有用的。
非常感谢您的讨论。令人遗憾的是,我们没有达成共识。(但是,目前还没有出现共识...(我想到了那首 "在遥远的地方,在地铁旁 "的歌曲))。
当然,很遗憾的是,我和阿尔勒的问题没有明显的答案。我认为这些问题不仅仅是针对他和我的,也是针对许多经验不足的专业人士的,他们发现很难建立自己的线程和I.T.,这就是为什么他们要求助于高级专业人士编写的程序和外壳。
好吧,这没关系。假以时日,我们也会解决这些问题。: ))非常感谢您的努力。各方最后都有一个积极的态度(尽管他们有不同的解决方式)。而且它很高兴。
顺便说一下,在我的教学研究中,我经常说:不是所有的问题都能解决,我们往往不知道所有的答案;因此,他们仍然可以...保持开放。(我正试图为讨论找到一个微妙的结局)再次感谢!谢尔盖,哪些问题没有得到解决?如果这样。
也就是说,在回答Arles的 问题时,如果一个EA完成了订单的核算并 "打了个盹",这时另一个没有超过分配资金上限的EA(让我们假设80%的存款--两个EA都有这个规模)将下订单(在市场上进行交易)。而当第1位恢复工作时(而且资金管理终端已经在前一天计算过了),他/她也会开出超过专家顾问所设定的限额的交易?
如果这个系统(假设)被多个EA所乘,那么可能有一个,风险管理将在关键系统中?
我对这个多线程的理解正确吗?- 如果是这样,那么从财务角度来看,当然是一团糟。但由于小账户中的概率很小,所以这只是一种假设。而在较大的账户上,他们可能会自己写一些东西。但仍然是这样,结果是这样吗?
而我有一个问题--这是官方的立场,还是像我一样只是猜测和经验?第378页上有一个代码。又来了。
如果延迟是 "仿制作品",则插入对存款或其他资源的参考。你可以把这个同步块变成一个函数,并把它放在库中。你将有一个从任何EA访问存款的同步功能。
用图表窗口的句柄来代替索引
对了!很难弄清楚什么是指数。
我已经重新做了。
===================
虽然,索引将允许正确地删除一个全局变量。
我们应该在deinit中递减索引。并在索引等于零时删除全局变量。
但这种递减将不允许在删除后重新加载脚本。指数将被混在一起。
我们应该创建一个全局数组,包含所有访问该资源的模块的索引。嗯,并与之合作。
也可以做两个全局变量。一个是最后的索引,另一个是当前的模块数。指数只会增加。也许,这将是更容易的。
或者根本不需要使用全局变量。在第一次运行前手动删除。
1) 问题:每个脚本(EA)都必须知道所有其他脚本的存在。
2) 问题:如果出现了故障,来自故障的globals将被挂起未被占用,队列将被卡住。
3) 解决方案:
每个exp组织1个globalka,名称为--通用前缀+窗口手柄+符号。globalka的值是该仪器上最后一个刻度的时间。2个普通的全局,有自己的句柄(工作后,它将自己的句柄写入其中,如果它是最古老的,则将其清除)
队列按升序排列(手柄),最高级的将第二个globale设置为零
在每个exp中,我们创建了三个数组(因为缺乏结构)--符号/手柄/最后访问时间/最后打勾时间。
所有的EXP都会跟踪它们的(最后访问时间/最后勾选时间),一旦它们不同(其中一个EXP失败),失败的EXP的两个globals就会被删除,它被认为是不活跃的。
队列被恢复
这实际上是由EA站在最活跃的图表上完成的(频繁点击)。
当正常去初始化时,每个expo会自己清理。
最大限度地跳过--打一个勾。
ZS.而一般来说,最好是做一个多币种的
谢尔盖,哪些问题没有得到解决?如果这样。
第378页上有一个代码。又来了。
在有延迟的 "模仿作品 "的地方,你要插入对存款或其他资源的参考。你可以把这个同步块变成一个函数,并把它放在一个库中。你会得到一个同步的功能,即从任何专家顾问那里获取存款。
这是一个原子访问块,不存在同步问题。只适用于存款是没有意义的。对任何一个存款参数函数的调用都将本身是原子性的,没有任何提示。如果你以原子方式进行,专家顾问的所有工作。这就是你解决问题的方式--你认为你已经做了一些事情,但事实上这只是一个幻觉。
1) 问题:每个脚本(EA)必须知道所有其他脚本的存在。
2) 问题:如果出现了故障,来自故障的globals将被挂起未被占用,队列将被卡住。
3) 解决方案:
每个exp组织1个globalka,名称为--通用前缀+窗口手柄+符号。globalka的值是该仪器上最后一个刻度的时间。2个普通的全局,有自己的句柄(工作后,它将自己的句柄写入其中,如果它是最古老的,则将其清除)
队列按升序排列(手柄),最高级的将第二个globale设置为零
在每个exp中,我们创建了三个数组(因为缺乏结构)--符号/手柄/最后访问时间/最后打勾时间。
所有的EXP都会跟踪它们的(最后访问时间/最后勾选时间),一旦它们不同(其中一个EXP失败),失败的EXP的两个globals就会被删除,它被认为是不活跃的。
队列被恢复
这实际上是由EA站在最活跃的图表上完成的(频繁点击)。
当正常去初始化时,每个expo会自己清理。
最大限度地跳过--打一个勾。
ZS.而一般来说,最好是做一个多货币的
他不会明白,从上面看到的太糟糕了))))。我的这项任务大约是以这种风格解决的。有一个了解问题本质的人,这很好。只有我仍然有一个队列,在这个队列中,任务开始执行的顺序,并在一个圈子中进一步执行。