新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1877 1...187018711872187318741875187618771878187918801881188218831884...1953 新评论 Mihail Matkovskij 2022.01.22 09:16 #18761 Maksim Emeliashin 静态数组 和在这个数组中的字符串搜索。 对于MQL来说,这个功能将无法正常工作 template<typename T> bool StringToEnum(const string i_str, T &o_val) { for(int i = 0; i < 256; i++) { o_val = (T)i; if(StringCompare(EnumToString(o_val), i_str, false) == 0) return(true); } o_val = WRONG_VALUE; return(false); } https://www.mql5.com/ru/docs/strings/stringcompare 参数 绳子1 [in] 第一个字符串。 绳子2 [in] 第二个字符串。 大小写敏感=true [在]区分大小写模式。如果是真的,那么 "A">"a"。如果是 假的,那么"A"="a"。默认值为真。 如果enum中会有两个常数,例如ENUM1和enum1,那么在i_str:"enum1"函数可以返回常数ENUM1 的值。为什么要用StringCompare?如果可以按以下方式进行。 template<typename T> bool StringToEnum(const string i_str, T &o_val) { for(int i = INT_MIN; i <= INT_MAX && !IsStopped(); i++) // перебор всех возможных значений int { o_val = (T)i; if(i_str == EnumToString(o_val)) return(true); } o_val = WRONG_VALUE; return(false); } Vladimir Karputov 2022.01.22 09:22 #18762 Amon1953 平仓 的原因。 我需要它来决定下一步该怎么做。 在MT5终端的历史窗口,你可以选择一个交易、订单或头寸。 在交易历史中,你需要寻找一个DEAL_REASON等于DEAL_REASON_SL的交易。 补充:可以简化--在OnTradeTransaction中只需捕捉交易TRADE_TRANSACTION_DEAL_AD,并调用交易历史寻找创建此交易的DEAL。然后同样的配方:...DEAL_REASON等于DEAL_REASON_SL Mihail Matkovskij 2022.01.22 09:24 #18763 Mihail Matkovskij #:对于MQL,该函数将无法正常工作https://www.mql5.com/ru/docs/strings/stringcompare如果enum中有两个常数,例如ENUM1和enum1,那么通过i_str:"enum1",函数可以返回常数ENUM1 的值。我们到底为什么需要StringCompare?如果可以按以下方式进行。 还有一个更快的变体。 template<typename T> bool StringToEnum(const string i_str, T &o_val, int i_min_enum, int i_max_enum) { for(int i = i_min_enum; i <= i_max_enum && !IsStopped(); i++) { o_val = (T)i; if(i_str == EnumToString(o_val)) return(true); } o_val = WRONG_VALUE; return(false); } bool StringToEnum(const string i_str, T &o_val) { return StringToEnum(i_str, o_val, INT_MIN, INT_MAX); } // медленный вариант Maksim Emeliashin 2022.01.22 11:41 #18764 Alexey Viktorov #:这一切是为了什么?你想用你自己的数值替换ENUM_TIMEFRAMES的数值吗?还是什么? 那么,现在我需要在数据库中写入指标和EA的参数设置。同时,我希望能有。 1. 人类可读的记录 2.机器可读的记录 3.在自定义枚举中添加新值的稳定性,不一定在最后。 记录--EnumToString没有问题,但开发者没有制作反向函数,这与所有其他类型不同。 Maksim Emeliashin 2022.01.22 11:46 #18765 Mihail Matkovskij #:还有更快的版本。我同意关于大小写不敏感的比较,我为自己写了一个更通用的自行车,用于我自己的枚举,在这里我不使用小写。但如果对于ENUM_TIMEFRAMES运行这个变体。bool StringToEnum(const string i_str, T &o_val) { return StringToEnum(i_str, o_val, INT_MIN, INT_MAX); } // медленный вариант 你可以有时间喝杯咖啡,同时它也在回升,例如PERIOD_MN1 :) 12345678902003 2022.01.22 11:53 #18766 Valeriy Yastremskiy #:从每个条形图上的直线中获取价格,并进行比较或找出差异,在交叉差异的标志发生变化的地方)顺便说一下,条形图上可能没有相等的东西。 那是用什么函数来做的?MqlRates?如果我使用ObjectGet,那么我必须在那里指定对象属性,如果我采取OBJPROP_PRICE,那么我怎样才能使它获得当前柱子之前的价格。 Tretyakov Rostyslav 2022.01.22 13:47 #18767 12345678902003 #: 请帮助,我画了两条江恩线,它们相交于某一点,我需要知道这些线的交点的坐标。 如果你能确定江恩线第二点的价格,那么KimIV 可以进一步帮助你 Mihail Matkovskij 2022.01.22 13:53 #18768 Maksim Emeliashin #:我同意关于忽略大小写的比较,我为自己写了一个更通用的自行车,用于我自己的枚举,在这里我不使用小写。但如果对于ENUM_TIMEFRAMES来说,运行这个变体。 你可能有时间在它恢复之前喝咖啡,例如在PERIOD_MN1 :) 那么,在ENUM_TIMEFRAMES 中,最小和最大的值是已知的。这就是为什么它们可以被明确地指定。 对于枚举的其他部分,只要知道它们的大致取值范围就足够了。如果常量没有在枚举 声明中指定,那里的值通常是从0开始的。i_max_enum可以由任何两位或三位数的数字指定:50,100,255。 Alexey Viktorov 2022.01.22 14:09 #18769 Maksim Emeliashin #:现在,我需要将指标设置和EA参数写入数据库。同时,我希望能有。 1. 人类可读的记录2.机器可读的记录3.稳定地在其自定义枚举中添加新的值,不一定在最后。记录--EnumToString没有问题,但开发者没有做一个反向函数,这与所有其他类型不同。 你有没有试过打印一个枚举表? Print(PERIOD_M5); 你认为会印什么? 但以编程方式创建一个枚举......是的。这将是有趣的。 Yurij Kozhevnikov 2022.01.22 15:26 #18770 x572intraday #: 为什么我们不能通过输入 参数进行循环?你为什么要这样惩罚我们? 这当然是一个拐杖,但我使用它:通过一些给定的分隔符将所有需要的数据输入一个字符串输入变量,然后使用StringSplit 将其溢出到一个数组中。 1...187018711872187318741875187618771878187918801881188218831884...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
对于MQL来说,这个功能将无法正常工作
https://www.mql5.com/ru/docs/strings/stringcompare
参数
绳子1
[in] 第一个字符串。
绳子2
[in] 第二个字符串。
大小写敏感=true
[在]区分大小写模式。如果是真的,那么 "A">"a"。如果是 假的,那么"A"="a"。默认值为真。
如果enum中会有两个常数,例如ENUM1和enum1,那么在i_str:"enum1"函数可以返回常数ENUM1 的值。为什么要用StringCompare?如果可以按以下方式进行。
我需要它来决定下一步该怎么做。
在MT5终端的历史窗口,你可以选择一个交易、订单或头寸。
在交易历史中,你需要寻找一个DEAL_REASON等于DEAL_REASON_SL的交易。
补充:可以简化--在OnTradeTransaction中只需捕捉交易TRADE_TRANSACTION_DEAL_AD,并调用交易历史寻找创建此交易的DEAL。然后同样的配方:...DEAL_REASON等于DEAL_REASON_SL
对于MQL,该函数将无法正常工作
https://www.mql5.com/ru/docs/strings/stringcompare
如果enum中有两个常数,例如ENUM1和enum1,那么通过i_str:"enum1",函数可以返回常数ENUM1 的值。我们到底为什么需要StringCompare?如果可以按以下方式进行。
还有一个更快的变体。
这一切是为了什么?你想用你自己的数值替换ENUM_TIMEFRAMES的数值吗?还是什么?
那么,现在我需要在数据库中写入指标和EA的参数设置。同时,我希望能有。
1. 人类可读的记录
2.机器可读的记录
3.在自定义枚举中添加新值的稳定性,不一定在最后。
记录--EnumToString没有问题,但开发者没有制作反向函数,这与所有其他类型不同。
还有更快的版本。
我同意关于大小写不敏感的比较,我为自己写了一个更通用的自行车,用于我自己的枚举,在这里我不使用小写。
但如果对于ENUM_TIMEFRAMES运行这个变体。
你可以有时间喝杯咖啡,同时它也在回升,例如PERIOD_MN1 :)从每个条形图上的直线中获取价格,并进行比较或找出差异,在交叉差异的标志发生变化的地方)顺便说一下,条形图上可能没有相等的东西。
请帮助,我画了两条江恩线,它们相交于某一点,我需要知道这些线的交点的坐标。
我同意关于忽略大小写的比较,我为自己写了一个更通用的自行车,用于我自己的枚举,在这里我不使用小写。
但如果对于ENUM_TIMEFRAMES来说,运行这个变体。
你可能有时间在它恢复之前喝咖啡,例如在PERIOD_MN1 :)那么,在ENUM_TIMEFRAMES 中,最小和最大的值是已知的。这就是为什么它们可以被明确地指定。
对于枚举的其他部分,只要知道它们的大致取值范围就足够了。如果常量没有在枚举 声明中指定,那里的值通常是从0开始的。i_max_enum可以由任何两位或三位数的数字指定:50,100,255。
现在,我需要将指标设置和EA参数写入数据库。同时,我希望能有。
1. 人类可读的记录
2.机器可读的记录
3.稳定地在其自定义枚举中添加新的值,不一定在最后。
记录--EnumToString没有问题,但开发者没有做一个反向函数,这与所有其他类型不同。
你有没有试过打印一个枚举表?
你认为会印什么?
但以编程方式创建一个枚举......是的。这将是有趣的。
为什么我们不能通过输入 参数进行循环?你为什么要这样惩罚我们?