任何人都可以推荐使用FIX引擎(商业或开源)与Delphi一起使用吗?
是否可以将QuickFIX与Delphi一起使用?
答案 0 :(得分:2)
查看 B2BITS FIX Antenna 。有两种可能的选择:
http://www.b2bits.com/trading_solutions/fix_engines/fix_engine_cpp.html
http://www.b2bits.com/trading_solutions/fix_engines/fix_enginenet.html
如果您需要更多详细信息,请随时与我联系。
答案 1 :(得分:1)
QuickFix是一个C ++项目。
Python和Ruby都使用SWIG将C ++类公开为本机Python和Ruby类。
.NET包装器听起来像是C ++和C#代码的混合。
直接在Delphi中导入C ++类是不可能的。您必须使用“平面API”转换,将所有C ++方法公开为纯C声明,以便在Delphi单元中导入外部结构和函数。
据我所知,QuickFIX没有这样的“平面API”,也没有能够生成Delphi代码的SWIG版本。你必须用C ++编写自己的包装器,或者在Delphi中编写自己的FIX实现。
我所知道的唯一一个来自http://www.b2bits.com的FIX库 - 它确实存在于几年前,但我不确定它是否仍在销售/维护 - 它们似乎只保留了DotNet版本。在所有情况下都值得向他们询问价格和可用性。
答案 2 :(得分:0)
将协议与Delphi集成的一种方法是构建.Net或Java桥,例如:
答案 3 :(得分:0)
这可能比其他任何东西更糟糕,但你可以通过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中构建。