gpt4 book ai didi

finance - 快速修复库问题

转载 作者:行者123 更新时间:2023-12-02 04:09:02 24 4
gpt4 key购买 nike

我是 QuickFix 的新手,我有几个关于 QuickFix 库的问题,我将非常乐意从您那里得到答案:

我计划开发 FIX 服务器,它可以同时从多个客户端获取 FIX 请求。对此,

a) 如果我需要区分来自不同客户端的请求(如何区分这些请求),TargetID(即 CLIENT1)的确切含义是什么?

b) TargetID 对于服务器/客户端的一般含义是什么?

c) 如何添加自定义字段和自定义消息以及消息破解对象的确切连接是什么?

问候,

莫迪凯·雅各比

最佳答案

  1. TargetID 是盒子的名称到您发送消息的地方,如果你需要区分 session 对于多个客户(我假设一台服务器)只需给每个客户端不同的SenderCompID

    在您的服务器上,您必须为每个客户端设置一个 session 。

    一个服务器-客户端 session 的示例:

    在您的服务器(INCA)上:

    [SESSION]
    BeginString=FIX.4.0
    SenderCompID=INCA
    TargetCompID=CLIENT1

    在您的客户端 (CLIENT1) 上:

    [SESSION]
    BeginString=FIX.4.0
    SenderCompID=CLIENT1
    TargetCompID=INCA

    quickfixengine区分 session (服务器-客户端连接)基于这 3 个值:(BeginString,
    TargetCompID、SenderCompID)

    当您发送消息时,您将comp id 为 sendercompid 并且定位到您发送消息的位置作为targetcompid。您指定基于修复的 beginstring您想要使用的版本通信(FIX4.0/FIX4.2....).

  2. 我想上面已经解释过了,TargetID 是您所在盒子的 ID发送消息。当服务器回复客户端它将将 SenderCompID 设置为(服务器)id 和 TargetCompID 将设置为客户端到响应所在的位置正在发送。

  3. 自定义字段取决于什么正是需要的。固定协议(protocol)指定自定义字段FieldID 大于保留值范围,因此您的自定义字段可以从 FieldID 5000 开始。

    有几个选项该怎么做呢?最简单的一个就是只使用数值消息并将其添加到消息中(我假设你使用 c++ 但它是相似的与其他语言)。

    类似于:

     msg.setField(5000,"SomeValue");

    此自定义字段不会自动验证,因为 FIX不知道这件事。 FIX 使用 xml每个消息和字段所在的文件已指定。

    有一个适当的程序来添加新消息到 xml 规范,然后重新生成quickfixengine代码生成新的字段结构但是这样到目前为止我不需要这样做。

    消息破解只是一种方法需要指向泛型的指针消息,然后它查看消息 ID(如果我记得的话)和电话适当的处理程序。

    这是一个包含很多内容的大型 if 语句字符串操作所以有时最好进行检查你自己,但你应该没问题使用它。

    这就是该方法的样子,您就会明白:

    void crack( const Message& message, 
    const FIX::SessionID& sessionID )
    {
    const std::string& msgTypeValue
    = message.getHeader().getField( FIX::FIELD::MsgType );
    if( msgTypeValue == "0" )
    onMessage( (const Heartbeat&)message, sessionID );
    else
    if( msgTypeValue == "A" )
    onMessage( (const Logon&)message, sessionID );
    else
    if( msgTypeValue == "1" )
    onMessage( (const TestRequest&)message, sessionID );
    else

    然后你通常会实现适当的方法,例如如果你只关心您实现的 ExecutionReport你的代码:

    virtual void onMessage( ExecutionReport&, const FIX::SessionID& );

    然后你的应用程序将得到ExecutionReport 这样您就可以处理它。 onMessage 方法对于您不喜欢的消息实现简单地什么都不做并且返回,这样消息就永远不会到达您的申请。

如果您需要添加自定义消息/字段,我发现 this useful ,不过我没用过。

关于finance - 快速修复库问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2171769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com