December 4


Master Object-Oriented EasyLanguage With These Must-Have Books

By Jeff Swanson

December 4, 2023

Algorithmic Trading

In this article, I will show you how you can unlock the power of object-oriented EasyLanguage with two new excellent books.

EasyLanguage is my preferred programming language for building trading systems. EasyLanguage offers a unique blend of simplicity and power for traders using TradeStation.  It's a language that just about anyone can learn. Once you learn it, you can transform trading ideas into executable strategies, a critical skill set for anyone aspiring to thrive as a winning algorithmic trader.

Today, I'm delving into a comprehensive review of two pivotal books by Dr. Sunny Harris and Samuel Tennis. They are:

"EasyLanguage & OOEL Programming Vol2: Reference Guide."

"EasyLanguage & OOEL Programming Vol1: Programming Guide"

"EasyLanguage & OOEL Programming Vol2: Reference Guide."

"EasyLanguage & OOEL Programming Vol2: Reference Guide."

These books, designed as a cohesive pair, promise not just to be another set of coding manuals. They are heralded as the complete reference and instructional compendium many traders have longed for. With a promise of hundreds of examples, these books are an experiential journey through programming and trading.

What sets these volumes apart, especially for seasoned blog followers, is their focus on object-oriented EasyLanguage (OOEL). While many traders are familiar with the procedural aspects of EasyLanguage, OOEL is a realm less traversed. 

EasyLanguage was first released in 1991 as part of the TradeStation platform by Omega Research, Inc.

EasyLanguage was first released in 1991 as part of the TradeStation platform by Omega Research, Inc. It was developed to provide traders with a more straightforward way to design, test, and implement custom trading strategies and indicators without requiring a deep background in traditional programming languages. 

You can do a lot with TradeStation’s EasyLanguage. I use it all the time. But since its release, the programming world has changed a lot. The growth of a new programming style called object-oriented was becoming the standard way to write code.So, TradeStation introduced object-oriented programming (OOP) capabilities to EasyLanguage with the release of TradeStation 9.0 in early 2009. This significant update expanded the potential of EasyLanguage, which was initially more procedural, by incorporating object-oriented features.

The integration of object-oriented programming into EasyLanguage (often referred to as OOEL) was a pivotal development. It allowed for more sophisticated and flexible coding possibilities, enabling traders and developers to create more complex, modular, and reusable trading strategies and indicators. This change was particularly beneficial for advanced users who wanted to leverage the full power of software development principles in their trading system design.

In this article, I’m not going to talk about object-oriented software and how it’s different from the more traditional in-line programming style. That’s best left for another article. I’ll just say that object-oriented programming is different from in-line or procedural coding. There are new concepts and terms that one must master. When I first started writing object-oriented code, it was a bit of a mystery. I found it confusing, but it made sense over time and with much practice. Rest assured, you can learn it. 

With that in mind, join me as I unpack these volumes, scrutinize their content, and evaluate their real-world applicability in the demanding and ever-evolving world of algorithmic trading.

Let’s dive in.

What is Object-Oriented Programming

What is Object-Oriented Programming

Before diving into the books, it's helpful to understand the critical difference between object-oriented programming and procedural programming, which has traditionally been used in EasyLanguage. 

At the heart of procedural programming lies a step-by-step approach. It's like a recipe where each instruction is executed sequentially to reach a final result. If you are writing code in standard EasyLanguage, this is what you’re doing - writing procedural code. Procedural code, the bedrock of traditional EasyLanguage, is straightforward and efficient for linear, less complex trading algorithms. You define specific operations and execute them in a set sequence. Each line of the code is executed before moving on to the following line of code.

This programming style is great for many situations, and you can build great trading systems. The problem is that the procedural code can get unwieldy as your trading system grows in complexity. Tangled dependencies can make it difficult to reuse functions across systems.

Object-oriented programming (OOP) takes a different approach. Imagine OOP as a shift from a linear recipe to a modular kitchen, where each module (or object) has a specific function yet can interact seamlessly with other modules. OOP in EasyLanguage encapsulates data and functions into objects. These objects represent various trading system elements - indicators, strategies, or individual trades.

