Может ли кто-нибудь порекомендовать FIX Engine (коммерческий или с открытым исходным кодом) для использования с Delphi?
Можно ли использовать QuickFIX с Delphi?
Может ли кто-нибудь порекомендовать FIX Engine (коммерческий или с открытым исходным кодом) для использования с Delphi?
Можно ли использовать QuickFIX с Delphi?
Взгляните на антенну B2BITS FIX. Возможны два варианта:
http://www.b2bits.com/trading_solutions/fix_engines/fix_engine_cpp.html
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, например:
Вероятно, это скорее хак, чем что-либо еще, но вы можете использовать привязки 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 без существенных модификаций.