Механизм протокола FIX для Delphi? - PullRequest
2 голосов
/ 26 июля 2011

Кто-нибудь может порекомендовать FIX Engine (коммерческий или с открытым исходным кодом) для использования с Delphi?

Можно ли использовать QuickFIX с Delphi?

Ответы [ 4 ]

2 голосов
/ 12 января 2012

Взгляните на B2BITS FIX Antenna .Возможны два варианта:

  • FIX Antenna C ++ имеет интерфейс ANSI C, который можно использовать в Delphi (в комплекте есть образец)

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

  • FIX Антенна .NET может использоваться в Delphi .NET (снова есть образец в пакете; также руководство для программиста содержит примеры Delphi.NET)

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

Не стесняйтесь обращаться ко мне напрямую, если вам нужна дополнительная информация.

1 голос
/ 26 июля 2011

QuickFix - это проект C ++.

И Python, и Ruby используют SWIG для представления классов C ++ как собственных классов Python и Ruby.

. Оболочка .NET звучит как смесь кода C ++ и C #.

Невозможно импортировать классы C ++ в Delphi напрямую. Чтобы импортировать внешние структуры и функции в модуль Delphi, вам нужно будет использовать преобразование «плоского API», в котором все методы C ++ будут представлены в виде простых объявлений C.

Насколько мне известно, не существует такого "плоского API" QuickFIX, и нет версии SWIG, способной генерировать код Delphi. Вам придется написать свою собственную оболочку на C ++ или, возможно, написать собственную реализацию FIX на Delphi.

Единственная библиотека FIX, которую я знаю для Delphi, это библиотека из http://www.b2bits.com - она ​​существовала несколько лет назад, но я не уверен, что она все еще продается / поддерживается - кажется, она поддерживает только версию DotNet. Во всех случаях стоит спросить их о ценах и наличии.

0 голосов
/ 27 июля 2011

Это, вероятно, скорее хак, чем что-либо еще, но вы могли бы использовать привязки Python QuickFIX в Delphi через python4delphi . Хотя это много слоев (от Delphi до Python до C ++).

Python - это простой в использовании и изучении язык, который легко вызывать и создавать объекты Python (или встроенные оболочки C, которые претендуют на то, чтобы быть объектами Python) и вызывать их непосредственно из API Python4Delphi.

За исключением этого, вам может потребоваться совсем немного усилий для создания процедурного (плоского) API, как сказал ABouchez. Вместо написания миллиона функций я бы написал только те, которые мне были нужны, а затем реализовал эти простые функции в DLL-библиотеке VC ++:

   QuickFixInit;
   QuickFixCleanup;
   handle := QuickFixLoadFile(filename)
   QuickFixSaveFile(handle)
   handle2 := QuickFixGetObjectHandle(handle,index,...); 
   QuickFixModifyObjectProperty(handle2, propertyname, propertyvalue );
   QuickFixExecuteSomeAction( handle2, actionname, param1,param2,param3 );

Вышесказанное просто для того, чтобы дать вам вкус. Я ничего не знаю о внутреннем API, но выше я показываю, что вам не нужно полностью соответствовать API для написания оболочки. Возможно, вы могли бы (если вы знаете C / C ++) написать функциональную оболочку, которая делает то, что вам нужно, и экспортировать ее, связать ее с DLL, а затем импортировать QuickFix.dll в Python с очень небольшим (2-4 часа работы эксперта). время), если вы знаете Visual C ++ достаточно хорошо, чтобы написать несколько простых функций в стиле C (не ООП), которые создают экземпляры классов C ++ и вызывают методы C ++.

Возможно, можно представить API C ++ для Delphi через пакет C ++ Builder (BPL), содержащий QuickFIx, но (a) потребуются некоторые модификации исходного кода и (b) код C ++ в QuickFix или его зависимости не могут быть встроены в C ++ Builder без существенных изменений.

0 голосов
/ 27 июля 2011

Одним из способов интеграции протокола с Delphi было бы создание моста .Net или Java, например:

  • использование реализации .Net C # для создания небольшого приложения для взаимодействия со стороной FIX
  • и затем предоставляет методы (и, возможно, даже объекты) этого приложения .Net через веб-службы SOAP
  • использует генератор кода клиента веб-службы Delphi для импорта доступа SOAP WSDL
  • веб-сервис со стороны Delphi
...