标签: fix-protocol

6
推荐指数
2
解决办法
2736
查看次数

在正则表达式中解析FIX协议?

我需要解析包含FIX协议消息的日志文件.

每行包含标头信息(时间戳,日志记录级别,端点),后跟FIX有效负载.

我使用正则表达式将头信息解析为命名组.例如:

 <?P<datetime>\d{2}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}.\d{6}) (?<process_id>\d{4}/\d{1,2})\s*(?P<logging_level>\w*)\s*(?P<endpoint>\w*)\s*
Run Code Online (Sandbox Code Playgroud)

然后我来到FIX有效负载本身(^ A是每个标签之间的分隔符),例如:

8=FIX.4.2^A9=61^A35=A...^A11=blahblah...
Run Code Online (Sandbox Code Playgroud)

我需要从中提取特定的标签(例如,来自35 =的"A",或来自11 =的"blahblah"),并忽略所有其他的东西 - 基本上我需要在"35 = A"之前忽略任何东西,以及之后的任何事情到"11 = blahblah",然后在那之后忽略任何事情等.

我知道有一个库可能能够解析每个标签(http://source.kentyde.com/fixlib/overview),但是,如果可能的话,我希望在这里使用正则表达式的简单方法,因为我真的只需要几个标签.

在正则表达式中有一个很好的方法来提取我需要的标签吗?

干杯,维克多

python regex fix-protocol

6
推荐指数
2
解决办法
6168
查看次数

QuickFIX/J库的Maven存储库

我在最新版本(1.6.0)中使用QuickFIX/J,并且想要询问您是否知道任何Maven存储库要集成到我的pom文件中?我可以手动将jar文件添加到我的本地存储库,但也许有更好,更快的方式.

fix-protocol maven quickfixj

6
推荐指数
1
解决办法
2987
查看次数

FIX引擎从客户端向服务器发送FIX消息的最低延迟时间是什么?

我正在用C++构建一个FIX引擎,但我没有引用知道什么是一个好的性能数字.考虑到网络时间和FIX解析时间,客户端向服务器发送FIX消息的微秒时间是多少?也有人知道这个简单的FIX消息从客户端到服务器操作的当前最低可能延迟吗?

c++ benchmarking latency quickfix fix-protocol

6
推荐指数
1
解决办法
1430
查看次数

如何使用Python将FIX登录消息发送到GDAX/Coinbase

我正在尝试为fix.gdax.com建立一个FIX 4.2会话(docs:https://docs.gdax.com/#fix-api 或https://docs.prime.coinbase.com/?python#logon -a)使用Python 3.5和stunnel.除了我的登录消息之外,一切都正在工作,该消息被拒绝,服务器关闭会话而没有响应,因此很难调试出错的地方.我的Python代码如下:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("127.0.0.1", 4197)) # address and port specified in stunnel config file

# generate a signature according to the gdax protocol for signing a message:
timestamp = str(time.time())
message   = [timestamp, "A", "0", "f3e85389ffb809650c367d42b37e0a80", "Coinbase", "password-goes-here"] # these are the components of the pre-hash string as specified in the docs for a logon message
message   = bytes("|".join(message), 'utf-8') # add the field separator

hmac_key  = base64.b64decode(r"api-secret-goes-here")
signature = …
Run Code Online (Sandbox Code Playgroud)

python fix-protocol coinbase-api gdax-api

6
推荐指数
1
解决办法
2338
查看次数

Quickfix读取自定义重复组

我有从服务提供商那里得到的样本响应。他们定义了已经定义的标签(我已经从FIXimate检查)。

8=FIXT.1.19=108135=IB49=NSECM56=MTBM34=1924=1115=21828=61826=Nifty CPSE1815=2294.51816=2310.151817=2286.551818=2276.751819=2294.21820=1967852601488651821=262231822=257851823=0.771824=2799.551825=2139.51827=-1826=Nifty GrowSect 151815=7037.751816=7070.351817=7023.651818=6990.61819=7042.91820=7768216282514231821=782041822=750561823=0.751824=7354.551825=5942.151827= 1826=Nifty50 Value 201815=5444.71816=5465.61817=5417.41818=5413.61819=5425.91820=1.90667550936387E+151821=1348851822=1341791823=0.231824=5563.81825=4171.651827=-1826=Nifty Mid Liq 151815=4133.551816=4206.551817=4133.551818=4107.21819=4205.41820=1573956262705091821=428041822=442911823=2.391824=4677.051825=3770.551827=-1826=Nifty Pvt Bank1815=15385.21816=15415.51817=15339.751818=15248.81819=15377.71820=9015155094048031821=589741822=592681823=0.851824=16152.151825=13298.31827=+1826=NIFTY MIDCAP 1001815=19184.851816=19326.31817=19184.851818=19046.551819=19314.251820=7127426889917151821=1858871822=1884631823=1.411824=21840.851825=17700.91827=-10=174

问题是我无法阅读重复组。我创建一个自定义组

 noIndexRecords = int(message.getField(1828))
 if noIndexRecords > 0:
    group = fix.Group(1828, 1826, )
    message.getGroup(num=1, group=group)
Run Code Online (Sandbox Code Playgroud)

但这向我显示了一个FieldNotFound错误。我对规格文件进行了如下更改FIX50SP2.xml

新增栏位:

<field number='1815' name="OpenIndex" type="PRICE"/>
<field number='1816' name="HighIndex" type="PRICE"/>
<field number='1817' name="LowIndex" type="PRICE"/>
<field number='1818' name="CloseIndex" type="PRICE"/>
<field number='1819' name="IndexValue" type="PRICE"/>
<field number='1820' name="MarketCapitalization" type="DOUBLE"/>
<field number='1821' name="NoOfDownMoves" type="INT"/>
<field number='1822' name="NoOfUpMoves" type="INT"/>
<field number='1823' name="PercentageChange" type="DECIMAL"/>
<field number='1824' name="YearlyHigh" type="PRICE"/> …
Run Code Online (Sandbox Code Playgroud)

python quickfix fix-protocol python-3.x

6
推荐指数
1
解决办法
418
查看次数

如何使用 QuickFixJ 将字符串 FIX 消息转换为 FIX FIX50SP2 格式

需要快速帮助。我是 QuickFixJ 的新手。我的 txt 文件中有一条 FIX 消息。我需要将其转换为 FIX50SP2 格式。我附上代码片段。

String fixMsg = "1128=99=25535=X49=CME34=47134052=20100318-03:21:11.36475=20120904268=2279=122=848=336683=607400107=ESU2269=1270=140575271=152273=121014000336=2346=521023=1279=122=848=336683=607401107=ESU2269=1270=140600271=206273=121014000336=2346=681023=210=159";

System.out.println("FixMsg String:"+fixMsg);
Message FIXMessage = new Message();
DataDictionary dd = new DataDictionary("FIX50SP2.xml");
FIXMessage.fromString(fixMsg, dd, false);
System.out.println("FIXMessage Output:" + FIXMessage.toString()); // Print message after parsing
MsgType msgType = new MsgType();
System.out.println(FIXMessage.getField(msgType));
Run Code Online (Sandbox Code Playgroud)

这是输出:

FixMsg String:1128=99=15835=X49=CME34=47164052=2012090312102051175=20120904268=1279=122=848=336683=607745107=ESU2269=1270=140575271=123273=121020000336=2346=501023=110=205
FIXMessage Output:9=6135=X34=47164049=CME52=2012090312102051175=20120904268=110=117
quickfix.FieldNotFound: Field [35] was not found in message.
    at quickfix.FieldMap.getField(FieldMap.java:216)
    at quickfix.FieldMap.getFieldInternal(FieldMap.java:353)
    at quickfix.FieldMap.getField(FieldMap.java:349)
    at MainApp.main(MainApp.java:52)
Run Code Online (Sandbox Code Playgroud)

我想提取 MsgType 字段(字段 35)。你能告诉我我错在哪里吗?我观察到的是,解析为 FIX50SP2 格式后,转换 FIX 消息缺少许多数据元素(有关详细信息,请参阅输出)

谢谢

java quickfix fix-protocol

5
推荐指数
1
解决办法
7045
查看次数

如何在 QuickFixj 中动态地就 SenderCompID 和 TargetCompID 达成一致?

假设我正在运行一个基于网络的交换并且有一个新客户注册。我为该客户提供了一个新的 CompID,现在我想将该 CompID 添加到我的接受方。我是否必须重新启动我的接受器或者可以动态完成吗?

必须提前就 CompID 达成一致,然后将其粘贴到某处的配置中,这似乎不太具有可扩展性。

我见过一些据说可以做到这一点的示例,但它们似乎只是通过将配置设置为*. 还有其他方法可以做到这一点吗?

java quickfix fix-protocol quickfixj

5
推荐指数
2
解决办法
2523
查看次数

将 FIX 消息格式(“Tag=Value”)转换为 CSV

我有一个 35=S(报价消息;“标签=值”)的 csv/日志文件,我需要将费率提取到适当的 CSV 文件中以进行数据挖掘。这不是严格的 FIX 相关,它更多是关于如何清理数据集的 R 相关问题。

原始消息如下所示:

190=1.1204 ,191=-0.000029,193=20141008,537=0        ,631=1.12029575,642=0.000145,10=56
190=7.20425,191=0.000141 ,537=0       ,631=7.2034485,10=140        ,            ,
190=1.26237,191=0        ,537=1       ,10=068       ,              ,            ,
Run Code Online (Sandbox Code Playgroud)

我首先需要获得一个看起来像这样的中间数据集,其中对齐了相同的标签。

190=1.1204 ,191=-0.000029,193=20141008,537=0,631=1.12029575,642=0.000145,10=56
190=7.20425,191=0.000141 ,            ,537=0,631=7.2034485 ,            ,10=140
190=1.26237,191=0        ,            ,537=1,              ,            ,10=068
Run Code Online (Sandbox Code Playgroud)

反过来,这将需要转换为:

190    ,191      ,193     ,537,631       ,642     ,10
1.1204 ,-0.000029,20141008,0  ,1.12029575,0.000145,56
7.20425,0.000141 ,        ,0  ,7.2034485 ,        ,140
1.26237,0        ,        ,1  ,          ,        ,068
Run Code Online (Sandbox Code Playgroud)

我正在用 awk 开发一个 bash 脚本,但我想知道我是否可以在 R 中做到这一点。目前,我最大的挑战是到达中间表。从中间到决赛桌,我想到将 R 与 tidyr 包一起使用,特别是函数“separate”。如果有人可以提出更好的逻辑,我将不胜感激!

string bash r fix-protocol tidyr

5
推荐指数
1
解决办法
1612
查看次数

使用 QuickFIX 获取收到的 FIX 消息的所有现有字段

QuickFIX 是否提供在单个步骤中获取传入 FIX 消息的所有现有字段的可能性?(我为 Python 使用 1.14.3 版。)

根据 QuickFIX 文档,可以通过某种方式获取字段值:

price = quickfix.Price()
field = message.getField(price)
field.getValue()
Run Code Online (Sandbox Code Playgroud)

各种消息类型包含不同的字段,因此对每个字段都这样做会很尴尬。此外,有时不知道消息中是否存在某些字段。如何在不知道消息包含哪些字段的情况下获取消息的所有字段?

python quickfix fix-protocol

5
推荐指数
1
解决办法
1463
查看次数