【问题标题】:QuickFIX - set StartTime\EndTimeQuickFIX - 设置 StartTime\EndTime
【发布时间】:2012-11-06 09:14:23
【问题描述】:

QuickFIX 有一个configuration file,您可以在其中设置StartTimeEndTime。不幸的是,AFAIK QuickFIX 仅支持此配置的 UTC,而交换通常取决于时区。这意味着您需要记住每次时钟更改时更新此配置文件。

有没有办法以编程方式而不是通过配置文件设置StartTime \ EndTime 参数?这样您就可以通过编程方式调整时间设置正确的值。

【问题讨论】:

    标签: quickfix


    【解决方案1】:

    有一种方法可以设置它。您可以按如下方式设置时区:

    TimeZone=America/New_York
    

    请参阅configuration 指南。

    很奇怪,它不在 quickfix 配置指南中,而在 quickfixJ 指南中。

    【讨论】:

    • 你确定这个配置在 vanilla QuickFIX 上可用吗?
    • 什么是原版 QuickFix?你的意思是C++版本?即不是quickfixJ。我不知道它是否可用。你试过了吗?肯定有 UseLocalTime 选项,但我不确定是否有帮助。它也可用于 quickfix/n quickfixn.org/tutorial/configuration
    • 是的,我指的是用于 python 绑定的 C++ 版本。 UseLocalTime 需要将时间设置为服务器的时间,这比用时间明确说明时区不太理想。我会手动检查它...
    • 时区在 C++ 中不起作用。 SessionSettings.h 或代码的任何其他部分中没有这样的字符串。因此,它在绑定到 C++ 的 Python 中也不起作用。 UseLocalTime 仅在您的时区更改为与服务器相同的节省时间并且需要更改时区之间的端口时才有效。
    【解决方案2】:

    在我们的生产环境中,我们始终使用 UTC 时间。

    在 QuickFIX 配置文件中,为每个交易对手添加以下行:

    UseLocalTime=N

    请在此处阅读文档: http://www.quickfixengine.org/quickfix/doc/html/configuration.html#Session

    【讨论】:

    • 我们这样做,但由于交易所使用夏令时,我宁愿不每半年手动更改一次时间。这就是我问这个问题的原因......
    • @Jonathan,抱歉我的错误答案。据我所知,StartTime 和 EndTime 仅在配置文件中设置。但是您可以尝试读取流中的配置文件,修改值,然后将流加载到 SessionSettings 对象中。
    • 我不确定我是如何通过 Python 绑定做到这一点的,但我可以试一试
    【解决方案3】:

    as per quickfix docs你应该添加

    set UseLocalTime=Y

    表示 StartTime 和 EndTime 以本地时间表示,而不是 世界标准时间。消息中的时间仍将设置为 UTC,因为这是由 FIX 规范。

    【讨论】:

      【解决方案4】:

      我们有一个错误

      System.ArgumentException: Only UTC time is supported
      Parameter name: oldtime
      at QuickFix.SessionSchedule.IsNewSession(DateTime oldtime_utc, DateTime testtime_utc)
      at QuickFix.Session.get_IsNewSession()
      

      修复它的唯一方法是删除store 目录。大概是这样的session时间戳

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-28
        • 2018-11-02
        • 2022-01-03
        • 1970-01-01
        • 2019-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多