Механизм протокола FIX для Delphi?

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

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


person hohoho    schedule 26.07.2011    source источник
comment
Согласно странице проекта QuickFix: API доступны для C++, .NET, Python и Ruby. Из этого списка наиболее полезными являются C++ API. Вы исследовали?   -  person Cosmin Prund    schedule 26.07.2011
comment
@Cosmin, C++ API использует классы и пространства имен, которые непросто импортировать в среду, отличную от C++. (Их также не так просто импортировать в среду C++, если среда C++ не идентична среде разработки DLL.)   -  person Rob Kennedy    schedule 26.07.2011


Ответы (4)


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

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

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

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

person Alik Rivkind    schedule 12.01.2012

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

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

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

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

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

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

person Arnaud Bouchez    schedule 26.07.2011

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

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

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

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

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

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

person Warren P    schedule 27.07.2011