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

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

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

4 ответа

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

  • 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

Не стесняйтесь связаться со мной напрямую, если вам нужно больше деталей.

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. Стоит спросить их о ценах и доступности, во всех случаях.

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

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

Вероятно, это скорее хак, чем что-либо еще, но вы можете использовать привязки 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, но (а) потребуются некоторые модификации исходного кода, и (б) код C++ в QuickFix или его зависимости могут не строить в C++Builder без существенных изменений.

Другие вопросы по тегам