Building Automated Trading Systems

With an Introduction to Visual C++.NET 2005


  • Benjamin Van Vliet, Lecturer in and the Associate Director of the Masters in Financial Markets Program, Stuart School of Business, Illinois Institute of Technology, USA

Over the next few years, the proprietary trading and hedge fund industries will migrate largely to automated trade selection and execution systems. Indeed, this is already happening. While several finance books provide C++ code for pricing derivatives and performing numerical calculations, none approaches the topic from a system design perspective. This book will be divided into two sections—programming techniques and automated trading system ( ATS ) technology—and teach financial system design and development from the absolute ground up using Microsoft Visual C++.NET 2005. MS Visual C++.NET 2005 has been chosen as the implementation language primarily because most trading firms and large banks have developed and continue to develop their proprietary algorithms in ISO C++ and Visual C++.NET provides the greatest flexibility for incorporating these legacy algorithms into working systems. Furthermore, the .NET Framework and development environment provide the best libraries and tools for rapid development of trading systems.The first section of the book explains Visual C++.NET 2005 in detail and focuses on the required programming knowledge for automated trading system development, including object oriented design, delegates and events, enumerations, random number generation, timing and timer objects, and data management with STL.NET and .NET collections. Furthermore, since most legacy code and modeling code in the financial markets is done in ISO C++, this book looks in depth at several advanced topics relating to managed/unmanaged/COM memory management and interoperability. Further, this book provides dozens of examples illustrating the use of database connectivity with ADO.NET and an extensive treatment of SQL and FIX and XML/FIXML. Advanced programming topics such as threading, sockets, as well as using C++.NET to connect to Excel are also discussed at length and supported by examples.The second section of the book explains technological concerns and design concepts for automated trading systems. Specifically, chapters are devoted to handling real-time data feeds, managing orders in the exchange order book, position selection, and risk management. A .dll is included in the book that will emulate connection to a widely used industry API ( Trading Technologies, Inc.’s XTAPI ) and provide ways to test position and order management algorithms. Design patterns are presented for market taking systems based upon technical analysis as well as for market making systems using intermarket spreads. As all of the chapters revolve around computer programming for financial engineering and trading system development, this book will educate traders, financial engineers, quantitative analysts, students of quantitative finance and even experienced programmers on technological issues that revolve around development of financial applications in a Microsoft environment and the construction and implementation of real-time trading systems and tools.
View full description


Primary audience: financial engineers, quantitative analysts, programmers in trading companies; graduate students in financial engineering and financial markets courses and programs.


Book information

  • Published: March 2007
  • ISBN: 978-0-7506-8251-0


"Building Automated Trading Systems is a must read for anyone developing professional algorithmic trading systems. It brings all aspects of design, functionality and real-time system implementation into clear step-by-step focus. This book will be a first choice reference manual for the serious professional .NET programmer in trading system development." -- Russell Wojcik, Member of CME and CBOT, Head of Trading Strategy Concentration, Illinois Institute of Technology "This book is an excellent primer for anyone interested in developing automated or semi-automated trading applications. Ben covers the programming knowledge needed to develop successful trading applications. A must have for traders getting into programming and programmers getting into trading. It will also serve as a useful reference for developing more sophisticated trading tools." -- Sagy P. Mintz, Vice President, Trading Technologies, Inc.

Table of Contents

Chapter 1 IntroductionSection I: Introduction to Visual C++.NET 2005Chapter 2 The .NET FrameworkChapter 3 Tracking References Chapter 4 Classes and ObjectsChapter 5 Reference TypesChapter 6 Value TypesChapter 7 Unmanaged ObjectsChapter 8 CompositionChapter 9 PropertiesChapter 10 Structures and EnumerationsChapter 11 InheritanceChapter 12 Converting and CastingChapter 13 Operator OverloadingChapter 14 Delegates and EventsChapter 15 ArraysChapter 16 Generating Random NumbersChapter 17 Time and TimersChapter 18 Input and Output StreamsChapter 19 Exception HandlingChapter 20 CollectionsChapter 21 STL/STL.NETChapter 22 DataSetsChapter 23 Connecting to DatabasesChapter 24 Structured Query LanguageChapter 25 XMLChapter 26 Financial Information Exchange ProtocolChapter 27 SerializationChapter 28 Windows ServicesChapter 29 Setup and Installation PackagesSection II: ConcurrencyChapter 30 ThreadingChapter 31 Synchronization ClassesChapter 32 SocketsSection III: Interoperability and ConnectivityChapter 33 MarshalingChapter 34 Interior and Pinning PointersChapter 35 Connecting to Managed DLLsChapter 36 Connecting to Componenet Object Model (COM) DLLs with COM InteropChapter 37 Connecting to C++DLLs with Platform Invocation ServicesChapter 38 Connecting to ExcelChapter 39 Connecting to TraderAPIChapter 40 Connecting to XTAPIConnection_ExampleSection IV: Automated Trading SystemsChapter 41 Building Trading SystemsChapter 42 K„ V Trading System Development MethodologyChapter 43 Automated Trading System ClassesChapter 44 Single-Threaded, Technical Analysis SystemChapter 45 Producer/Consumer Design PatternChapter 46 Multithreaded, Statistical Arbitrage System