나는 FIX에서 새롭고 거래 시스템과 통신하기 위해 작은 FIX 엔진을 개발해야한다는 요구 사항이 있습니다. 내가 알고 있듯이 많은 FIX 엔진을 사용할 수 있지만 여기에서는 요구 사항을 개발하는 것입니다. 누구나 오픈 소스 나 좋은 기사에 대한 참조를 제공 할 수 있습니까?FIX 엔진 개발
답변
는 Fix message constructions 참조하려면 .NET 사용 VersaFix
를 들어
QuickfixJ를 사용합니다.
두 라이브러리 (Quickfix)는 모두 FIX 프로토콜 표준에서 언급 한 것과 동일한 명명법을 사용합니다. 하지만 그들은 여기 저기에 작은 버그가 있지만 소스 코드에서 수정할 수 있습니다. 저는 상업 프로젝트에서 두 라이브러리를 모두 사용했으며 라이브러리 작업을보고 나서 이렇게 말합니다. 그러나 코드는 매우 간단하며 함께 작업 할 온라인 참조 설명서가 있습니다.
그러나 자신의 라이브러리를 개발하는 것은 한 명의 개발자에게 큰 작업이 될 것입니다. 팀이 있다면 훨씬 쉽게 작업 할 수 있습니다. 구문 분석 이외에 네트워크 통신을 통합해야하며,이를 실행하는 방법에 대한 구성과 구조 스레딩도 기억해야합니다.
자신 만의 FIX 엔진을 개발하는 것은 쉽지 않습니다. 특히 FIX 세션 레벨의 세부 사항을 직접 처리하는 경우는 쉽지 않습니다. ResendRequest, GapFill 및 SequenceReset을 통해 시퀀스를 동기화하는 것은 쉽지 않으며 이미 해당 작업을 수행중인 FIX 엔진 만 사용할 수 있으면 좋을 것입니다.
고정 프로토콜의 또 다른 문제점은 그룹 반복입니다. 재귀가 필요하거나 복잡한 반복 구현이 필요하기 때문에 신속하게 구문 분석하는 것은 쉽지 않습니다.
또한 대부분의 Java FIX 엔진은 메시지를 구문 분석 할 때 가비지를 많이 생성하므로 GC 오버 헤드로 인한 분산 및 대기 시간이 증가합니다.
마지막으로 FIX 개발을 가속화하는 데 직관적 인 API 디자인이 중요합니다. 깨끗한 API의 좋은 예를 보려면 CoralFIX을 확인하십시오.
면책 조항 : 나는 CoralFIX 개발자 중 한 명입니다.
DumbCoder에게 감사드립니다. 한 가지 더 궁금한 점은 많은 클라이언트를 처리하기 위해 서버에서 어떤 아키텍트가 사용될 것인가? – CrazyC
@ Saurabh01 - Quickfix는 세션 당 하나의 스레드를 사용하므로 시도해 볼 수 있습니다. – DumbCoder
매우 큰 작업은 아니지만, 요구 사항에 따라 2 주에서 1 년 반 정도 소요될 수 있습니다. –