The focus is on defining custom objects containing data and the procedures to operate on that data. For example, I could define a TradeObject that contains details like entry price, stop loss, take profit, etc. Encapsulating the data with the procedures makes it easier to reuse across systems.

Object Oriented EasyLanguage also provides other benefits, including new functionality not available in standard EasyLanguage. We'll talk about some my favorit in the next section.

For now, the important takeaway is using object-oriented programming requires a different way of thinking when compared to standard EasyLanguage. The transition from procedural to object-oriented programming in EasyLanguage is not just a shift in coding style but a paradigm shift in how we think about and construct our trading algorithms. It offers modularity, reusability, and a more intuitive way to represent complex trading concepts.

Why Learn OOEL?

Why Learn OOEL?

You can do a lot with standard EasyLanguage. But OOEL can give you more control and unique features not found in standard EasyLanguage. Here is a brief list of what I consider the main benefits.

  1. Sharing Data Between Strategies: You can share values between strategies and indicators. Have you ever wanted to send information from one strategy to another? With OOEL, you can communicate by sending information using GlobalValues or GlobalDictionary classes. These will work even across different TradeStation WorkSpaces.
  2. Reading/Writing to Files: Standard EasyLanguage makes writing to a text file easy, but OOEL takes it to a new level. With OOEL, you can easily read and write from a file. There is even a dedicated class for reading/writing from a spreadsheet. 
  3. Event-Driven Programming: OOEL is more conducive to event-driven programming. This is particularly beneficial for strategies that respond to real-time market events. 
  4. Control Other Applications: By using EasyLanguage you can control other applications such as Charting, Portfolio Maestro, or RadarScreen.
  5. Build Form and Create Applications: Create windows and forms that take user input. This allows for the creating of interactive and user-friendly interfaces that can capture user inputs, display information, and facilitate better user interaction with the trading system.

Who Should Read These Books?

These volumes are specifically designed for individuals who already possess a foundational grasp of TradeStation's EasyLanguage (EZL) and are eager to explore its more advanced facets, particularly those extending beyond the realms of standard EasyLanguage. Prospective readers should be adept at navigating TradeStation, including proficient use of the EasyLanguage editor.

Who Should Read These Books?

 A basic level of programming skill in EasyLanguage is also a prerequisite. In essence, these books are not intended for beginners in EasyLanguage coding. Instead, they serve as an in-depth guide for those ready to embark on and excel in Object-Oriented EasyLanguage (OOEL).

What’s Included?

The scope and depth of these books are substantial. Volume 1 spans 507 pages, while Volume 2 extends to 735 pages. These pages are replete with practical code examples, offering a hands-on approach to learning. A bonus for book owners is the ability to download these code examples. This is facilitated through a complimentary membership to a private website, accessible upon providing contact details. Membership not only grants access to the downloadable code but also entitles members to special offers from the authors. That benefit is the opportunity to contact the authors, Sunny or Sam, directly for EasyLanguage-related queries—a valuable resource for any reader! It's important to note that you can cancel your membership anytime.

However, the process of joining the membership site does have its complexities. I tend to be sensitive to online customer experiences, so that I will be critical here. First, the process involves several steps, including ticking a checkbox, filling out a form that requires your phone number and physical address, and completing a CAPTCHA. Furthermore, members must provide their TradeStation customer numbers to access certain features, such as indicators. This is a lot of info to ask, particularly if I’m interested in just downloading code examples. If I wish to download protected indicators, my TradeStation customer number will be needed, but what if I’m looking just to download code examples? Do I need to turn over all of this information? I recommend that the authors consider streamlining this process to reduce user friction. People will be reluctant to provide all this information and may feel forced just to get the downloadable code they paid for.After completing the registration, access isn't immediate. You have to wait to have your account created or approved. In today’s world, people have become accustomed to instant access to downloadable resources, so a short wait of a few hours may be offputting. I can imagine emails being sent to the author’s already crowded email inbox. My access was granted about six hours after completing the form. Next, after submission, you must also upload proof of purchase. 

Finally, upon logging in, it’s not clear where I go to download the examples. Then, I noticed within the Downloads section of the site, there is a note that the ELD file containing the example code will be emailed. It’s been over a day, and I did not receive such an email. Maybe I missed it? I contacted Sunny, and she promptly sent me the ELD file. Again, I would suggest that people who purchased the book and have become a Member should be taken directly to a page where the downloads are available.

