标签: fix-protocol

QuickFIX/J 启动器 - 在登录时设置用户名和密码

我正在开发使用 FIX 协议和 quickfixj 框架连接到金融市场的解决方案。具体来说,我正在实现一个发起者,我需要连接到接受者,指定用户名和密码。关于如何将 Logon 消息中的这些字段传递给服务器,quickfixj 文档在这方面不是很清楚。

经过我发现它是放在函数toAdmin中的,我在这个函数中放入了以下代码:

@Override
public void toAdmin(Message message, SessionID sessionId) {

    Session.lookupSession(sessionId).setTargetDefaultApplicationVersionID(new ApplVerID("9"));

    final Message.Header header = message.getHeader();      

     try {
        if ( header.getField(new BooleanField(MsgType.FIELD)).equals(MsgType.LOGON) ) {                  
                message.setField(new StringField(Username.FIELD, "user")); 
                message.setField( new StringField(Password.FIELD, "pass"));
                System.out.println(">>> " + message.toRawString()); 
             }
    } catch (FieldNotFound e) {
        // TODO Auto-generated catch block

        e.printStackTrace();
    } 
}
Run Code Online (Sandbox Code Playgroud)

但是我仍然无法执行登录过程,并且在尝试登录时它会向我显示下一个日志。

<20190313-14:44:33, FIXT.1.1:aaa->bbb, outgoing> (8=FIXT.1.1 9=74 35=A 34=1 49=aaa 52=20190313-14:44:33.431 56=bbb 98=0 108=30 1137=9 10=131 )
<20190313-14:44:33, FIXT.1.1:aaa->bbb, event> (Initiated logon request)
<20190313-14:44:33, …
Run Code Online (Sandbox Code Playgroud)

java fix-protocol quickfixj

1
推荐指数
2
解决办法
1797
查看次数

quickfix/j SessionSettings仅加载文件配置中的最后一个会话

当我尝试使用配置文件的URL调用SessionSettings的构造函数时,它只加载文件中存在的最后一个会话.

我试过打印我的代码从配置文件中读取的内容,但我得到了这个:

[DEFAULT]
StartTime=00:00:00
EndTime=23:59:59
ReconnectInterval=5
TargetCompID=Server
SenderCompID=Client
DataDictionary=C:\config\FIX42.xml
HeartBtInt=30
FileStorePath=C:\logsBadisInitiatorStore
UseDataDictionary=Y
FileLogPath=C:\logsBadisInitiator
[SESSION]
StartTime=00:00:00
ConnectionType=acceptor
EndTime=23:59:59
BeginString=FIX.4.2
SocketAcceptPort=9878
TargetCompID=server1
SessionName=badisAcc289
SenderCompID=client1
SocketAcceptAddress=localhost
UseDataDictionary=N
Run Code Online (Sandbox Code Playgroud)

但我的配置文件包含更多:

[default]
FileStorePath=data
SenderCompID=Client
TargetCompID=Server
FileLogPath=C:\logsBadisInitiator
StartTime=00:00:00 
EndTime=23:59:59
HeartBtInt=30
ReconnectInterval=5
UseDataDictionary=Y
DataDictionary=C:\config\FIX42.xml
FileStorePath=C:\logsBadisInitiatorStore

[session] 
SessionName=badisAcc2
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=acceptor
SocketAcceptPort=9878
SocketAcceptAddress=localhost
StartTime=00:00:00
EndTime=23:59:59
UseDataDictionary=N

[session] 
SessionName=test211
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=initiator
SocketConnectPort=9878
SocketConnectHost=localhost
StartTime=00:00:00
EndTime=23:59:59
UseDataDictionary=N

[session] 
SessionName=badisAcc3
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=acceptor
SocketAcceptPort=9878
SocketAcceptAddress=localhost
StartTime=00:00:00
EndTime=23:59:59
UseDataDictionary=N

[session] 
SessionName=badisAcc4
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=acceptor
SocketAcceptPort=9878
SocketAcceptAddress=localhost
StartTime=00:00:00
EndTime=23:59:59 …
Run Code Online (Sandbox Code Playgroud)

java quickfix fix-protocol quickfixj

0
推荐指数
1
解决办法
865
查看次数

Quickfix C+ FIXT.1.1 和 FIX.5.0 的 BeginString 不正确 - FIX.5.0SP2

我正在创建一个使用 FIX.5.0SP2 的发起者和接受者。"58":"Incorrect BeginString"我在登录时、接受方(以及发起方的 fromAdmin)上收到错误。我相信我的配置是正确的:

发起人:

# 会话的默认设置
[默认]
连接类型=发起者
重新连接间隔=60
使用本地时间=Y
持久消息=Y
文件存储路径=./data
文件日志路径=./log
HttpAcceptPort=9016
发件人CompID=X
开始字符串=FIXT.1.1
TransportDataDictionary=./support/FIXT11.xml

[会议]
目标化合物 ID=Y
开始时间=00:00:00
结束时间=23:59:59
HeartBtInt=30
套接字连接端口=8599
SocketConnectHost=本地主机
DefaultApplVerID=FIX.5.0SP2
AppDataDictionary=./support/FIX50SP2.xml

受体:

# 会话的默认设置
[默认]
连接类型=接受者
重新连接间隔=60
使用本地时间=Y
持久消息=Y
PostgreSQLStoreDatabase=quickfix
PostgreSQLStoreUser=xx
PostgreSQLStoreHost=本地主机
PostgreSQLStorePort=5432
PostgreSQLStoreUseConnectionPool=Y
PostgreSQLLogDatabase=quickfix
PostgreSQLLogUser=电子
PostgreSQLLogHost=本地主机
PostgreSQLLogPort=5432
PostgreSQLLogUseConnectionPool=Y
文件存储路径=./data
文件日志路径=./log
HttpAcceptPort=9212
发件人CompID=Y
开始字符串=FIXT.1.1
TransportDataDictionary=./support/FIXT11.xml

[会议]
目标化合物 ID=X
开始时间=00:00:00
结束时间=23:59:59
HeartBtInt=30
套接字接受端口=8599
DefaultApplVerID=FIX.5.0SP2
AppDataDictionary=./support/FIX50SP2.xml

我尝试了各种排列,但似乎都不起作用。

BeginString逻辑是否有错误?

谢谢,

马特

编辑:添加日志:

接受器事件日志:http://gist.github.com/mateodelnorte/167a83990801d7bb506e
接受者消息日志:http://gist.github.com/mateodelnorte/6d1f400a4e61875afee9

发起者事件日志:http://gist.github.com/mateodelnorte/a376c6cc0eb0f71bd222
发起者消息日志:http://gist.github.com/mateodelnorte/5c1b0c4ca2dda3e93b29

c++ quickfix fix-protocol

0
推荐指数
1
解决办法
3022
查看次数

FIX 协议:指定的标签不符合要求

我收到 35=D (NewOrderSingle) 请求的拒绝响应。想知道可能是什么问题。我正在关注这个文件

FIX.4.4:Paragxxxx_FIX->CfhDemoPrices:Trade------client toApp-----------8=FIX.4.4 9=163 35=D 34=2 49=Paragxxxx_FIX 52=20200227-04:30:02.863 56=CfhDemoPrices 11=FGQ_MLM_01_20200225-08:48:28 21=1 38=10000 40=1 54=1 55=EURUSD 60=20200227-04:30:02.861 10=182

FIX.4.4:Paragxxxx_FIX->CfhDemoPrices:Trade------client else fromAdmin--------8=FIX.4.4 9=136 35=3 34=2 49=CfhDemoPrices 52=20200227-04:30:05.925 56=Paragxxxxx_FIX 45=2 58=Tag specified out of required order 371=50 372=D 373=14 10=042
Run Code Online (Sandbox Code Playgroud)

添加 SenderSubid ( 50 ) 后,下面是请求和响应

8=FIX.4.4 9=183 35=D 34=2 49=Paragxxxxxx_FIX 50=L6UtbRZvhwEFuZft 52=20200301-23:20:52.088 56=CfhDemoPrices 11=FGQ_MLM_01_20200225-08:48:28 21=1 38=10000 40=1 54=1 55=EURUSD 60=20200301-23:20:52.087 10=056

8=FIX.4.49=136 35=3 34=2 49=CfhDemoPrices 52=20200301-23:20:52.172 56=Paragxxxxxx_FIX 45=2 58=Tag specified out of required order 371=50 372=D 373=14  10=031
Run Code Online (Sandbox Code Playgroud)

fix-protocol quickfixj

0
推荐指数
1
解决办法
546
查看次数

请求 ICE TradeCaptureReport 时,FIX 消息被“截断”

当请求 ICE TradeCaptureReport 消息时,FIX 消息被“截断”。这导致我们没有使用消息的“重复组”(如派对、腿详细信息)。

我们还没有使用任何数据字典。解决此问题的任何解决方案。

ice quickfix fix-protocol quickfixj

0
推荐指数
1
解决办法
102
查看次数

标签 统计

fix-protocol ×5

quickfixj ×4

quickfix ×3

java ×2

c++ ×1

ice ×1