我怎样才能持续地通过列举? - 页 5 12345678 新评论 fxsaber 2016.08.28 08:49 #41 Sergei Vladimirov: 我为什么要这样做? MIX的TickSize是25,Digits是0。对一个不是25的倍数的整数价格进行规范化处理将导致OrderSend 错误。 Dmitry Fedoseev 2016.08.28 09:05 #42 fxsaber: MIX的TickSize是25,Digits是0。对一个不是25的倍数的整数价格进行规范化处理将导致OrderSend错误。 刚才在一个相邻的主题中建议将电脑淹没在浴缸中,那么一切都会变得更加不可信。 fxsaber 2016.08.28 09:12 #43 Dmitry Fedoseev: 刚才在一个相邻的主题中建议将电脑淹没在浴缸中,那么一切都会变得更加不可信。 不幸的是,你是个口无遮拦的人。我没有创造任何东西,但我有权利批评--关于你。 Sergei Vladimirov 2016.08.28 12:09 #44 fxsaber: MIX的TickSize是25,Digits是0。对一个不是25的倍数的整数价格进行规范化处理将导致OrderSend错误。 那么,按照这种逻辑,即使在0.25步的归一化中也会产生错误。归一化的目的不是将价格调整到某个奇特的价格档次,而是将浮点数四舍五入 到一个特定的精度。它不会引起任何错误。 fxsaber 2016.08.30 14:55 #45 Sergei Vladimirov: 那么,按照这种逻辑,即使在0.25步的情况下,规范化也会产生错误。归一化的目的不是将价格调整到某个奇特的价格档次,而是将浮点数四舍五入 到一个特定的精度。它不会导致任何错误。 正常化最初只为一件事而引入(在帮助中也提到了)--交易功能。 Alexey Volchanskiy 2016.08.30 19:59 #46 Vladimir Batrudinov:大概有两个函数需要输入。1 - 返回枚举中元素的数量,2 - 按编号返回元素...在枚举中,你可以给元素分配任何值,例如,如下所示。一个枚举不是一个数组。enum crazy { e1 = 100500, e2 = -200, e3 = -100500, e4 = 0 }; //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { int z10 = e2; int z1 = e4; } 像C#这样的语言需要指定枚举名称,而C++和MQL4/5则相当自由地处理枚举。以防万一,这句废话在MQL5和C++上都能编译。 Alexey Navoykov 2016.08.30 21:42 #47 Alexey Volchanskiy:在枚举中,你可以给元素分配任何值,例如以下。枚举不是一个数组。 那又怎么样呢? 就是按申报顺序去看那些元素。 Alexey Volchanskiy 2016.08.30 21:57 #48 Alexey Navoykov: 所以呢,就是要按照申报的顺序去看这些内容。 哦,对了,我读错了问题,我想,是价值观的问题。 pavlick_ 2016.08.31 17:13 #49 给程序员的一个提示。#define ENUM_QQ \ ENUM_QQ_HELPER(el_1, 3) \ ENUM_QQ_HELPER(el_2, 9) \ ENUM_QQ_HELPER(el_3, 38) \ ENUM_QQ_HELPER(el_4, 1) enum Enum_qq { #define ENUM_QQ_HELPER(el, val) el = val, ENUM_QQ #undef ENUM_QQ_HELPER }; void get_enumqq_array(int &ar[]) { int temp[] = { #define ENUM_QQ_HELPER(el, val) el, ENUM_QQ #undef ENUM_QQ_HELPER }; ArrayResize(ar, ArraySize(temp)); for(int i = 0; i < ArraySize(temp); ++i) ar[i] = temp[i]; } void OnStart() { int q[]; get_enumqq_array(q); for(int i = 0; i < ArraySize(q); ++i) Alert(q[i]); } 现在,如果我们需要编辑一个枚举,我们必须在一个地方编辑它一次。我们需要添加一个新元素,例如 element_new = 56,我们添加 ENUM_QQ_HELPER(element_new , 56)而且不用费心去编辑get_enumqq_array()。该技术被称为X宏https://en.wikipedia.org/wiki/X_Macro。如果开发者愿意,他们可以轻松地以这种方式修改标准枚举。也许不是很明显,列举的结果是这样的。enum Enum_qq { el_1 = 3 el_2 = 9 el_3 = 38 el_4 = 1 }; Maxim Kuznetsov 2016.08.31 17:47 #50 Vasiliy Sokolov:比方说,我们有一个枚举。我们怎样才能逐一获得这个枚举的所有可能值,例如在一个循环中?即tf1++必须依次返回PERIOD_M1, PERIOD_M2, PERIOD_M5...。我认为这不能用语言工具来完成。 但理论上,如果有一个ENUM_MYENUM,(ENUM_MYENUM)INT_MAX应该给出枚举的最大值。否则这就是一个类型转换的错误。这只是因为类型转换操作符必须 返回这个非常类型的值。在上下文中不一定有效,但对类型有效。 12345678 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我为什么要这样做?
MIX的TickSize是25,Digits是0。对一个不是25的倍数的整数价格进行规范化处理将导致OrderSend错误。
刚才在一个相邻的主题中建议将电脑淹没在浴缸中,那么一切都会变得更加不可信。
MIX的TickSize是25,Digits是0。对一个不是25的倍数的整数价格进行规范化处理将导致OrderSend错误。
那么,按照这种逻辑,即使在0.25步的情况下,规范化也会产生错误。归一化的目的不是将价格调整到某个奇特的价格档次,而是将浮点数四舍五入 到一个特定的精度。它不会导致任何错误。
大概有两个函数需要输入。1 - 返回枚举中元素的数量,2 - 按编号返回元素...
在枚举中,你可以给元素分配任何值,例如,如下所示。一个枚举不是一个数组。
像C#这样的语言需要指定枚举名称,而C++和MQL4/5则相当自由地处理枚举。以防万一,这句废话在MQL5和C++上都能编译。
在枚举中,你可以给元素分配任何值,例如以下。枚举不是一个数组。
所以呢,就是要按照申报的顺序去看这些内容。
给程序员的一个提示。
现在,如果我们需要编辑一个枚举,我们必须在一个地方编辑它一次。我们需要添加一个新元素,例如 element_new = 56,我们添加
ENUM_QQ_HELPER(element_new , 56)
而且不用费心去编辑get_enumqq_array()。该技术被称为X宏https://en.wikipedia.org/wiki/X_Macro。如果开发者愿意,他们可以轻松地以这种方式修改标准枚举。
也许不是很明显,列举的结果是这样的。
比方说,我们有一个枚举。我们怎样才能逐一获得这个枚举的所有可能值,例如在一个循环中?
即tf1++必须依次返回PERIOD_M1, PERIOD_M2, PERIOD_M5...。我认为这不能用语言工具来完成。