Може ли някой да препоръча 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) и да ги извиквате директно от API на Python4Delphi.
Като изключим това, може да е много малко работа за вас да създадете процедурен (плосък) API, както каза ABouchez. Вместо да пиша милион функции, бих написал само тези, от които имах нужда, и след това бих внедрил тези прости функции във VC++ DLL:
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 (не OOP), които инстанцират C++ класове и извикват C++ методи.
Може да е възможно да се изложат C++ API на Delphi чрез пакет C++Builder (BPL), съдържащ QuickFIx, но (a) ще са необходими някои модификации на източника и (b) C++ кодът в QuickFix или неговите зависимости може да не се изгражда в C++Builder без значителни модификации.