繁体   English   中英

QuickFIX-接收和发送来自不同算法的订单(源)

[英]QuickFIX - Receive and send orders from different algorithms (sources)

我使用QuickFIX / J库构建了一个FIX启动器应用程序,以将订单发送给我的经纪人。 如果您不知道什么是FIX应用程序,请考虑我的程序是一个通过TCP连接将消息发送到服务器的应用程序。

为了获取和发送由多种算法创建的订单,我有一个目录监视程序(WatchService),该监视程序监视使用AWS Cli与S3存储桶同步的本地目录上的修改。

这种方法效果很好,除了我必须等待大约6-8秒才能将文件放在本地目录上之外,这样我才能解析该文件以修复订单并将其发送到经纪人的FIX应用程序。 我真的很想减少订单创建和发送给经纪人之间的这种延迟。

我想提出的可能解决方案有哪些:

1) 在不使用AWS CLI的情况下直接从S3存储桶读取

2) 为每种不同的算法打开不同的FIX会话

3) 无需从存储桶中读取数据,而是将数据库(MySQL)的峰值提高到新订单。 该算法将生成表行而不是文件

4) 在我的FIX应用程序和算法之间有一个API,因此算法可以直接与我的应用程序连接。

解决方案(1)并没有改善订单接收时间,因为列出S3对象,获取摘要和过滤所需文件大约需要相同的时间。

解决方案(2)我没有尝试过,但我认为这不是最好的方法。 例如,如果我有100种不同的策略,我将不得不打开100种不同的连接,而且我不确定我的经纪人应用程序是否可以处理。 但是我可能是错的。

解决方案(3)我也没有尝试。

我认为解决方案(4)是理想的,但我不知道如何实现。 我试图创建一个REST API,但是我不知道它在概念上是否正确。 假设我的FIX应用程序当前已连接到代理的服务器,我的想法是(i)创建一个新的Web应用程序以创建REST API(ii)通过API接收订单信息,(iii)查找当前的活动会话,以及(iv )使用当前会话将订单发送到代理服务器。 不幸的是,在不同的运行FIX应用程序的类上,我无法使用以下代码通过ID查找当前会话:

SessionID sessionID = new SessionID("FIX.4.4", "CLIENT1", "FixServer");
    Session session = Session.lookupSession(sessionID);

我想听听您的意见:

  • 您认为发送由多个来源创建的FIX订单的最佳解决方案是什么?

    • 如果我想创建一个连接两个不同应用程序的API,可以遵循哪些步骤?

很抱歉,如果我有点困惑。 让我知道您是否需要进一步说明。

谢谢

您认为发送多个来源创建的FIX订单的最佳解决方案是什么?

绝对是4)-即-合并您的多个决策源,并从单一角度连接Broker-side FIX协议网关。

原因:
-隔离设计/实施/操作中的问题
-FIX协议通道的单点身份验证/等待时间共置
-最小化FIX协议网关验收测试的成本(没有这个1级市场参与者将不允许您开展业务,因此FIX协议E2E相互合作合规性测试的费用很重要-无论是在成本方面还是在时间方面)

我可以遵循哪些步骤?

遵循您自己的用例,该用例定义了需要准备好进行测试的所有MVP功能。

不要尝试将您的需求概括为任何“新的下一代API”,您的交易全都是关于延迟+交易的,所以请专注于MVP定义,不要以最小的延迟设计/实现MVP以外的任何东西(点对点)。 使用稳定的专业框架(例如nanomsgZeroMQ )可以避免花一些时间重新发明任何已经发明的用于低延迟交易消息/信号传递工具的工具。 在第3千年低延迟动机的高性能分布式计算生态系统中,使用REST是一种反模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM