将 F# 应用程序连接到 FIXImulator
Connecting F# app to FIXImulator
我正在尝试将我的 F# 应用程序与 FIXImulator 连接。 FIXImulator 在本地机器上 运行 并侦听端口 9878。应用程序编译并运行(它也可以在交互模式下工作)。
但是,连接从未建立。我不认为问题出在我的代码上,因为它运行并尝试建立连接。在执行此操作的方法下方:
type FIXEngine() =
let settings = new SessionSettings(@"C:\Users\pw\Documents\Visual Studio 2013\Projects\FSharpForQuantFirst\TradingSystem\config.cfg")
let application = new ClientInitiator()
let storeFactory = FileStoreFactory(settings)
let logFactory = new ConsoleLogFactory(settings)
let messageFactory = new MessageFactory()
let initiator = new SocketInitiator(application, storeFactory, settings)
let ids = initiator.GetSessionIDs()
let st = initiator.Start() |> ignore
member this.init() : unit = ()
member this.start() : unit = initiator.Start()
initiator
有一个 Connected
标志。该标志设置为 false
。也没有返回会话 ID。
我在主模块中初始化我的代码:
module Main =
let fixEngine = new FIX.FIXEngine()
fixEngine.init()
fixEngine.start()
[<EntryPoint>]
let main argv =
printfn "%A" argv
0
我的应用程序使用以下配置文件:
[DEFAULT]
ConnectionType=initiator
ReconnectInterval=60
SenderCompID=TRADINGSYSTEM
[SESSION]
BeginString=FIX.4.2
TargetCompID=FIXIMULATOR
StartTime=00:00:00
EndTime=00:00:00
HeartBtInt=30
ReconnectInterval=10
SocketConnectPort=9878
SocketConnectHost=0.0.0.0
FileStorePath=temp
ValidateUserDefinedFields=N
ResetOnLogon=Y
ResetOnLogout=Y
ResetOnDisconnect=Y
FIXImulator的配置如下:
[DEFAULT]
FIXimulatorLogToFile=N
FIXimulatorLogToDB=N
FIXimulatorAutoPendingCancel=N
FIXimulatorAutoPendingReplace=N
StartTime=00:00:00
FIXimulatorSendOnBehalfOfCompID=N
FIXimulatorAutoAcknowledge=N
FIXimulatorAutoCancel=N
FIXimulatorAutoReplace=N
FIXimulatorPricePrecision=4
FIXimulatorSendOnBehalfOfSubID=N
SocketAcceptPort=9878
RefreshMessageStoreAtLogon=Y
BeginString=FIX.4.2
HeartBtInt=30
EndTime=00:00:00
ConnectionType=acceptor
DataDictionary=FIX42.xml
FileStorePath=data
FIXimulatorCachedObjects=50
JdbcURL=jdbc:mysql://localhost:3306/quickfix
JdbcUser=fiximulator
JdbcPassword=fiximulator
JdbcDriver=com.mysql.jdbc.Driver
[SESSION]
FileLogPath=logs
OnBehalfOfSubID=DESK
TargetCompID=TRADINGSYSTEM
SenderCompID=FIXIMULATOR
OnBehalfOfCompID=BROKER
我一直在尝试不同的配置设置,但两天后我 运行 缺乏想法。
代码来自"F# for Quantitative Finance"。非常感谢您对建立连接的任何帮助。
正如评论中所建议的,一个问题是第一个配置文件中的目标 IP 地址。我不得不将它从 0.0.0.0
改回 127.0.0.1
。
除此之外,我在上面的代码中发现了另外两个问题。
一个问题是我试图在连接开始之前获取会话 ID:
initiator.GetSessionIDs()
其次,我试图启动 FIXEngine
两次。来自 FIXEngine
的主体和 Main
模块。从 FIXEngine
类型的主体中删除 Start
和 GetSessionIDs
后,我顺利连接到 FIXImulator。
我正在尝试将我的 F# 应用程序与 FIXImulator 连接。 FIXImulator 在本地机器上 运行 并侦听端口 9878。应用程序编译并运行(它也可以在交互模式下工作)。
但是,连接从未建立。我不认为问题出在我的代码上,因为它运行并尝试建立连接。在执行此操作的方法下方:
type FIXEngine() =
let settings = new SessionSettings(@"C:\Users\pw\Documents\Visual Studio 2013\Projects\FSharpForQuantFirst\TradingSystem\config.cfg")
let application = new ClientInitiator()
let storeFactory = FileStoreFactory(settings)
let logFactory = new ConsoleLogFactory(settings)
let messageFactory = new MessageFactory()
let initiator = new SocketInitiator(application, storeFactory, settings)
let ids = initiator.GetSessionIDs()
let st = initiator.Start() |> ignore
member this.init() : unit = ()
member this.start() : unit = initiator.Start()
initiator
有一个 Connected
标志。该标志设置为 false
。也没有返回会话 ID。
我在主模块中初始化我的代码:
module Main =
let fixEngine = new FIX.FIXEngine()
fixEngine.init()
fixEngine.start()
[<EntryPoint>]
let main argv =
printfn "%A" argv
0
我的应用程序使用以下配置文件:
[DEFAULT]
ConnectionType=initiator
ReconnectInterval=60
SenderCompID=TRADINGSYSTEM
[SESSION]
BeginString=FIX.4.2
TargetCompID=FIXIMULATOR
StartTime=00:00:00
EndTime=00:00:00
HeartBtInt=30
ReconnectInterval=10
SocketConnectPort=9878
SocketConnectHost=0.0.0.0
FileStorePath=temp
ValidateUserDefinedFields=N
ResetOnLogon=Y
ResetOnLogout=Y
ResetOnDisconnect=Y
FIXImulator的配置如下:
[DEFAULT]
FIXimulatorLogToFile=N
FIXimulatorLogToDB=N
FIXimulatorAutoPendingCancel=N
FIXimulatorAutoPendingReplace=N
StartTime=00:00:00
FIXimulatorSendOnBehalfOfCompID=N
FIXimulatorAutoAcknowledge=N
FIXimulatorAutoCancel=N
FIXimulatorAutoReplace=N
FIXimulatorPricePrecision=4
FIXimulatorSendOnBehalfOfSubID=N
SocketAcceptPort=9878
RefreshMessageStoreAtLogon=Y
BeginString=FIX.4.2
HeartBtInt=30
EndTime=00:00:00
ConnectionType=acceptor
DataDictionary=FIX42.xml
FileStorePath=data
FIXimulatorCachedObjects=50
JdbcURL=jdbc:mysql://localhost:3306/quickfix
JdbcUser=fiximulator
JdbcPassword=fiximulator
JdbcDriver=com.mysql.jdbc.Driver
[SESSION]
FileLogPath=logs
OnBehalfOfSubID=DESK
TargetCompID=TRADINGSYSTEM
SenderCompID=FIXIMULATOR
OnBehalfOfCompID=BROKER
我一直在尝试不同的配置设置,但两天后我 运行 缺乏想法。
代码来自"F# for Quantitative Finance"。非常感谢您对建立连接的任何帮助。
正如评论中所建议的,一个问题是第一个配置文件中的目标 IP 地址。我不得不将它从 0.0.0.0
改回 127.0.0.1
。
除此之外,我在上面的代码中发现了另外两个问题。
一个问题是我试图在连接开始之前获取会话 ID:
initiator.GetSessionIDs()
其次,我试图启动 FIXEngine
两次。来自 FIXEngine
的主体和 Main
模块。从 FIXEngine
类型的主体中删除 Start
和 GetSessionIDs
后,我顺利连接到 FIXImulator。