来自一个 "傻瓜 "的问题 - 页 68 1...616263646566676869707172737475...277 新评论 Vladimir Gomonov 2011.09.24 00:33 #671 x100intraday:我主要想知道的是:是否可以像价格缓冲区一样直接填充时间缓冲区(不需要借助CopyTime和 其他常规的复制到数组的功能),以及如何填充,如果不能,为什么? 2.是否真的有必要创建另一对缓冲区来存储自1970年开始的秒数,但其类型不是数据时间,而是一些双数 或长数,例如,在必要的时候通过TimeToString 转换 为 字面字符串 的 时间格式 ?1.不可能。"为什么?"- 对开发商而言。 在你的情况下,这是最简单的解决方案。 (保证有效。) 既然你提出了关于填充类似于价格的缓冲区的问题。如果我是我,我会在算法层面上尽量避免这种内存的浪费,在任何情况下,我都不会用有用的数据创建缓冲区,将其填充到3%。 x572intraday 2011.09.24 00:52 #672 MetaDriver:如果我是我,我会尽量在算法层面上避免这种内存的浪费,而不是用3%的可用数据创建缓冲区。 好了,问题-解释来了:https://www.mql5.com/ru/forum/1111/page529#comment_101059,至少有一个可理解的、并非不可理解的答案,虽然恰恰相反。兴趣很高... Aleksey Lebedev 2011.09.24 02:42 #673 x100intraday:是的,巴达))。"日期和时间常数..."和"......可表示为一个字面字符串"。可能表示,也可能不表示......它是用于输入/输出数据的通常日期/时间形式。此外,我们不能将这种类型的数组与指标缓冲区 联系起来(也没有必要?),我们不能对这种数据类型的数组应用SetIndexBuffer,原因众所周知。没有任何东西可以阻止数据时间 类型出现在指标缓冲区中(它是可取的)。而我们没有。而且是徒劳的)编译产生的代码。对于带有=EMPTY_VALUE的字符串,我们得到了"常量值的截断"的警告(我们很惊讶),而对于同样的字符串,终端的专家报告中出现了一个错误:"数组超出范围 "(我们终于生气了)。似乎 EMPTY_VALUE 不想装入 datetime 类型 ,而数组的大小仍然为零。将EMPTY_VALUE改为0,错误消失了,但数组 的大小仍然 为零。EMPTY_VALUE是双倍的类型。如果有一个指示器缓冲区就更容易了--我们不需要确定阵列的大小。 另一个奇怪的现象是,ExtUpperBuffer 和 ExtLowerBuffer的大小 是非零的,这意味着它们被填满了,但没有分形出现。为什么会这样呢? eh,我不知道)。我感兴趣的主要是:是否可以直接填写类似于价格缓冲区的时间缓冲区(不需要借助于CopyTime和 其他常规函数复制到数组中),如何填写,如果不能,为什么?真的,为了这个目的,我必须创建另一对缓冲区来存储从1970年开始的秒数,但类型不是数据时间,而是一些双数 或长数,例如,在必要的时候,通过TimeToString 将 时间格式 转换为字面字符串?对 datetime 等数据的访问与对价格数据的访问类似。datetime在本质上与int/long相同。P.S.:谁懒得复制Fractals.mq5 的代码,就告诉我,你是如何存储计算出的具体时间数据的(不调用内置指标的句柄并与之合作)?这和整数数据是一样的,int/datetime/long是一样的。 x572intraday 2011.09.24 05:53 #674 Swan:是的,巴达达))。没有什么能阻止日期 类型出现在指标缓冲区中(这是很理想的)。而且是徒劳的)用指示器缓冲区就更容易了--你不需要确定数组的大小。那我到底做错了什么?一切都有详细的描述,源代码是标准的、经过时间考验的、最简单的!"。修改是简单而明显的...我在猜测中迷失了自己浑浊的头脑......。当我被什么东西卡住时,我还不如叫一个拿着新月形扳手的汽车修理工......。那么将日期时间 数组与指标缓冲区 绑定的符文咒语是什么呢?再一次。设置IndexBuffer将指定的指标缓冲区绑定到全局声明的一维动态数组,类型为双数。 Mykola Demko 2011.09.24 10:14 #675 x100intraday:那我到底做错了什么?毕竟,我已经详细地描述了一切,源代码一般都是标准的、经过时间检验的、最简单的!"。修改是简单而明显的...我迷失在我混浊的头脑的猜测中......当我被什么东西卡住时,我还不如叫一个拿着新月形扳手的汽车修理工......。那么将日期时间 数组与指标缓冲区绑定的符文咒语是什么呢?再一次。设置IndexBuffer将指定的指标缓冲区绑定到一个全局声明的一维动态数组,类型为double。你不需要这个日期时间。将所有内容写入一个双数组,并在使用前将其转换为日期时间(如果需要)。基本上,datetime和double之间的唯一区别是在表现形式上。你可以无损地将写成双数的时间转换为数据时间。 两者都是8字节的类型。 Aleksey Lebedev 2011.09.24 12:58 #676 x100intraday:那我到底做错了什么?毕竟,我已经详细地描述了一切,源代码一般都是标准的、经过时间检验的、最简单的!"。修改是简单而明显的...我迷失在我混浊的头脑的猜测中......当我被什么东西卡住时,我想要一个拿着新月形扳手的汽车修理工......。我只能猜测改变后的代码细节...以及如何使用runic咒语将数据时间 类型的数组绑定 到指标缓冲区?再一次。设置IndexBuffer将指定的指标缓冲区绑定到一个全局声明的一维动态数组,类型为double。Urain 已经回答了。 好吧,为了让编译器不骂人,这样的事情。double ExtUpperTimeBuffer[];//обьявляем ... ExtUpperTimeBuffer[xz0]=(double)time[xz1];//присваиваем ... datetime XZ=(datetime)ExtUpperTimeBuffer[xz2];//юзаем x572intraday 2011.09.24 14:51 #677 所以...是啊...没有什么突破性的进展,但可以说是扎下了根。感谢大家的药用踢球。我可以试一试... Yedelkin 2011.09.24 15:44 #678 x100intraday: 谢谢大家的药踢。 并踢到了好运气 : D x572intraday 2011.09.25 04:34 #679 有没有库函数array.Add()的内部类似物?P.S.:如果没有,就给一年的安眠药供应。 rlx 2011.09.25 09:01 #680 x100intraday:有没有库函数array.Add()的内部类似物?P.S.:如果没有,就给一年的安眠药供应。为什么不在指标...... 或缓冲区...... 中存储日期?加入了很多点,否则会出现某种联系。double time[10]; time[0] = (double) D'3000.12.31 23:59'; time[1] = (double) D'2030.12.31 23:59'; Print(TimeToString((datetime)time[0])); Print(TimeToString((datetime)time[1])); 一切转换正常,没有错误 Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float) www.mql5.com Основы языка / Типы данных / Вещественные типы (double, float) - Документация по MQL5 1...616263646566676869707172737475...277 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
x100intraday:
我主要想知道的是:是否可以像价格缓冲区一样直接填充时间缓冲区(不需要借助CopyTime和 其他常规的复制到数组的功能),以及如何填充,如果不能,为什么?
2.是否真的有必要创建另一对缓冲区来存储自1970年开始的秒数,但其类型不是数据时间,而是一些双数 或长数,例如,在必要的时候通过TimeToString 转换 为 字面字符串 的 时间格式 ?
1.不可能。"为什么?"- 对开发商而言。
在你的情况下,这是最简单的解决方案。 (保证有效。) 既然你提出了关于填充类似于价格的缓冲区的问题。
如果我是我,我会在算法层面上尽量避免这种内存的浪费,在任何情况下,我都不会用有用的数据创建缓冲区,将其填充到3%。
如果我是我,我会尽量在算法层面上避免这种内存的浪费,而不是用3%的可用数据创建缓冲区。
是的,巴达))。
"日期和时间常数..."和"......可表示为一个字面字符串"。
可能表示,也可能不表示......它是用于输入/输出数据的通常日期/时间形式。
此外,我们不能将这种类型的数组与指标缓冲区 联系起来(也没有必要?),我们不能对这种数据类型的数组应用SetIndexBuffer,原因众所周知。
没有任何东西可以阻止数据时间 类型出现在指标缓冲区中(它是可取的)。
而我们没有。
而且是徒劳的)
编译产生的代码。对于带有=EMPTY_VALUE的字符串,我们得到了"常量值的截断"的警告(我们很惊讶),而对于同样的字符串,终端的专家报告中出现了一个错误:"数组超出范围 "(我们终于生气了)。似乎 EMPTY_VALUE 不想装入 datetime 类型 ,而数组的大小仍然为零。将EMPTY_VALUE改为0,错误消失了,但数组 的大小仍然 为零。
EMPTY_VALUE是双倍的类型。
如果有一个指示器缓冲区就更容易了--我们不需要确定阵列的大小。
另一个奇怪的现象是,ExtUpperBuffer 和 ExtLowerBuffer的大小 是非零的,这意味着它们被填满了,但没有分形出现。为什么会这样呢?
eh,我不知道)。
我感兴趣的主要是:是否可以直接填写类似于价格缓冲区的时间缓冲区(不需要借助于CopyTime和 其他常规函数复制到数组中),如何填写,如果不能,为什么?真的,为了这个目的,我必须创建另一对缓冲区来存储从1970年开始的秒数,但类型不是数据时间,而是一些双数 或长数,例如,在必要的时候,通过TimeToString 将 时间格式 转换为字面字符串?
对 datetime 等数据的访问与对价格数据的访问类似。
datetime在本质上与int/long相同。
P.S.:谁懒得复制Fractals.mq5 的代码,就告诉我,你是如何存储计算出的具体时间数据的(不调用内置指标的句柄并与之合作)?
这和整数数据是一样的,int/datetime/long是一样的。
是的,巴达达))。
没有什么能阻止日期 类型出现在指标缓冲区中(这是很理想的)。
而且是徒劳的)
用指示器缓冲区就更容易了--你不需要确定数组的大小。
那我到底做错了什么?一切都有详细的描述,源代码是标准的、经过时间考验的、最简单的!"。修改是简单而明显的...我在猜测中迷失了自己浑浊的头脑......。当我被什么东西卡住时,我还不如叫一个拿着新月形扳手的汽车修理工......。
那么将日期时间 数组与指标缓冲区 绑定的符文咒语是什么呢?再一次。
设置IndexBuffer
将指定的指标缓冲区绑定到全局声明的一维动态数组,类型为双数。
那我到底做错了什么?毕竟,我已经详细地描述了一切,源代码一般都是标准的、经过时间检验的、最简单的!"。修改是简单而明显的...我迷失在我混浊的头脑的猜测中......当我被什么东西卡住时,我还不如叫一个拿着新月形扳手的汽车修理工......。
那么将日期时间 数组与指标缓冲区绑定的符文咒语是什么呢?再一次。
设置IndexBuffer
将指定的指标缓冲区绑定到一个全局声明的一维动态数组,类型为double。
你不需要这个日期时间。将所有内容写入一个双数组,并在使用前将其转换为日期时间(如果需要)。
基本上,datetime和double之间的唯一区别是在表现形式上。你可以无损地将写成双数的时间转换为数据时间。
两者都是8字节的类型。
那我到底做错了什么?毕竟,我已经详细地描述了一切,源代码一般都是标准的、经过时间检验的、最简单的!"。修改是简单而明显的...我迷失在我混浊的头脑的猜测中......当我被什么东西卡住时,我想要一个拿着新月形扳手的汽车修理工......。
我只能猜测改变后的代码细节...
以及如何使用runic咒语将数据时间 类型的数组绑定 到指标缓冲区?再一次。
设置IndexBuffer
将指定的指标缓冲区绑定到一个全局声明的一维动态数组,类型为double。
Urain 已经回答了。 好吧,为了让编译器不骂人,这样的事情。
所以...是啊...
没有什么突破性的进展,但可以说是扎下了根。
感谢大家的药用踢球。我可以试一试...
谢谢大家的药踢。
有没有库函数array.Add()的内部类似物?
P.S.:如果没有,就给一年的安眠药供应。
有没有库函数array.Add()的内部类似物?
P.S.:如果没有,就给一年的安眠药供应。
为什么不在指标...... 或缓冲区...... 中存储日期?
加入了很多点,否则会出现某种联系。
一切转换正常,没有错误