Overall, the customer experience is not the best and has room for improvement. Despite this, the advantages of membership, especially the direct access to the authors for guidance, make it a worthwhile endeavor. 

Volume I: Programming Guide Review

Volume I: Programming Guide Review

This is the first book in the series, and it starts with a great review of traditional EasyLanguage and basic TradeStation navigation. Chapters 1-2 are great refreshers, including topics such as if-then statements, functions, vectors, arrays, and loops. Chapter three goes into some of the more esoteric features of EasyLanguage, including Spaces, Alerts, Analysis Commentary, and the use of ASCII 3rd Party Data. 

In chapters 4-6, the authors cover the theoretical groundwork of objected-oriented programming. Chapter four starts our dive into OOEL. 

Here, you will learn the explanations of common object-oriented words such as classes, methods, namespaces, and events. Then, it’s on to issues revolving around debugging and error trapping. Chapter six focuses on the topic of methods. In Chapter 7, we start getting practical. This is where I like to start! Here, we find the example of an introductory program we learn to code first: Hello World!

Hello World - Your First Object Oriented Strategy

The book begins its journey into object-oriented programming (OOP) with TradeStation's EasyLanguage by introducing the classic "Hello World" strategy, initially implemented using standard EasyLanguage syntax. This involves a straightforward task: displaying the message "Hello World.”

The initial code for Hello World is simple, as shown here:

Once begin
   Print(“Hello World”);

From this foundational example, the authors skillfully transition to more intricate scenarios that leverage the object-oriented features of EasyLanguage. A notable instance is "Hello World Example #5," where they employ the StreamWriter and StreamReader methods. These methods, integral to object-oriented EasyLanguage (OOEL), facilitate file reading and writing operations, showcasing OOEL's versatility and power.

Yet, exploring the "Hello World" program doesn't stop there. The authors ingeniously use this basic framework to delve into more advanced concepts such as string manipulation, vectors, chart text display, and utilizing Global Values. This approach effectively demonstrates the robust capabilities of OOEL, all while maintaining the simplicity of the "Hello World" strategy as a constant learning tool. It's a brilliant method to keep the reader's focus squarely on understanding OOEL's nuances.

You may be wondering what “Global Values” are. Good question. This is where the second volume of this collection comes in handy. The second volume is a reference guide. Thus, you can crack open that book and look up Global Values. When I do that, I find that Global Values allow you to share values between strategies and indicators. Very cool! The explanation also provides details on how to use this feature. 

Going back to the Hello World examples, I can see each example is meticulously explained in layman's terms, accompanied by corresponding EasyLanguage code examples. Providing the code within the book is a significant reason behind the book's substantial size. The authors have made a commendable effort to provide complete code examples rather than mere snippets. This is immensely beneficial, as it eliminates the common frustration of consulting external sources or other texts to understand the code in context. Including complete code within the book is a thoughtful and practical choice that significantly enhances the learning experience.

The authors are also very careful with conventions throughout the book. For example, all namecases and classes are in bold Arial Narrow type. Reserved Words are in bold Times New Roman type. Important notes are called out in blue boxes. All of this does help to clarify what I’m looking at. Abbreviations, file extensions, and acronyms are also conveniently located at the beginning of the book. These conventions help keep concepts clear in your head as you work your way through the book.

Quickly Store and Retreve Data: Chapter 8 

Here, we discover the many ways to store data using EasyLanguage objects. OOEL allows you to organize information such as prices or calculations. They also allow you to share information between Strategies, Indacorts, Paitbars, and Showme studies. If you want two Strategies to talk to each other or have RadarScreen display values from a chart, you can do that! You can even share data across different TradeStation WorkSpaces.

Easiliy Drawing Objects: Chapter 9

This chapter is about programmatically drawing objects and text on your chart. This includes horizontal and vertical lines, trendlines, text,  rectangles, and ellipses.  OOEL can offer event handling capabilities, where drawing objects can respond to events like mouse clicks or hovers. This opens up possibilities for creating more interactive and user-friendly charting tools.

