文章 "在 MetaTrader 5 中实施多货币模式" - 页 3 123456 新评论 Yedelkin 2011.03.03 22:11 #21 Lizar:十六进制逻辑在任何地方都是一样的。您可以在这里 了解数字系统。在这里,您可以阅读有关位置数字系统的内容,还可以参考 16 进制和二进制。那里还有更多系统间转换的例子。所有位操作都适用于二进制系统。关于 MQL5 中的位操作,请参见此处。 当你已经知道自己在说什么时,阅读这些文章会很有帮助:) 例如,您在枚举中使用了前缀 "0x"。据我所知,这意味着写的是十六进制数,而表达式"(flag_event & CHARTEVENT_NEWBAR_M1)!=0"使用的是 "比特 AND "操作。您写道,位操作是针对二进制系统的。那么 & 运算符(用于二进制系统)与十六进制数有什么关系? 另一个问题:如果我理解正确,表达式"(flag_event & CHARTEVENT_NEWBAR_M1)!=0"等同于表达式"flag_event !"= CHARTEVENT_NEWBAR_M1"。是这样吗?如果是这样,为什么要使用位运算? --- 2011.03.03 22:15 #22 Вы же пишите, что побитовые операции предназначены для двоичной системы反正 CPU 内的数字都是二进制的。因此,即使您在脑海中 "看到 "255 或 FF,并将其与 8 或 0x00000100 进行比较,也不会有任何区别。耶德尔金还有一个问题,如果我理解正确的话,表达式"(flag_event & CHARTEVENT_NEWBAR_M1)!=0"等同于表达式"flag_event !"= CHARTEVENT_NEWBAR_M1"。是这样吗?如果是这样,为什么要使用位运算? 是的,在这种情况下正是这个意思,但位运算的应用范围更广,而且比单纯的比较运算更通用,尤其是在处理常量时使用位运算已成为一种经典行为。 Yedelkin 2011.03.03 22:27 #23 sergeev:反正 CPU 内的数字都是二进制的。因此,即使您在脑海中 "看到 "255 或 FF,并将其与 8 或 0x00000100 进行比较,也不会有任何区别。 区别在于术语。但我从你的话中了解到,这对程序员来说并不重要。 sergeev: 是的,在这种情况下正是这个意思,但位运算的应用范围更广,比单纯的比较更通用,尤其是在处理常量时使用位运算已经成为一种经典行为。 我明白了!那么,如果我对位运算有点不熟悉,我就可以放心地使用比较运算符重写表达式了吗?谢谢您的解释! Konstantin Gruzdev 2011.03.03 22:51 #24 Yedelkin:当你已经知道文章的内容时,再读这些文章就很不错了:)例如,您在枚举中使用了前缀 "0x"。据我所知,这意味着写的是十六进制数,而表达式"(flag_event & CHARTEVENT_NEWBAR_M1)!=0"使用的是"比特 AND 运算"。您写道,位操作是为二进制系统准备的。那么 & 运算符(用于二进制系统)与十六进制数字有什么关系?所有这些系统只是以不同的方式直观地表示数字,因此如果一个数字是十,那么它在任何地方都是十。对于计算器来说,所有的数字,不管我们用什么系统来写,都要转换成二进制。即使是我写的这些字母,也会转换成二进制。在其他系统中,给数字贴标签主要是为了提高清晰度或出于习惯。有些人这样做是为了看起来更聪明。在这种情况下,使用十六进制数字是为了书写紧凑,嗯,也是为了更清晰。当你知道十六进制数是如何形成的时候,你就会明白了。另一个问题:如果我理解正确的话,表达式"(flag_event & CHARTEVENT_NEWBAR_M1)!=0"等同于表达式"flag_event ! "= CHARTEVENT_NEWBAR_M1"。是这样吗?如果是这样,为什么还要使用位运算?不,情况并非总是如此。这取决于在 flag_event 中写入的内容。如果只有 CHARTEVENT_NEWBAR_M1 被写入 flag_event,那么 flag_event = CHARTEVENT_NEWBAR_M1。如果CHARTEVENT_NEWBAR_M1|CHARTEVENT_NEWBAR_M5被写入 flag_event ,则 flag_event != CHARTEVENT_NEWBAR_M1。但在这两种情况下,条件 (flag_event & CHARTEVENT_NEWBAR_M1)!=0都将满足 。如果在flag_event 中写入 CHARTEVENT_NEWBAR_M5,则 flag_event != CHARTEVENT_NEWBAR_M1。 但是 (flag_event & CHARTEVENT_NEWBAR_M1)=0.要理解这些技巧,你需要了解数字系统和位运算。否则,你就死定了。 Konstantin Gruzdev 2011.03.03 22:55 #25 Yedelkin:我明白了!也就是说,如果使用位运算对我来说有点不寻常,我是否可以安全地使用比较运算符重写表达式?谢谢您的解释! 您总是可以替换它,但可能需要额外的计算。在这种情况下一定要小心:)。 Yedelkin 2011.03.03 23:19 #26 Lizar: 您可以随时更换它,但可能需要额外的计算。在这种情况下一定要小心:). 好的!还有一个问题。在书写十六进制数时,您使用了 2 的度数。 使用 2 的度数是否有意义,还是只是习惯问题?例如,是否可以使用这样的组合:0x00000003、0x00000009 等? Konstantin Gruzdev 2011.03.03 23:31 #27 Yedelkin:好的还有一个问题。在书写十六进制数字时,您使用了 "2 "的度数,那么使用 "2 "的度数有什么意义吗?也就是说,是否可以使用这样的组合:0x00000003、0x00000009 等?这是因为使用了位操作。在 spy 中,我将多个数字(事件)加到一个数字中(在 flag_event 中),而在 EA 中,我从一个数字中取出多个数字,以查看 spy 发送了哪些事件。反之亦然。哦,我没看清楚。是的,你可以这样做,只是我可能没有足够的一个数字来容纳所有事件。之所以使用二进制,是因为我使用的是二进制表示数字,而用十六进制书写。每一位代表一个不同的事件。 Pawel Wojnarowski 2011.03.14 22:16 #28 先生们,向你们致敬)真正的杰作。简单而优雅、功能强大的解决方案。非常感谢,康斯坦丁,祝贺你 :-) Artapov Alexandr 2011.03.24 18:01 #29 默认情况下,price[rates_total-1] 等于最后一个未完成条形图的收盘价,而最后一个未完成条形图的收盘价又等于最后一个买入价。 如果想强制获取卖出价,可以将这一行替换为以下内容。作者,很抱歉,也许我还没读完,但这个函数是否不仅能将价格事件传递给智能交易系统,还能将例如指标的事件 或来自其他工具的组合/变化,也就是说,就像那里已经接收到信号一样。如果可以,如何实现?谢谢您的答复。 Konstantin Gruzdev 2011.03.24 18:19 #30 artall:默认情况下,price[rates_total-1] 等于最后一个未完成条形图的收盘价,而最后一个未完成条形图的收盘价又等于最后一个买入价,也就是说,默认情况下,我们总是从间谍中获取买入价。如果想强制获取卖出价,可以用下面的内容替换这一行。作者,对不起,也许我还没读完,但这个函数是否不仅可以向智能交易系统传递价格事件,还可以传递其他事件,如指标的事件或来自其他工具的组合/变化,也就是说,就像那里已经接收到信号一样。如果可以,如何实现。谢谢您的回答。 为此,最好使用指标本身,在适当位置嵌入标准函数EventChartCustom。 123456 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
十六进制逻辑在任何地方都是一样的。您可以在这里 了解数字系统。在这里,您可以阅读有关位置数字系统的内容,还可以参考 16 进制和二进制。那里还有更多系统间转换的例子。
所有位操作都适用于二进制系统。关于 MQL5 中的位操作,请参见此处。
当你已经知道自己在说什么时,阅读这些文章会很有帮助:)
例如,您在枚举中使用了前缀 "0x"。据我所知,这意味着写的是十六进制数,而表达式"(flag_event & CHARTEVENT_NEWBAR_M1)!=0"使用的是 "比特 AND "操作。您写道,位操作是针对二进制系统的。那么 & 运算符(用于二进制系统)与十六进制数有什么关系?
另一个问题:如果我理解正确,表达式"(flag_event & CHARTEVENT_NEWBAR_M1)!=0"等同于表达式"flag_event !"= CHARTEVENT_NEWBAR_M1"。是这样吗?如果是这样,为什么要使用位运算?
Вы же пишите, что побитовые операции предназначены для двоичной системы
反正 CPU 内的数字都是二进制的。
因此,即使您在脑海中 "看到 "255 或 FF,并将其与 8 或 0x00000100 进行比较,也不会有任何区别。
还有一个问题,如果我理解正确的话,表达式"(flag_event & CHARTEVENT_NEWBAR_M1)!=0"等同于表达式"flag_event !"= CHARTEVENT_NEWBAR_M1"。是这样吗?如果是这样,为什么要使用位运算?
反正 CPU 内的数字都是二进制的。
因此,即使您在脑海中 "看到 "255 或 FF,并将其与 8 或 0x00000100 进行比较,也不会有任何区别。
区别在于术语。但我从你的话中了解到,这对程序员来说并不重要。
是的,在这种情况下正是这个意思,但位运算的应用范围更广,比单纯的比较更通用,尤其是在处理常量时使用位运算已经成为一种经典行为。
我明白了!那么,如果我对位运算有点不熟悉,我就可以放心地使用比较运算符重写表达式了吗?谢谢您的解释!
当你已经知道文章的内容时,再读这些文章就很不错了:)
例如,您在枚举中使用了前缀 "0x"。据我所知,这意味着写的是十六进制数,而表达式"(flag_event & CHARTEVENT_NEWBAR_M1)!=0"使用的是"比特 AND 运算"。您写道,位操作是为二进制系统准备的。那么 & 运算符(用于二进制系统)与十六进制数字有什么关系?
所有这些系统只是以不同的方式直观地表示数字,因此如果一个数字是十,那么它在任何地方都是十。对于计算器来说,所有的数字,不管我们用什么系统来写,都要转换成二进制。即使是我写的这些字母,也会转换成二进制。在其他系统中,给数字贴标签主要是为了提高清晰度或出于习惯。有些人这样做是为了看起来更聪明。在这种情况下,使用十六进制数字是为了书写紧凑,嗯,也是为了更清晰。当你知道十六进制数是如何形成的时候,你就会明白了。
另一个问题:如果我理解正确的话,表达式"(flag_event & CHARTEVENT_NEWBAR_M1)!=0"等同于表达式"flag_event ! "= CHARTEVENT_NEWBAR_M1"。是这样吗?如果是这样,为什么还要使用位运算?
不,情况并非总是如此。这取决于在 flag_event 中写入的内容。如果只有 CHARTEVENT_NEWBAR_M1 被写入 flag_event,那么 flag_event = CHARTEVENT_NEWBAR_M1。如果CHARTEVENT_NEWBAR_M1|CHARTEVENT_NEWBAR_M5被写入 flag_event ,则 flag_event != CHARTEVENT_NEWBAR_M1。但在这两种情况下,条件 (flag_event & CHARTEVENT_NEWBAR_M1)!=0都将满足 。
如果在flag_event 中写入 CHARTEVENT_NEWBAR_M5,则 flag_event != CHARTEVENT_NEWBAR_M1。 但是 (flag_event & CHARTEVENT_NEWBAR_M1)=0.
要理解这些技巧,你需要了解数字系统和位运算。否则,你就死定了。
我明白了!也就是说,如果使用位运算对我来说有点不寻常,我是否可以安全地使用比较运算符重写表达式?谢谢您的解释!
您可以随时更换它,但可能需要额外的计算。在这种情况下一定要小心:).
好的!还有一个问题。在书写十六进制数时,您使用了 2 的度数。 使用 2 的度数是否有意义,还是只是习惯问题?例如,是否可以使用这样的组合:0x00000003、0x00000009 等?
好的还有一个问题。在书写十六进制数字时,您使用了 "2 "的度数,那么使用 "2 "的度数有什么意义吗?也就是说,是否可以使用这样的组合:0x00000003、0x00000009 等?
这是因为使用了位操作。在 spy 中,我将多个数字(事件)加到一个数字中(在 flag_event 中),而在 EA 中,我从一个数字中取出多个数字,以查看 spy 发送了哪些事件。反之亦然。
哦,我没看清楚。是的,你可以这样做,只是我可能没有足够的一个数字来容纳所有事件。之所以使用二进制,是因为我使用的是二进制表示数字,而用十六进制书写。每一位代表一个不同的事件。
默认情况下,price[rates_total-1] 等于最后一个未完成条形图的收盘价,而最后一个未完成条形图的收盘价又等于最后一个买入价。
如果想强制获取卖出价,可以将这一行替换为以下内容。
作者,很抱歉,也许我还没读完,但这个函数是否不仅能将价格事件传递给智能交易系统,还能将例如
指标的事件 或来自其他工具的组合/变化,也就是说,就像那里已经接收到信号一样。如果可以,如何实现?
谢谢您的答复。
默认情况下,price[rates_total-1] 等于最后一个未完成条形图的收盘价,而最后一个未完成条形图的收盘价又等于最后一个买入价,也就是说,默认情况下,我们总是从间谍中获取买入价。
如果想强制获取卖出价,可以用下面的内容替换这一行。
作者,对不起,也许我还没读完,但这个函数是否不仅可以向智能交易系统传递价格事件,还可以传递其他事件,如
指标的事件或来自其他工具的组合/变化,也就是说,就像那里已经接收到信号一样。如果可以,如何实现。
谢谢您的回答。