{"id":2299,"date":"2024-03-20T20:00:00","date_gmt":"2024-03-20T19:00:00","guid":{"rendered":"https:\/\/alax.info\/blog\/?p=2299"},"modified":"2024-03-30T15:12:51","modified_gmt":"2024-03-30T14:12:51","slug":"breaking-the-rules-a-quick-and-dirty-approach-to-fx-trading-automation","status":"publish","type":"post","link":"https:\/\/alax.info\/blog\/2299","title":{"rendered":"Breaking the Rules: A Quick and Dirty Approach to FX Trading Automation"},"content":{"rendered":"<p><iframe loading=\"lazy\" src=\"https:\/\/www.linkedin.com\/embed\/feed\/update\/urn:li:share:7173983006448058368\" height=\"839\" width=\"504\" frameborder=\"0\" allowfullscreen=\"\" title=\"Embedded post\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the truly unconventional development projects was our development of specialized automated agent for foreign exchange (FX) trading.<\/p>\n<p>The customer wanted to implement their unusual ideas at one (and then another) of the popular electronic Forex market trading platforms. The key idea was to be a market maker and a liquidity provider agent, and also to be able to provide the fastest reaction to market events.<\/p>\n<p>Applications like this, that are touching big\/real money are normally developed in respective way: robust tooling, a well-established software stack, comprehensive unit test coverage, peer-reviewed code, and thorough documentation.<\/p>\n<p>We were breaking all the rules! That time we took a different approach \u2014 a quick and dirty one.<\/p>\n<p>Singlehandedly and rather straightforwardly, we implemented a #FIX (Financial Information eXchange) client in C++ addressing ultra-low latency, and the application was running on a box connected via secure fiber connection with the platform data center located in neighboring building.<\/p>\n<p>At the peak of the swing, we had positions at CurrenEx worth a jaw-dropping $15 million. Yeah, you read that right. Fifteen million bucks! <\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[629],"tags":[38,269,582,632],"class_list":["post-2299","post","type-post","status-publish","format-standard","hentry","category-linkedin","tag-c","tag-fix","tag-fx","tag-latency"],"_links":{"self":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts\/2299","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/comments?post=2299"}],"version-history":[{"count":0,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts\/2299\/revisions"}],"wp:attachment":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/media?parent=2299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/categories?post=2299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/tags?post=2299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}