This chapter also includes the alerts. This allows you to set alarms on particular drawing objects. You to define specific conditions under which alerts should be triggered. You can tailor alerts to specific market scenarios, indicator values, or conditions within your trading strategy. Alerts can be visual (on-screen), auditory (sound), and email notifications. This flexibility ensures that you can be notified of significant events in the most suitable way for your trading setup.

Alerts can be seamlessly integrated into your trading strategies. This means the alerts are not just passive notifications but can be an active part of your strategy, triggering at critical moments based on predefined conditions. You can programmatically enable, disable, or modify alerts based on changing market conditions or the state of your trading system. You can enhance your risk management by setting alerts for certain market conditions. For example, you can set alerts for unexpected market movements, reaching certain profit or loss thresholds, or other risk-related events.

Control Other Applications: Chapter 10

A chapter is dedicated to using OOEL to programmatically control various apps (such as Charting, Portfolio Maestro, or RadarScreen). What I find interesting is the ability to access much of the information from dialog boxes used to customize Strategies. In summary, OOEL provides a robust framework for not just developing trading strategies but also for extending the functionality and automation capabilities within the TradeStation platform.

Build Graphical Interfaces: Chapter 11

This chapter explains how to create interfaces (UI) for trading applications. You can create windows and forms that take user input. This is particularly useful for traders who want to design interfaces for trading strategies or tools beyond what is available by default in TradeStation. You can include various interactive elements like buttons, text boxes, labels, and other controls. This allows for the creating of interactive and user-friendly interfaces that can capture user inputs, display information, and facilitate better user interaction with the trading system. Users can input parameters, settings, or other information the trading system can process. 

Conversely, the system can output data, alerts, or other information to the user. User Interfaces give traders more direct and intuitive control over their trading strategies. Parameters can be adjusted on the fly, and strategies can be turned on, off, or modified through the interface.

Access Price Data And Account Information: Chapter 12

With OOEL, you can interact with requesting data from TradeStation servers. You can also access specific user account information such as Account Equity, Maintenance Margin, and Trade Equity.

Making Trades: Chapter 13

OOEL allows you to send detailed instructions that tell your broker what trades to make. These detailed instructions are coded in an Order Ticket. The Order Ticket Class allows you to specify detailed aspects of a trade order, like the type of order (buy or sell), the order size, price levels, and other conditions. It's like filling out a detailed form for exactly how and when you want your trades executed. Different trading strategies require different orders, like market orders, limit orders, or stop orders. The Order Ticket Class supports these various order types, allowing you to implement diverse trading strategies. Once an order is placed, it resident on the TradeStation servers, so an internet disconnect does not impact it. With clever programming, you can trade multiple strategies on the same symbol in the same account, keeping everything separate.

Better Research By Utilizing Excel: Chapter 14

OOEL facilitates smooth data transfer between your trading platform and Microsoft Excel. This capability allows you to export or import data between TradeStation and Excel easily. You can utilize Excel’s robust data analysis tools in real time by integrating with Excel. This feature is essential for conducting complex calculations or custom analyses that are more conveniently executed in Excel. Send data to Excel. Perform your calculations. Then, read those results back into your EasyLanguage code. You can automate the generation of reports. Trading data can be sent to Excel, where it can be automatically formatted and transformed into detailed reports, charts, or graphs. 

Build Systems That Access Fundamental Data: Chapter 15

Do you wish to incorporate fundamental analysis into your trading strategies? OOEL is designed to access and utilize fundamental data, which includes various financial metrics and indicators about a company or an asset.  Key financial metrics like earnings per share (EPS), price-to-earnings (P/E) ratio, dividend yields, and more can be accessed in EasyLanguage. You can use it to create rules or conditions in your trading strategy that depend on fundamental metrics. For example, you might create a strategy that only buys stocks with a P/E ratio below a certain threshold. You can even build strategies that combine technical and fundamental analysis. You can use it to ensure your trades align with the assets’ technical patterns and fundamental strengths.

That's a good summary of what you get in Volume I. Let's move on to the second book.

Volume II: Reference Guide Review

Volume II: Reference Guide Review

The second volume of this essential EasyLanguage series, which I briefly mentioned earlier, serves as an extensive reference guide, delving into the technical intricacies of object-oriented EasyLanguage (OOEL). This volume, designed primarily as a lookup resource, is ideal for addressing specific programming scenarios or challenges you might encounter in OOEL.

While I won't delve into an exhaustive overview of this reference book – its nature is self-explanatory – it's worth highlighting its comprehensive scope.

Spanning over 700 pages, this volume is a testament to its thoroughness and depth, making it an indispensable companion to the first volume.

Together, these books form a complete and detailed picture of OOEL, ensuring that novice and experienced programmers have a reliable source to understand and implement OOEL in their trading strategies.

Whether deciphering a particular code snippet or seeking to understand a complex OOEL concept, this second volume stands as a robust, go-to resource.


These volumes represent a significant contribution for advanced EasyLanguage users, offering a depth of knowledge and practical insights into the nuances of OOEL. They stand out as essential resources for those committed to mastering advanced algorithmic trading techniques in TradeStation.


EasyLanguage, the backbone of TradeStation, is my preferred language for strategy development. However, it has been around for quite a while, and as we know, the world of technology is rapidly evolving. With the introduction of object-oriented programming (OOP) in TradeStation 9.0, EasyLanguage underwent a significant transformation.

OOEL has dramatically enhanced its capabilities, enabling traders to develop more complex, flexible, and reusable trading strategies and indicators.

What truly sets these volumes apart is their focus on OOEL. The procedural approach of standard EasyLanguage is well-known, but OOEL is a less charted territory that offers a more sophisticated coding experience. These books put nearly every object-oriented EasyLanguage feature (may be everything?) at your fingertips.

The books thoroughly explore OOEL, covering foundational concepts to obscure features. These books are more than just coding manuals; they are a comprehensive guide for those ready to dive deep into OOEL. They offer extensive practical examples and a hands-on approach to learning, with the bonus of downloadable code examples for book owners.

Despite the comprehensive content, the customer experience in accessing the downloadable example code can be improved. The registration is somewhat convoluted, which can be a tad inconvenient in today's fast-paced world. But they authors go above the call of duty providing their direct contact information so you may ask your EasyLanguage related questions. 

In conclusion, the authors did a fantastic job bringing the world of object-oriented EasyLanguage into these volumes. It represents a ton of work and a treasure trove for those looking to master OOEL. I applaud both Sam and Sunny. An amazing job! 

Once again, the books are perfect for individuals with a foundational grasp of standard EasyLanguage, aiming to leverage the advanced features of OOEL. The depth and breadth of the content, along with the practical examples, make these books a highly recommended resource. The transition from procedural to object-oriented programming in EasyLanguage is not merely a coding style shift; it's a transformative journey towards more sophisticated algorithmic trading.

The Pro:

  • Comprehensive OOEL Coverage: These volumes offer a thorough exploration of Object-Oriented EasyLanguage (OOEL), from basic to advanced concepts, making them invaluable for those looking to delve into OOEL.
  • Practical Approach: The inclusion of extensive practical examples and hands-on learning aids significantly enhances the understanding and applicability of concepts in real-world trading scenarios.
  • Downloadable Code Examples: Access to downloadable code examples is a significant bonus, providing practical resources to supplement the learning experience.
  • Direct Author Contact: The opportunity to directly contact the authors for EasyLanguage-related queries is an exceptional resource, offering personalized guidance.
  • In-Depth Guidance for Experienced Users: Tailored for individuals with foundational EasyLanguage knowledge, these books delve into more sophisticated programming aspects, making them ideal for advanced users.

The Cons:

  • Complex Access to Resources: The process for accessing downloadable content is convoluted, involving multiple steps and personal information submission, which may deter some users.
  • Not Beginner-Friendly: The books are not designed for EasyLanguage novices, limiting their audience to those with prior experience in standard EasyLanguage.

The Bottom Line:

Highly recommended! If you're an EasyLanguage coder and are interested in Object Oreiented EasyLanguage, you should have these arms reach.

How To Buy

For those interested, the books are available for purchase at Amazon.

Get Your Copies


Jeff Swanson

About the author

Jeff has built and traded automated trading systems for the futures markets since 2008. He is the creator of the online courses System Development Master Class and Alpha Compass. Jeff is also the founder of EasyLanguage Mastery - a website and mission to empower the EasyLanguage trader with the proper knowledge and tools to become a profitable trader.

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Learn To Code & Build Strategies
Using EasyLanguage.