我完全迷失了方向 - 页 4 12345 新评论 Simon Gniadkowski 2014.02.12 15:42 #31 ydrol: datetime(1970年过去的秒)的时区是基于UTC的。就像Unix时间一样。它是UnixTime - 64位unix时间。 datetime - datetime = long (second duration) datetime +/- seconds(long) = datetime(另一个日期) datetime +/- seconds(int) = datetime(另一个日期) 如何指定一个格林威治标准时间? William Roeder 2014.02.12 16:14 #32 ydrol: 日期时间的时区(1970年过去几秒钟)是基于UTC的。 错。时区是经纪人的服务器的时间。取决于你使用的是什么经纪商。 FMIC: 你是这里的骗子!这是我在这个主题上的最后一个帖子!你不值得我这么做。请不要喂食巨魔。 当你回应时,你给了巨魔力量。当你无视巨魔时,他就会渴望得到关注并最终死亡。 Ubzen 2014.02.12 16:26 #33 FMIC:你是这里的骗子!这是我在这个主题上的最后一个帖子!你不值得我这么做。 我认为你已经做了很好的贡献。你的帖子简明扼要,教得很透彻,你的努力得到了很多 "感谢 "的决议。 是的,我认为你为这个人做了所有你能做的。 ydrol 2014.02.12 16:26 #34 啊,是的,在大多数情况下,在Mql中,时区取决于你从哪里获得时间,这通常是经纪人。 ydrol 2014.02.12 16:32 #35 RaptorUK: 如何指定一个格林威治标准时间? Whoopforgot mql4 uses a broken concept of time, .我同意这个反问:-)时区取决于它的来源。因此,所有的问题都有多个来源,如经纪人、电脑、回测等等 Simon Gniadkowski 2014.02.12 16:45 #36 ydrol: Whoop forgot mql4 uses a broken concept of time, .我承认我的反问:-)时区取决于它的来源。因此,所有的问题都有多个来源,如经纪人、电脑、回测等等 我只是很高兴你得到了这个反问。 [删除] 2014.02.12 18:03 #37 我担心数据类型的推广规则会这样做。好吧,那么。 datetime - datetime = long (second duration) datetime +/- seconds(long) = datetime(另一个日期) datetime +/- seconds(int) = datetime(另一个日期) 但是,如果我说X=Y-Z,或者(Y-Z)/60,或者类似的东西,其中X已经被声明为long或int,而Y和Z是datetimes,这是不是非常、非常糟糕?如果是这样,static_cast能解决一切问题吗? Raptoruk,它不是独立于时区的。当然,在任何一个时区,下午2点和3点之间的差异是3600。但如果我知道交易在东部时间周五 下午5点停止,但我不知道时间0(1970年1月1日午夜)是在哪个时区呢?那我们就有问题了,不是吗!?所以1970年1月1日是个星期四。如果时间0是在格林尼治标准时间,那么交易就会在此后的46小时内停止,或165600调制604800。换句话说,一周有604800秒,我用X%604800的算术运算除以604800时的余数,交易在165600时停止。但是,如果经纪人在东边两个时区,而他们的垃圾的时间戳比这个高7200,那么交易在时间%604800是172800时停止,而不是165600。 看起来,报告的时间指数有不确定性。我想我必须让我的代码算出交易开始和停止的时间,毕竟是604800的模数,只是为了确定。我在想,我通过iTime('USDJPY',60,X)这样的东西,找到48小时的差距。我可以依靠iTime是 "开放 "时间,即每小时的开始,对吗?换句话说,交易在2天缺口前的最后一个时间指数后1小时停止,它正好在缺口后的第一个开始时恢复,然后增加604800的倍数,只是改变一周。虽然会有额外的复杂情况,比如在某些星期,它错过了最后一个小时,或者错过了第一个小时,怎么办?也许可以使用iTime('USDJPY',1,X),这样我最多只会偏离几分钟。 哦,哇,很多帖子都是由这个帖子引发的,速度很快。只是为了让其他人知道,我想raporuk毕竟是可以的,但一堆谩骂是不受欢迎的,所以如果你不是ydrol或raporuk或有新东西可说的新人,就不要再发帖了,我不是一个巨魔,因为我不关心你的情绪状态,如果你还有什么要甩的,知道它落在耳边了。 Simon Gniadkowski 2014.02.12 18:42 #38 zortharg: 我担心数据类型的推广规则会这样做。好吧,那么。 datetime - datetime = long (second duration) datetime +/- seconds(long) = datetime(另一个日期) datetime +/- seconds(int) = datetime(另一个日期) 但是如果我说X=Y-Z,或者(Y-Z)/60,或者类似的东西,其中X已经被声明为一个长或一个int,而Y和Z是日期时间,这是不是非常非常糟糕?如果是这样,static_cast能解决一切问题吗? Raptoruk, 它不是独立于时区的。 好吧,什么时区是0的数据时间? 但如果我知道交易在东部时间周五下午5点停止,但我不知道时间0(1970年1月1日午夜)是在哪个时区呢?那我们就有问题了,不是吗? 不......也许你有,我没有,所以没有,我们没有。 我知道我的经纪人的时区,所以我可以相应地调整周五下午5点的时间,得到周五下午5点的调整后的数据时间。 ydrol 2014.02.12 21:58 #39 zortharg: 我担心数据类型的推广规则会这样做。好吧,那么。 datetime - datetime = long (second duration) datetime +/- seconds(long) = datetime(另一个日期) datetime +/- seconds(int) = datetime(另一个日期) 但如果我说X=Y-Z,或(Y-Z)/60,或类似的东西,其中X已经被声明为一个长或一个int,而Y和Z是数据时间,这是不是非常,非常糟糕?如果是这样,static_cast能解决一切问题吗? 这些不是 "推广规则",只是我的明智之举(我希望!)。 一般来说,我自己也会做出上述类型的选择。 如果我的计算结果仍然是一个自1970年1月1日以来的秒数(无论是否有时区),那么我会把它保留为一个日期时间。 否则其他的东西(持续时间,自1970年1月1日以来的分钟数等等),我可能会 把它存储为一个long。(有时是一个int,用于典型的持续时间等) 说到这里,我很困惑,MQL4的设计者是如何做到不 强制要求所有的日期时间使用UTC,并强迫所有的经纪商发送UTC数据,而只是让客户端用本地时间来解释,因为他们目前的做法不必要地使下游的一切变得复杂。 这使得在回溯测试中计算GMT时间和会话开/关时间 变得更加困难,如果你想对所有的tick数据来源进行正确计算的话。 (例如Alpari在他们的历史数据中有多个时区,所以在回测时你必须小心你的数据来源) PS 修改了我之前的错误 :) [删除] 2014.02.14 03:46 #40 ydrol, 看在所有神圣的东西的份上,请告诉我--如果你知道的话--static_cast是否可以在mql4中使用!它和C++中的一样吗?这个页面https://docs.mql4.com/basis/types/casting,从来没有提到过这个,我在论坛上也找不到,我在任何地方都找不到。我在编码中不断遇到这样的情况,不光是把日期时间变成长的,还有把日期时间变成双的,这都是不可避免的,所以我想把它做对。也就是说,程序会计算出一个样本在一周中的哪个部分,并在计算中相应地强调它--但时间与一周中的秒数相乘仍然是一个数据时间类型的变量,除非我可以把它转换为其他东西,否则它就会被卡住。但我需要对它进行数学运算,并在最后使它成为一个双数,你看。如果你不知道,那就不要着急,但如果你知道,请告诉我在这种情况下我应该如何正确地进行类型转换。 raptoruk,"不......也许你有,我没有,所以不,我们没有。" 这绝对是一个问题。不是对我,不是对你,也不是对我们,而是对你先前所说的不受时区影响的说法的有效性。因为不管你的经纪人在哪个时区,在外汇上的交易并不跟随你经纪人的时钟。周五和周日是东部时间下午5点。格林尼治标准时间晚上10点。那么夏令时/标准时间呢!?那是什么!?有些国家不增加或减少一个小时,或者他们在不同的日子里这样做,所以你可能会在一年中的部分时间里使用偏离一个小时的代码,如果没有一个好的方法来做到这一点。我,我还没有确定一个经纪人。我正在尝试的一个是GMT+2,但我认为现在我不喜欢他们,基于他们的模拟账户。如果我尝试一个真正的,也许我会想使用一个不同的,而不是。所以我不希望经纪人的时区被硬编码到程序中,如果不这样做是很容易的事。不要再像另一个人那样,试图把一切都扭曲成一个侮辱的机会,而不是从表面上看问题。 12345 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
datetime(1970年过去的秒)的时区是基于UTC的。就像Unix时间一样。它是UnixTime - 64位unix时间。
datetime - datetime = long (second duration)
datetime +/- seconds(long) = datetime(另一个日期)
datetime +/- seconds(int) = datetime(另一个日期)
请不要喂食巨魔。
当你回应时,你给了巨魔力量。当你无视巨魔时,他就会渴望得到关注并最终死亡。
我认为你已经做了很好的贡献。你的帖子简明扼要,教得很透彻,你的努力得到了很多 "感谢 "的决议。
是的,我认为你为这个人做了所有你能做的。
如何指定一个格林威治标准时间?
Whoop forgot mql4 uses a broken concept of time, .我承认我的反问:-)时区取决于它的来源。因此,所有的问题都有多个来源,如经纪人、电脑、回测等等
我担心数据类型的推广规则会这样做。好吧,那么。
datetime - datetime = long (second duration)
datetime +/- seconds(long) = datetime(另一个日期)
datetime +/- seconds(int) = datetime(另一个日期)
但是,如果我说X=Y-Z,或者(Y-Z)/60,或者类似的东西,其中X已经被声明为long或int,而Y和Z是datetimes,这是不是非常、非常糟糕?如果是这样,static_cast能解决一切问题吗?
Raptoruk,它不是独立于时区的。当然,在任何一个时区,下午2点和3点之间的差异是3600。但如果我知道交易在东部时间周五 下午5点停止,但我不知道时间0(1970年1月1日午夜)是在哪个时区呢?那我们就有问题了,不是吗!?所以1970年1月1日是个星期四。如果时间0是在格林尼治标准时间,那么交易就会在此后的46小时内停止,或165600调制604800。换句话说,一周有604800秒,我用X%604800的算术运算除以604800时的余数,交易在165600时停止。但是,如果经纪人在东边两个时区,而他们的垃圾的时间戳比这个高7200,那么交易在时间%604800是172800时停止,而不是165600。
看起来,报告的时间指数有不确定性。我想我必须让我的代码算出交易开始和停止的时间,毕竟是604800的模数,只是为了确定。我在想,我通过iTime('USDJPY',60,X)这样的东西,找到48小时的差距。我可以依靠iTime是 "开放 "时间,即每小时的开始,对吗?换句话说,交易在2天缺口前的最后一个时间指数后1小时停止,它正好在缺口后的第一个开始时恢复,然后增加604800的倍数,只是改变一周。虽然会有额外的复杂情况,比如在某些星期,它错过了最后一个小时,或者错过了第一个小时,怎么办?也许可以使用iTime('USDJPY',1,X),这样我最多只会偏离几分钟。
哦,哇,很多帖子都是由这个帖子引发的,速度很快。只是为了让其他人知道,我想raporuk毕竟是可以的,但一堆谩骂是不受欢迎的,所以如果你不是ydrol或raporuk或有新东西可说的新人,就不要再发帖了,我不是一个巨魔,因为我不关心你的情绪状态,如果你还有什么要甩的,知道它落在耳边了。
我担心数据类型的推广规则会这样做。好吧,那么。
datetime - datetime = long (second duration)
datetime +/- seconds(long) = datetime(另一个日期)
datetime +/- seconds(int) = datetime(另一个日期)
但是如果我说X=Y-Z,或者(Y-Z)/60,或者类似的东西,其中X已经被声明为一个长或一个int,而Y和Z是日期时间,这是不是非常非常糟糕?如果是这样,static_cast能解决一切问题吗?
Raptoruk, 它不是独立于时区的。
但如果我知道交易在东部时间周五下午5点停止,但我不知道时间0(1970年1月1日午夜)是在哪个时区呢?那我们就有问题了,不是吗?
我担心数据类型的推广规则会这样做。好吧,那么。
datetime - datetime = long (second duration)
datetime +/- seconds(long) = datetime(另一个日期)
datetime +/- seconds(int) = datetime(另一个日期)
但如果我说X=Y-Z,或(Y-Z)/60,或类似的东西,其中X已经被声明为一个长或一个int,而Y和Z是数据时间,这是不是非常,非常糟糕?如果是这样,static_cast能解决一切问题吗?
这些不是 "推广规则",只是我的明智之举(我希望!)。 一般来说,我自己也会做出上述类型的选择。
如果我的计算结果仍然是一个自1970年1月1日以来的秒数(无论是否有时区),那么我会把它保留为一个日期时间。
否则其他的东西(持续时间,自1970年1月1日以来的分钟数等等),我可能会 把它存储为一个long。(有时是一个int,用于典型的持续时间等)
说到这里,我很困惑,MQL4的设计者是如何做到不 强制要求所有的日期时间使用UTC,并强迫所有的经纪商发送UTC数据,而只是让客户端用本地时间来解释,因为他们目前的做法不必要地使下游的一切变得复杂。
这使得在回溯测试中计算GMT时间和会话开/关时间 变得更加困难,如果你想对所有的tick数据来源进行正确计算的话。
(例如Alpari在他们的历史数据中有多个时区,所以在回测时你必须小心你的数据来源)
PS 修改了我之前的错误 :)
ydrol, 看在所有神圣的东西的份上,请告诉我--如果你知道的话--static_cast是否可以在mql4中使用!它和C++中的一样吗?这个页面https://docs.mql4.com/basis/types/casting,从来没有提到过这个,我在论坛上也找不到,我在任何地方都找不到。我在编码中不断遇到这样的情况,不光是把日期时间变成长的,还有把日期时间变成双的,这都是不可避免的,所以我想把它做对。也就是说,程序会计算出一个样本在一周中的哪个部分,并在计算中相应地强调它--但时间与一周中的秒数相乘仍然是一个数据时间类型的变量,除非我可以把它转换为其他东西,否则它就会被卡住。但我需要对它进行数学运算,并在最后使它成为一个双数,你看。如果你不知道,那就不要着急,但如果你知道,请告诉我在这种情况下我应该如何正确地进行类型转换。
raptoruk,"不......也许你有,我没有,所以不,我们没有。" 这绝对是一个问题。不是对我,不是对你,也不是对我们,而是对你先前所说的不受时区影响的说法的有效性。因为不管你的经纪人在哪个时区,在外汇上的交易并不跟随你经纪人的时钟。周五和周日是东部时间下午5点。格林尼治标准时间晚上10点。那么夏令时/标准时间呢!?那是什么!?有些国家不增加或减少一个小时,或者他们在不同的日子里这样做,所以你可能会在一年中的部分时间里使用偏离一个小时的代码,如果没有一个好的方法来做到这一点。我,我还没有确定一个经纪人。我正在尝试的一个是GMT+2,但我认为现在我不喜欢他们,基于他们的模拟账户。如果我尝试一个真正的,也许我会想使用一个不同的,而不是。所以我不希望经纪人的时区被硬编码到程序中,如果不这样做是很容易的事。不要再像另一个人那样,试图把一切都扭曲成一个侮辱的机会,而不是从表面上看问题。