Building Winning Trading Systems with TradeStation
by George Pruitt and John R. Hill
Quick Summary
A comprehensive guide to developing, programming, and testing trading systems using TradeStation's EasyLanguage platform. The second edition covers the complete system development lifecycle from strategy concept to EasyLanguage coding to backtesting and debugging, including advanced topics like portfolio-level analysis and the integrated development environment's debugging capabilities.
Categories
- Trading Systems
- Algorithmic Trading
- Programming
Detailed Summary
"Building Winning Trading Systems with TradeStation" by George Pruitt and John R. Hill, published in its second edition in 2012 by John Wiley & Sons, serves as both a trading system development guide and a practical programming manual for TradeStation's EasyLanguage platform. Pruitt and Hill combine trading system design expertise with hands-on programming instruction to create a resource that bridges the gap between trading strategy concepts and their implementation in code.
The book begins with the philosophical and methodological foundations of systematic trading, discussing why automated systems can provide an edge over discretionary approaches through consistency, emotion removal, and the ability to process multiple markets simultaneously. The authors establish a development framework that emphasizes hypothesis-driven design rather than data-mining approaches.
A significant portion of the book is dedicated to EasyLanguage instruction, starting with basic syntax and progressively building to complex system logic. The authors compare EasyLanguage to contemporary programming languages, noting that while it is powerful for trading-specific applications, it has historically lacked some features common to general-purpose languages. The second edition covers enhancements to the platform including the integrated development environment (IDE) with its improved editor, compiler, and the addition of an in-line debugger.
The debugging section is particularly valuable, as the authors note that "most programs don't work properly the instant you finish typing them." They describe the debugging process in detail: a debugger is a program that allows a user to step through each individual line of code and evaluate the program statements as they are executed. The chapter covers systematic debugging methodologies, common error patterns, and the use of output tools for monitoring system behavior.
The Super Combo system serves as a running example throughout the book, demonstrating the complete development process from pseudocode to implementation to debugging. The authors candidly note that this system "required about an hour to pseudocode, an hour to type the program in, and a couple of hours to debug," illustrating that even with careful planning, the majority of development time is spent in debugging and refinement.
Classic trading system strategies are presented and coded, including trend-following systems (moving average crossovers, channel breakouts), mean-reversion systems, and pattern-based systems. Each strategy is presented with its conceptual foundation, EasyLanguage code, backtesting results, and analysis of performance characteristics.
Portfolio-level analysis is addressed, showing how to evaluate system performance across multiple markets and multiple timeframes simultaneously. The authors discuss correlation between systems, portfolio-level drawdown analysis, and the benefits of diversification across uncorrelated trading strategies.
Advanced topics include custom indicator development, optimization techniques (with warnings about over-optimization), walk-forward analysis within the TradeStation platform, and the creation of custom strategy reports. The second edition updates reflect changes to the TradeStation platform and the evolution of EasyLanguage as a programming environment.
The book serves dual audiences effectively: traders who need to implement and test their ideas programmatically, and programmers who need to understand trading concepts to build effective systems. The practical, example-driven approach makes complex programming concepts accessible while maintaining sufficient rigor for experienced developers.