任何人都可以推荐与 Delphi 一起使用的 FIX 引擎(商业或开源)吗?
是否可以将 QuickFIX 与 Delphi 一起使用?
任何人都可以推荐与 Delphi 一起使用的 FIX 引擎(商业或开源)吗?
是否可以将 QuickFIX 与 Delphi 一起使用?
看看B2BITS FIX 天线。有两种可能的选择:
http://www.b2bits.com/trading_solutions/fix_engines/fix_engine_cpp.html
http://www.b2bits.com/trading_solutions/fix_engines/fix_enginenet.html
如果您需要更多详细信息,请随时直接与我联系。
QuickFix 是一个 C++ 项目。
Python 和 Ruby 都使用 SWIG 将 C++ 类公开为原生 Python 和 Ruby 类。
.NET 包装器听起来像是 C++ 和 C# 代码的混合体。
不能直接在 Delphi 中导入 C++ 类。您必须使用“平面 API”转换,将所有 C++ 方法公开为纯 C 声明,以便在 Delphi 单元中导入外部结构和函数。
据我所知,没有这样的 QuickFIX 的“平面 API”可用,也没有能够生成 Delphi 代码的 SWIG 版本。您必须用 C++ 编写自己的包装器,或者用 Delphi 编写自己的 FIX 实现。
我所知道的 Delphi 的唯一 FIX 库是来自http://www.b2bits.com的库——它在几年前确实存在,但我不确定它是否仍然被出售/维护——它们似乎只维护一个 DotNet 版本。在所有情况下都值得向他们询问价格和可用性。
这可能更像是一种 hack,但您可以通过python4delphi在 Delphi 中使用 Python QuickFIX 绑定。虽然这是很多层(Delphi 到 Python 到 C++)。
Python 是一种易于使用和学习的语言,它很容易调用和创建 python 对象(或伪装成 python 对象的本机 C 包装器)并直接从 Python4Delphi API 调用它们。
除此之外,正如 ABouchez 所说,构建程序(平面)API 对您来说可能很少工作。我不会编写一百万个函数,而是只编写我需要的函数,然后在 VC++ DLL 中实现这些简单的函数:
QuickFixInit;
QuickFixCleanup;
handle := QuickFixLoadFile(filename)
QuickFixSaveFile(handle)
handle2 := QuickFixGetObjectHandle(handle,index,...);
QuickFixModifyObjectProperty(handle2, propertyname, propertyvalue );
QuickFixExecuteSomeAction( handle2, actionname, param1,param2,param3 );
以上只是给你的味道。我对内部 API 一无所知,但我在上面向您展示的是您不需要 100% 符合 API 来编写包装器。您可能(如果您了解 C/C++)编写一个功能性包装器来满足您的需求,然后将其导出,将其链接到 DLL,然后将 QuickFix.dll 导入 Python 只需很少(专家的 2-4 小时)时间)工作,如果你对 Visual C++ 有足够的了解,可以编写一些简单的 C 风格(非 OOP)函数来实例化 C++ 类并调用 C++ 方法。
可以通过包含 QuickFIx 的 C++Builder 包 (BPL) 将 C++ API 公开给 Delphi,但是 (a) 需要对源代码进行一些修改,并且 (b) QuickFix 中的 C++ 代码或其依赖项可能未经重大修改,不得在 C++Builder 中构建。
将协议与 Delphi 集成的一种方法是构建 .Net 或 Java 桥,例如: