期货量化软件:赫兹量化 处理时间---函数
判断并设置经纪商的时移
现在我们来研究函数 chckFriday(...)。 它判定不同时段各自经纪商的时移,并根据结构类型将其分配到全局变量 OffsetBroker 的相应字段 _OffsetBroker。 该结构知晓以下三个领域:
int USwinEUwin, // US=Winter & EU=Winter USsumEUsum, // US=Summer & EU=Summer USsumEUwin, // US=Summer & EU=Winter
它们会分别分配相应时段经纪商的时移。 这些时段是:
这两个地区都是一样的,要么是冬季(或标准时间),要么是夏季,或者
美国,已到夏季,欧盟仍然在冬季。
逆转的情况是,美国已经(仍然)在冬季,而欧盟仍然(已经)在夏季,这种情况并不存在。 此处出现的问题不仅是为什么第四个类别不存在,以及澳大利亚或 AUD 会如何 — 它在于此缺失了吗? 以下是切换的规则:
欧盟:10 月份最后的周日,和 3 月份最后的周日
美国:11 月份的首个周日,和 3 月份的第二个周日
澳洲:11 月份的首个周日,和 3 月份的最后一个周日
关于第一个问题。 欧盟比美国早一到两周切换到冬季时间:美国仍然是夏季,而欧盟已经是冬季,因此该值被分配到 OffsetBroker 变量的 USsumEUwin 字段。 然后在春季,美国先于欧盟就转为夏季,如此美国的夏季已持续一两周,而欧盟仍然是冬季。 同样,该值被分配给 OffsetBroker 变量的 USsumEUwin 字段。 由此清晰地表明,相反的情况欧盟已经(仍然)夏季了,但美国仍然(已经)是冬季的情况根本不会发生。 这实际上不需要计算秋季和春季变更期间的经纪商时移。 尽管如此,它还是被执行了 — 仅仅是出于完整性和控制。
关于第二个问题。 澳大利亚和美国一样,在 11 月份切换。 在春季,则和欧盟一致。 因此,没有其它进行变更的不同周末。 然而,在澳大利亚,当欧盟和美国处于冬季时,时钟会提前 1 小时,因为那里的圣诞节和新年都在夏季 现在,如果我们已经计算出一个特殊时段的时移,那么我们也可以计算外汇市场在这几周期间的开盘时间。 这些值存储在 secFxWiWi、secfxsuu、secFxSuWi 字段和 actSecFX 里的当前有效值当中。 在文章的最后,在应用程序一章中,我们将展示如何处理这个问题。