来自一个 "傻瓜 "的问题 - 页 69 1...626364656667686970717273747576...277 新评论 Yedelkin 2011.09.25 10:02 #681 rlx: 一切都能正确转换,没有错误 在"MQL5参考/ 语言基础/ 数据类型/ 类型转换 "部分,提到了两件事。 1) long=>double的转换可能会导致精度的损失。 2)允许使用datetime类型而不是long类型(它们各占8个字节)。 我得出的结论是,在理想情况下,转换datetime =>double可能也会导致精度的损失。但我不能举出一个例子。 rlx。 为什么不把日期时间存储在indic......or缓冲区的double类型 中? 加入了很多点,或者出现了某种参考。 在这两个词之间多加一个空格:"指标缓冲区"(两个空格),这样更方便。 Vladimir Kustikov 2011.09.25 13:56 #682 Yedelkin: 在"MQL5参考指南/语言基础知识/数据类型/类型转换"部分,提到了两件事。 1) long=>double的转换会导致精度的损失。 2)允许使用datetime类型(每个需要8个字节),而不是long类型。 我得出的结论是,在理想情况下,转换datetime =>double可能也会导致精度的损失。但我不能举例说明。 在两个词之间多加一个空格比较容易:"指标缓冲区"(两个空格)。写一个简单的转换测试,你自己就会明白。而你可以稍后告诉我们其他人。 Yedelkin 2011.09.25 14:28 #683 Vladix: 编写一个简单的转换测试,你自己就会明白。而你可以稍后告诉其他人。 你有一个实质性的答案吗? rlx 已经给出了一个 "简单的转换测试"。它似乎工作正常。 基于参考材料的疑点在上面概述。如果有不正确的日期时间=>双数转换的例子,请提问。 Vladimir Kustikov 2011.09.25 16:24 #684 Yedelkin:是否有一个实质性的答案?rlx 已经给出了一个 "简单的转换测试"。基于参考材料的疑虑已在上面说明。如果有一个不正确的日期时间=>双数转换的例子,请发给我。void OnStart() { double vDbl = 1.7976931348623158 e+308; datetime vTime = (datetime)vDbl; Print((double)vTime); }2011.09.25 16:24:38 test (EURUSD,H1) -9.223372036854776e+018这是一个可能发生问题的例子,但这绝对不是你的情况。 Yedelkin 2011.09.25 16:33 #685 Vladix: 2011.09.25 16:24:38 test (EURUSD,H1) -9.223372036854776e+018 这是一个可能发生问题的例子,但这绝对不是你的情况。 祝贺你!活到老,学到老! Mykola Demko 2011.09.25 16:36 #686 Vladix:2011.09.25 16:24:38 test (EURUSD,H1) -9.223372036854776e+018这是一个可能存在问题的例子,但这绝对不是你的情况。这不是一个非常正确的例子,因为傻瓜说,玻璃公鸡20分钟(这不是关于你,而是关于那些将使用它的人)。当前的日期时间值是1316816136这10位数,也就是40年,尾数双数有16位。因此,mantis double的溢出以及随后从日期时间到double的错误转换将在6*40=240年内发生。我想我们会有时间来使用它。 Vladimir Kustikov 2011.09.25 16:52 #687 Yedelkin: 水疗中心!你活了很久,也学了很久!我现在专门为你整理了一个例子。输出结果如下。数据时间类型定义到31.12.3000 23:59:59,它是32535215999。在1.7976931348623158e+308 以下定义了双倍类型事实证明,当把数据时间的最大可能值转换为双数时,在有效数字的数量上仍有允许的余地。因此,结论是它在所有情况下都能正确工作。Urain。这不是一个很正确的例子,因为它是对一个有玻璃小弟弟的傻瓜说的,时间是20分钟。这不是一个好的比喻。这只是一个例子,说明在给出类型 时需要检查数值的边界值,只是作为一个旁证。但同样,情况并非如此。 Mykola Demko 2011.09.25 17:33 #688 之前的计算我没有做对,更准确的说是在这里:使用15位数字,因为如果有第16位,就会出现转换错误 long i,l;double d; for(i=0;i<999999999999999;i+=365*86400){d=(double)i;l=(long)d;if(i!=l)break;} Print("до ",(1970+i/(365*86400))," года datetime в double преобразуется верно");31711762年数据时间转换为双倍数是正确的所以我们睡得很好,直到第3100万年。 rlx 2011.09.27 19:47 #689 从ex5库中调用导入的函数。请解释一下。阅读https://www.mql5.com/ru/docs/runtime/imports系统库(DLLs)是根据操作系统的规则加载的。如果该库已经被加载(例如,被另一个专家顾问,甚至从另一个并行运行的客户终端),则调用到已经加载的库。ex5库是如何被加载的?如果库已经被加载(例如,被另一个专家顾问,甚至从另一个客户终端,平行运行)。为了测试,我已经创建了一个库lib.mq5。#property library int i=0; int Get(void) export {return(i++);} 将lib.mq5编译成lib.ex5创建专家顾问专家.mq5#import "lib.ex5" int Get(void); #import void OnTick() { Print(Get()); }编纂了它。我把专家顾问放在欧元兑美元上。它打印的是012345将专家顾问(可选)放在英镑兑美元上印刷品6 ---来自欧元兑美元专家顾问0 ---来自GBPUSD专家顾问。 7 ---来自欧元兑美元专家顾问1 ---来自GBPUSD顾问。 8 ---来自欧元兑美元顾问2 ---来自GBPUSD顾问。也就是说,为GBPUSD专家顾问下载了另一份lib.ex5库。 有没有人知道如何打印6 ---来自欧元兑美元专家顾问7 ---来自GBPUSD专家顾问。 8 ---来自欧元兑美元专家顾问。9 ---来自GBPUSD顾问。 10 --- 欧元兑美元顾问11 ---来自GBPUSD顾问。只使用MT5的功能PS//也许我需要以特殊的方式来连接图书馆。///// 也就是说,我需要这个ex5库被加载一次。 Документация по MQL5: Программы MQL5 / Вызов импортируемых функций www.mql5.com Программы MQL5 / Вызов импортируемых функций - Документация по MQL5 Questions from a "dummy" 周末晚上 在 MQL5 中实现其他语言的实用模块(第 01 Denis Lysenko 2011.09.27 20:52 #690 你好。能否请你告诉我。为什么订单和交易有票,而头寸却没有?那么票据和标识符之间有什么区别呢? 1...626364656667686970717273747576...277 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
一切都能正确转换,没有错误
在"MQL5参考/ 语言基础/ 数据类型/ 类型转换 "部分,提到了两件事。
1) long=>double的转换可能会导致精度的损失。
2)允许使用datetime类型而不是long类型(它们各占8个字节)。
我得出的结论是,在理想情况下,转换datetime =>double可能也会导致精度的损失。但我不能举出一个例子。
为什么不把日期时间存储在indic......or缓冲区的double类型 中?
加入了很多点,或者出现了某种参考。
在这两个词之间多加一个空格:"指标缓冲区"(两个空格),这样更方便。
在"MQL5参考指南/语言基础知识/数据类型/类型转换"部分,提到了两件事。
1) long=>double的转换会导致精度的损失。
2)允许使用datetime类型(每个需要8个字节),而不是long类型。
我得出的结论是,在理想情况下,转换datetime =>double可能也会导致精度的损失。但我不能举例说明。
在两个词之间多加一个空格比较容易:"指标缓冲区"(两个空格)。
写一个简单的转换测试,你自己就会明白。而你可以稍后告诉我们其他人。
编写一个简单的转换测试,你自己就会明白。而你可以稍后告诉其他人。
你有一个实质性的答案吗?
rlx 已经给出了一个 "简单的转换测试"。它似乎工作正常。 基于参考材料的疑点在上面概述。如果有不正确的日期时间=>双数转换的例子,请提问。
是否有一个实质性的答案?
rlx 已经给出了一个 "简单的转换测试"。基于参考材料的疑虑已在上面说明。如果有一个不正确的日期时间=>双数转换的例子,请发给我。
2011.09.25 16:24:38 test (EURUSD,H1) -9.223372036854776e+018
这是一个可能发生问题的例子,但这绝对不是你的情况。
2011.09.25 16:24:38 test (EURUSD,H1) -9.223372036854776e+018
这是一个可能发生问题的例子,但这绝对不是你的情况。
2011.09.25 16:24:38 test (EURUSD,H1) -9.223372036854776e+018
这是一个可能存在问题的例子,但这绝对不是你的情况。
这不是一个非常正确的例子,因为傻瓜说,玻璃公鸡20分钟(这不是关于你,而是关于那些将使用它的人)。
当前的日期时间值是1316816136这10位数,也就是40年,尾数双数有16位。
因此,mantis double的溢出以及随后从日期时间到double的错误转换将在6*40=240年内发生。
我想我们会有时间来使用它。
水疗中心!你活了很久,也学了很久!
我现在专门为你整理了一个例子。输出结果如下。
数据时间类型定义到31.12.3000 23:59:59,它是32535215999。
在1.7976931348623158e+308 以下定义了双倍类型
事实证明,当把数据时间的最大可能值转换为双数时,在有效数字的数量上仍有允许的余地。
因此,结论是它在所有情况下都能正确工作。
这不是一个很正确的例子,因为它是对一个有玻璃小弟弟的傻瓜说的,时间是20分钟。
这不是一个好的比喻。
这只是一个例子,说明在给出类型 时需要检查数值的边界值,只是作为一个旁证。但同样,情况并非如此。
之前的计算我没有做对,更准确的说是在这里:使用15位数字,因为如果有第16位,就会出现转换错误
31711762年数据时间转换为双倍数是正确的
所以我们睡得很好,直到第3100万年。
从ex5库中调用导入的函数。
请解释一下。阅读https://www.mql5.com/ru/docs/runtime/imports
ex5库是如何被加载的?如果库已经被加载(例如,被另一个专家顾问,甚至从另一个客户终端,平行运行)。
为了测试,我已经创建了一个库
lib.mq5。
将lib.mq5编译成lib.ex5
创建专家顾问
专家.mq5
编纂了它。
我把专家顾问放在欧元兑美元上。
它打印的是
0
1
2
3
4
5
将专家顾问(可选)放在英镑兑美元上
印刷品
6 ---来自欧元兑美元专家顾问
0 ---来自GBPUSD专家顾问。
7 ---来自欧元兑美元专家顾问
1 ---来自GBPUSD顾问。
8 ---来自欧元兑美元顾问
2 ---来自GBPUSD顾问。
也就是说,为GBPUSD专家顾问下载了另一份lib.ex5库。
有没有人知道如何打印
6 ---来自欧元兑美元专家顾问
7 ---来自GBPUSD专家顾问。
8 ---来自欧元兑美元专家顾问。
9 ---来自GBPUSD顾问。
10 --- 欧元兑美元顾问
11 ---来自GBPUSD顾问。
只使用MT5的功能
PS//也许我需要以特殊的方式来连接图书馆。
///// 也就是说,我需要这个ex5库被加载一次。
你好。能否请你告诉我。为什么订单和交易有票,而头寸却没有?
那么票据和标识符之间有什么区别呢?