Механизм протокола 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 без существенных изменений.