Delphi的FIX协议引擎?

时间:2011-07-26 14:00:30

标签: delphi protocols quickfix fix-protocol

任何人都可以推荐使用FIX引擎(商业或开源)与Delphi一起使用吗?

是否可以将QuickFIX与Delphi一起使用?

4 个答案:

答案 0 :(得分:2)

查看 B2BITS FIX Antenna 。有两种可能的选择:

  • FIX Antenna C ++具有可在Delphi中使用的ANSI C接口(包中有样本)

http://www.b2bits.com/trading_solutions/fix_engines/fix_engine_cpp.html

  • FIX Antenna .NET可以在Delphi .NET中使用(包中还有一个示例;程序员指南也包含Delphi.NET示例)

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桥,例如:

  • 使用.Net C#实现构建一个与FIX端通信的小型应用程序
  • 然后通过SOAP Web服务公开此.Net应用程序的方法(甚至可能是对象)
  • 使用Delphi的Web服务客户端代码生成器导入SOAP WSDL
  • 从Delphi端访问Web服务

答案 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中构建。