Наблюдатель — это поведенческий паттерн проектирования, который создаёт механизм подписки, позволяющий одним объектам следить и реагировать на события, происходящие в других объектах. Проблема Представьте, что вы имеете два объекта: и . В магазин вот-вот должны завезти новый товар, который интересен покупателю. Покупатель может каждый день...
在所有 HTML 日历中(包括标准 日历和终端日历),三重(实际、预测、上一个)=(实际、预测、修订)。因此,在下一个相应事件发生之前,不能使用历史记录中的已修订字段。其他字段可以使用。
我没有使用过本地日历 API,它的文档还有很多不足(因此需要一个更合理的库)。难道不能查询从指定的 change_id 开始的事件变化数组吗?由于某些原因,它不是基于时间的。不幸的是,这些问题更多是针对日历本身而不是库的,但由于库是在日历之上的,所以这些问题对它也是开放的。 关于更改的问题是,在我过去使用外部日历的实践中,我注意到有些字段可以追溯调整,这就是为什么我们需要测试时考虑更改的时间顺序。
我不明白previous=revised 是怎么回事(MqlCalendarValue 结构包含所有 4 个字段:actual、prev、revised、 forecast),也不明白为什么不能在历史记录中使用 revised--在我看来,revised 可以出现在上一个事件发布和下一个事件发布之间的任何时刻(如果 previous 是 revised),也就是说,只出现在历史记录中。
我没有使用过本地日历应用程序接口(Local Calendar API)--它的文档还有很多不足之处(因此需要一个更合理的库)。难道不能从指定的 change_id 开始查询事件更改数组吗?由于某些原因,它没有时间限制。
日历中的每个更改都有自己的 change_id。因此,您可以查询从特定 change_id 到当前 change_id 的所有更改。
我不明白previous=revised 是怎么回事(MqlCalendarValue 结构包含所有 4 个字段:actual、prev、revised、 forecast),也不明白为什么不能在历史记录中使用 revised--在我看来,revised 可以出现在上一个事件发布和下一个事件发布之间的任何时刻(如果 previous 是 revised),也就是说,只出现在历史记录中。
在日历中,一个事件只能有三个字段。而在应用程序接口中,有四个字段。修订是最新的改进值,甚至可能在收到实际值一周后才出现。这就是禁止在回溯测试中使用修订值的逻辑原因。
我认为方便日历使用的情况比较少。如果你有自己的选择--请说出来。也许库中的 API 并不适合您的情况。我们会考虑的。
这个话题似乎很新。
GMT 功能是有的,但似乎没有使用。我不知道是否需要它们。
它们留待将来使用。因为日历是与服务器时间 绑定的,可以从外部获取。
我认为日历的方便使用场景相当狭窄。如果您有自己的变体,请提出来。 也许程序库的应用程序接口并不适合您的使用场景。我们会考虑的。
这个话题似乎很新。
从 MT 日历功能的描述来看,我们应该写一些类似于 Observer 的东西,监控所有变化,通过订阅监控新事件的到来,以及 Actual 和Revised 中的变化。
我认为这样会很方便。
从 MT 日历功能的描述来看,我们应该写下类似观察者这样的内容,其中包括对所有变化的监控、订阅中新事件的到来以及实际值、修订 值......的变化。
从术语上讲,我不明白。
从术语上讲,我不明白。
https://refactoring.guru/ru/design-patterns/observer
https://refactoring.guru/ru/design-patterns/observer
谢谢。如果我们讨论的是 OnCalendar,那么通过 change_id 机制进行某种模拟将是可行的。
当然,最好用示意代码来演示应用场景。
谢谢。如果我们说的是 OnCalendar,那么将通过 change_id-mechanism 进行一些模拟。
您说的是日历事件的模拟,MT5 未来可能会引入这种模拟。
我指的是订阅感兴趣事件的机制,包括修订版的更改,因为它可以随时更改。
如果您不熟悉观察者模式,我建议您学习 Andrei 的链接。
举例来说,这个想法的精髓很简单:
我需要知道所有重要程度高于 3 的欧元事件,以便进行交易。我向提供者(管理订阅和警报的 类对象,也称为发布者, 可以是单个的)申请并订阅。
然后,提供者本身会监控我感兴趣的事件的所有变化,并通知我(通过调用事件处理 方法获取相应信息)。
这个想法的要点很简单,举个例子:
我需要知道所有重要程度高于 3 的欧元事件,以便进行交易。我联系一个提供者(管理订阅和警报的 类对象,也称为发布者, 可以是单一的),然后订阅。
然后,提供者本身会监控我感兴趣的事件的所有变化,并通知我(通过调用事件处理 方法获取相应信息)。
在没有相应调用的情况下,任何自定义对象都不能检查自身。也就是说,必须由用户在代码中编写。如果是用户自己编写的,则由用户自己进行处理。
change_id 机制非常简单:运行刷新方法。之后,您就可以在所创建的事件列表中获取更新的数据、内容和位置。