QuickFixN:LOGON 实现问题和身份验证

问题描述 投票:0回答:1

版本FIX50SP2。

在quickfix存储库中,有FIX50SP2和FIXT11的消息: https://github.com/connamara/quickfixn/tree/master/Messages

  1. 在文档中,我什至找不到关于我需要选择哪一个来实现 FIX50SP2 版本的 FIX 客户端登录的最模糊的概念。
  2. 我应该显式发送登录消息还是需要在
    ToAdmin
    方法中实现身份验证?

这是拦截 ToAdmin 以便添加凭据的当前代码片段:

    public void ToAdmin(QuickFix.Message message, SessionID sessionId)
    {
        // Customize admin messages before sending

        string msgType = message.Header.GetString(Tags.MsgType);

        if (msgType == MsgType.LOGON)
        {
            // Coinbase-specific fields
            string apiKey = _settings.Get(sessionId).GetString("SenderCompID"); // API Key
            string secret = _settings.Get(sessionId).GetString("Secret"); // API Secret
            string passphrase = _settings.Get(sessionId).GetString("Passphrase"); // API Passphrase

实现此 API:https://docs.cdp.coinbase.com/exchange/docs/fix-msg-order-entry-50#logon-35a

coinbase-api fix-protocol quickfixn
1个回答
0
投票

我不确定你读了什么文档,但你的做法是完全错误的。

创建和发送消息应该看起来有点类似,这是我直接从网站文档复制/粘贴的。

FIX44.NewOrderSingle order = new FIX44.NewOrderSingle(
    new ClOrdID("1234"),
    new Symbol("AAPL"),
    new Side(Side.BUY),
    new TransactTime(DateTime.Now),
    new OrdType(OrdType.MARKET));

// add optional fields here if needed

Session.SendToTarget(order, sessionID);

您将使用

FIX50SP2
而不是
FIX44

在FIX5中,联盟将“管理”消息(登录、注销、心跳等)拆分到自己的字典中,这就是FIXT11。 您可能不会手动创建这些消息。

ToAdmin
用于在传出管理消息发送给交易对手之前拦截它们,以防您需要调整它们。 最常见的是,它用于将用户名/密码字段注入登录消息中。 我不知道你想做什么,但看起来这是基于误解。

您看过 QF/n 示例吗? 我强烈建议在不同的终端中运行 TradeClient 和 Executor,然后检查代码。

© www.soinside.com 2019 - 2024. All rights reserved.