新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1120 1...111311141115111611171118111911201121112211231124112511261127...1953 新评论 Vadim Lin 2020.04.10 15:41 #11191 Artyom Trishkin: 问题代码。 为什么......?如果是对每一次这样的穿越同一条线的逻辑进行翻倍,那么当然所有的逻辑(我没有写)都必须由当事人直接写。我不知道他的最终目标是什么,也许他想对价格越过每条线的次数进行统计,只要它通过就可以了...... 我明白,这个人没有能力为他的目的获得这样的事件。现在他将得到这样一个事件,然后由他来决定。 合理的做法是,在第一个交叉点将线条本身重新命名为某种格式(或者在这个图的描述中加上一些标签)。当所有物体都被越过时,检查线上是否没有这个标记。 如果我们谈论的是每次勾选都 尝试所有对象的无效性,那么这完全是另一个话题。 Artyom Trishkin 2020.04.10 15:58 #11192 Roman: 在你的数学计算中,尽量使用_Period变量 返回的高于H1 的时期的值。 然后你会立即知道谁是错的。 正常人都不会将命名的常 数值用于数学计算。命名常量的存在是为了让你更容易理解你所指的是什么,或者你使用哪个属性标识来检索数据。命名的常量用一个文本描述来替换所请求的属性标识符的值。 当从例如SymbolInfoDouble()中获取数据时,你可以使用标识符的数字值来表明你想从函数中获取哪个值。但要做到这一点,你必须记住在函数中替换哪个标识符的值。 命名的枚举常量的引入是为了把你从常量引用中解放出来,或者防止你把MQL中每个函数的每个标识符的值记在心里。要获得当前卖出价格的值,在请求当前符号的数据时,应该写上等于4的标识符值:SymbolInfoDouble(NULL,4)或写上SymbolInfoDouble(NULL,SYMBOL_ASK)。 为什么你认为SYMBOL_ASK返回4而不是当前的卖出价是可以的,而且不会引起不和谐? 那你为什么要挑剔图表时期的标识符?这就是开发商想要的。因为他们的内部原因。有一个标识符名称给你,例如PERIOD_H4。你不应该关心开发者出于某种原因给它分配了什么数值。你已经得到了一个常数的名称(数字值的文本替换)--为了方便你使用它。但在你的计算中使用这个常数的值,对不起,是胡说八道。这个命名的常数用于指示你想从哪个图形中获取数据。但它并没有返回图形的周期。它用于一个该死的不同目的--使你的生活更容易,告诉函数它应该返回什么。 如果你想知道这段时间的分钟数,就从这段时间的秒数除以60得到它。还有,不要把不是拐杖的东西称为拐杖。拐杖就是你在做的事情--试图在你的计算中使用数字名称。 这真令人失望... Artyom Trishkin 2020.04.10 16:00 #11193 Vadim Lin: 为什么......?如果是对每一次这样的穿越同一条线的逻辑进行翻倍,那么当然所有的逻辑(我没有写)都必须由当事人直接写。我不知道他的最终目标是什么,也许他想对价格越过每条线的次数进行统计,只要它通过就可以了...... 我明白,这个人没有设法为他的目的得到这样一个事件。现在他将得到这样一个事件,然后由他来决定。 合理的做法是,在第一个交叉点将线条本身重新命名为某种格式(或者在这个图的描述中加上一些标签)。当所有物体都被越过时,检查线上是否没有这个标记。 如果我们谈论的是每次勾选都 尝试所有对象的无效性,那是另一个话题。 你正在使用即将消失的古老功能。由于这个原因,该代码不能跨平台,尽管你可以很容易地使它在任何平台上工作而不需要改变。 而且,重命名是一件很有趣的事情。你只需要看一下指标给出的行的名称,从中提取明确的标识符,然后用它来找到正确的行。 Roman 2020.04.10 16:17 #11194 Vadim Lin: 非常感谢您!是wchar_t 帮了忙!我读到过,它为每个字符存储2个字节,与char不同。 但 "str "函数参数仍然没有返回分配给它的值......。我想知道为什么... 可能是因为你必须返回函数的返回值。 extern "C" __declspec(dllexport) wchar_t* __stdcall ToString(wchar_t* str) { wchar_t wcs[256]; wcscpy(wcs, str); wchar_t* addStr = L" --- Привет! ---"; wchar_t* res = wcsncat(wcs, addStr, wcslen(addStr) + 1); return(res); } Vadim Lin 2020.04.10 16:18 #11195 Artyom Trishkin: 你正在使用即将被遗忘的古老功能。而且该代码不是跨平台的,尽管你可以很容易地使它在任何平台上工作而不需要改变。 而且重命名也很有乐趣。你只需要看一下指标中的行名,提取明确的标识符,用它来找到必要的行。 谢谢你的编辑! 的确,我一直在用MQL4编程,而我几乎没有使用过MQL5。因此,我承认,有些方法已经过时了(但我还是在工作!)。 Нужно просто поглядеть какие имена линий выдаёт индикатор, вычленить из них их явный идентификатор 肯定是,但不是你或我--我们不知道这些线路的命名特殊性。"记住 "这样的水平也是一种选择,但我们 "记住 "的结果必须保存在某个文件中,如果没有这个文件--终端的任何崩溃,正在发生的情况将是相当不清楚。重命名,至少可以解决这个问题,尽管这个方法可能不是最好的。 我可能错了,但那个人写道,一次最多使用100条线,而且只有线,图表上没有其他东西。根据我的理解,所有的线路都需要监测交叉的情况。所以你要从这些名字中 "提取 "什么,我不知道)) Roman 2020.04.10 16:29 #11196 Artyom Trishkin: 重点是_Period变量 应该返回时间框架值。 而且这些常量必须对应于周期值,而不仅仅是枚举常量。 否则我们就失去了这个变量的意义,它是专门为快速获得时间框架值 而设计的,不需要通过额外的函数转换。 Artyom Trishkin 2020.04.10 16:33 #11197 Vadim Lin: 谢谢你的编辑! 的确,在过去的几年里,我相对来说很少用MQL4编程,而且我几乎没有使用过MQL5。因此,我承认有些方法已经过时了(但我还是在工作!)。 肯定是,但不是你或我--我们不知道这些线路的命名特殊性。"记忆 "这样的水平也是一种选择,但这样一来,我们 "记忆 "的结果就必须保存在某个文件中,如果没有这个文件--任何时候终端崩溃,正在发生的情况就会非常不清楚。重命名,至少可以解决这个问题,尽管这个方法可能不是最好的。 我可能错了,但那个人写道,一次最多使用100条线,而且只有线,图表上没有其他东西。根据我的理解,所有的线路都需要监测交叉的情况。因此,你将从这些名字中 "挑出 "什么,我不知道))。 如果终端崩溃,将不得不重新启动。该指标将不得不再次应用于图表,或运行使用该指标数据的专家顾问(那么EA将在访问该指标时自行加载该指标)。在这种情况下(甚至在终端的正常重启过程中,自动加载图表上安装的程序),指标将重新绘制其所有的线条--不需要保存任何东西。这些线条可以在以后重新阅读。此外,无论如何都要读一读。 对于EA来说,只监测由指标创建的 线,只需查看由指标创建的线的名称,并尝试在名称中找到重复的子串--所有线都一样。这些子串被用来寻找必要的行。 这很简单--只要在指标运行时看一下对象的列表就可以了。 Artyom Trishkin 2020.04.10 16:36 #11198 Roman: 关键是_Period变量 必须返回时间框架值。 而且这些常量必须对应于周期值,而不仅仅是枚举常量。 否则我们就失去了这个变量的意义,它是专门为快速获得时间框架值 而设计的,不需要通过额外的函数转换。 你把人和马混在一起,到处都是...。不仅仅是在这个问题上。如果你根据你的建议做出改变,那么到目前为止有效的东西有一半会直接死亡。 仅仅把刻度线的大小等同于点的大小是毫无价值的...... Alexey Viktorov 2020.04.10 16:42 #11199 Roman: 在你的数学计算中,尽量使用_Period变量 返回的高于H1 的时期的值。 你会立即看到谁是错的。 我几乎在每个EA中都使用它。这已经不好玩了。我很抱歉,这是我第一次看到这个。 Roman 2020.04.10 16:43 #11200 Artyom Trishkin:你把人和马混在一起,到处都是...。不仅仅是在这个问题上。如果你根据你的建议进行修改,那么迄今为止,有一半的东西都会被淘汰。只是将刻度线的大小等同于点的大小... 因为与目前的现实有很多不一致的地方。 而你正试图为这些不一致之处寻找借口。 恰恰相反,我写的是"√"不等于 "点"! 这是你自己的内部,发明的点。 鉴于点 曾经完全对应于一个点,当时只有一个四位数。 但在引入第五位数后,你开始用你的借口编造名字。 1...111311141115111611171118111911201121112211231124112511261127...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
问题代码。
为什么......?如果是对每一次这样的穿越同一条线的逻辑进行翻倍,那么当然所有的逻辑(我没有写)都必须由当事人直接写。我不知道他的最终目标是什么,也许他想对价格越过每条线的次数进行统计,只要它通过就可以了......
我明白,这个人没有能力为他的目的获得这样的事件。现在他将得到这样一个事件,然后由他来决定。
合理的做法是,在第一个交叉点将线条本身重新命名为某种格式(或者在这个图的描述中加上一些标签)。当所有物体都被越过时,检查线上是否没有这个标记。
如果我们谈论的是每次勾选都 尝试所有对象的无效性,那么这完全是另一个话题。
在你的数学计算中,尽量使用_Period变量 返回的高于H1 的时期的值。
然后你会立即知道谁是错的。
正常人都不会将命名的常 数值用于数学计算。命名常量的存在是为了让你更容易理解你所指的是什么,或者你使用哪个属性标识来检索数据。命名的常量用一个文本描述来替换所请求的属性标识符的值。
当从例如SymbolInfoDouble()中获取数据时,你可以使用标识符的数字值来表明你想从函数中获取哪个值。但要做到这一点,你必须记住在函数中替换哪个标识符的值。 命名的枚举常量的引入是为了把你从常量引用中解放出来,或者防止你把MQL中每个函数的每个标识符的值记在心里。要获得当前卖出价格的值,在请求当前符号的数据时,应该写上等于4的标识符值:SymbolInfoDouble(NULL,4)或写上SymbolInfoDouble(NULL,SYMBOL_ASK)。
为什么你认为SYMBOL_ASK返回4而不是当前的卖出价是可以的,而且不会引起不和谐?
那你为什么要挑剔图表时期的标识符?这就是开发商想要的。因为他们的内部原因。有一个标识符名称给你,例如PERIOD_H4。你不应该关心开发者出于某种原因给它分配了什么数值。你已经得到了一个常数的名称(数字值的文本替换)--为了方便你使用它。但在你的计算中使用这个常数的值,对不起,是胡说八道。这个命名的常数用于指示你想从哪个图形中获取数据。但它并没有返回图形的周期。它用于一个该死的不同目的--使你的生活更容易,告诉函数它应该返回什么。
如果你想知道这段时间的分钟数,就从这段时间的秒数除以60得到它。还有,不要把不是拐杖的东西称为拐杖。拐杖就是你在做的事情--试图在你的计算中使用数字名称。
这真令人失望...
为什么......?如果是对每一次这样的穿越同一条线的逻辑进行翻倍,那么当然所有的逻辑(我没有写)都必须由当事人直接写。我不知道他的最终目标是什么,也许他想对价格越过每条线的次数进行统计,只要它通过就可以了......
我明白,这个人没有设法为他的目的得到这样一个事件。现在他将得到这样一个事件,然后由他来决定。
合理的做法是,在第一个交叉点将线条本身重新命名为某种格式(或者在这个图的描述中加上一些标签)。当所有物体都被越过时,检查线上是否没有这个标记。
如果我们谈论的是每次勾选都 尝试所有对象的无效性,那是另一个话题。
你正在使用即将消失的古老功能。由于这个原因,该代码不能跨平台,尽管你可以很容易地使它在任何平台上工作而不需要改变。
而且,重命名是一件很有趣的事情。你只需要看一下指标给出的行的名称,从中提取明确的标识符,然后用它来找到正确的行。
非常感谢您!是wchar_t 帮了忙!我读到过,它为每个字符存储2个字节,与char不同。
但 "str "函数参数仍然没有返回分配给它的值......。我想知道为什么...
可能是因为你必须返回函数的返回值。
你正在使用即将被遗忘的古老功能。而且该代码不是跨平台的,尽管你可以很容易地使它在任何平台上工作而不需要改变。
而且重命名也很有乐趣。你只需要看一下指标中的行名,提取明确的标识符,用它来找到必要的行。
谢谢你的编辑!
的确,我一直在用MQL4编程,而我几乎没有使用过MQL5。因此,我承认,有些方法已经过时了(但我还是在工作!)。
肯定是,但不是你或我--我们不知道这些线路的命名特殊性。"记住 "这样的水平也是一种选择,但我们 "记住 "的结果必须保存在某个文件中,如果没有这个文件--终端的任何崩溃,正在发生的情况将是相当不清楚。重命名,至少可以解决这个问题,尽管这个方法可能不是最好的。
我可能错了,但那个人写道,一次最多使用100条线,而且只有线,图表上没有其他东西。根据我的理解,所有的线路都需要监测交叉的情况。所以你要从这些名字中 "提取 "什么,我不知道))
重点是_Period变量 应该返回时间框架值。
而且这些常量必须对应于周期值,而不仅仅是枚举常量。
否则我们就失去了这个变量的意义,它是专门为快速获得时间框架值 而设计的,不需要通过额外的函数转换。
谢谢你的编辑!
的确,在过去的几年里,我相对来说很少用MQL4编程,而且我几乎没有使用过MQL5。因此,我承认有些方法已经过时了(但我还是在工作!)。
肯定是,但不是你或我--我们不知道这些线路的命名特殊性。"记忆 "这样的水平也是一种选择,但这样一来,我们 "记忆 "的结果就必须保存在某个文件中,如果没有这个文件--任何时候终端崩溃,正在发生的情况就会非常不清楚。重命名,至少可以解决这个问题,尽管这个方法可能不是最好的。
我可能错了,但那个人写道,一次最多使用100条线,而且只有线,图表上没有其他东西。根据我的理解,所有的线路都需要监测交叉的情况。因此,你将从这些名字中 "挑出 "什么,我不知道))。
如果终端崩溃,将不得不重新启动。该指标将不得不再次应用于图表,或运行使用该指标数据的专家顾问(那么EA将在访问该指标时自行加载该指标)。在这种情况下(甚至在终端的正常重启过程中,自动加载图表上安装的程序),指标将重新绘制其所有的线条--不需要保存任何东西。这些线条可以在以后重新阅读。此外,无论如何都要读一读。
对于EA来说,只监测由指标创建的 线,只需查看由指标创建的线的名称,并尝试在名称中找到重复的子串--所有线都一样。这些子串被用来寻找必要的行。
这很简单--只要在指标运行时看一下对象的列表就可以了。
关键是_Period变量 必须返回时间框架值。
而且这些常量必须对应于周期值,而不仅仅是枚举常量。
否则我们就失去了这个变量的意义,它是专门为快速获得时间框架值 而设计的,不需要通过额外的函数转换。
你把人和马混在一起,到处都是...。不仅仅是在这个问题上。如果你根据你的建议做出改变,那么到目前为止有效的东西有一半会直接死亡。
仅仅把刻度线的大小等同于点的大小是毫无价值的......
在你的数学计算中,尽量使用_Period变量 返回的高于H1 的时期的值。
你会立即看到谁是错的。
你把人和马混在一起,到处都是...。不仅仅是在这个问题上。如果你根据你的建议进行修改,那么迄今为止,有一半的东西都会被淘汰。
只是将刻度线的大小等同于点的大小...
因为与目前的现实有很多不一致的地方。
而你正试图为这些不一致之处寻找借口。
恰恰相反,我写的是"√"不等于 "点"!
这是你自己的内部,发明的点。
鉴于点 曾经完全对应于一个点,当时只有一个四位数。
但在引入第五位数后,你开始用你的借口编造名字。