You already know that AmiBroker is an extremely powerful tool for performing technical analysis. At Connors Research, it’s the application that we use for everything from simple signal generation to simulating portfolio results for complex strategies involving limit orders, scaling, hedging and more. If you’re ready to tackle these advanced analysis tasks yourself, then this course is for you.
Sign-up for Our 2-Day Course
On June 9 & 10 Matt Radtke, Director Of Research for Connors Research taught the same AmiBroker programming techniques Connors Research uses in order to create and build high performing strategies. By the end of this course, you will have the ability to do your own high grade testing and analysis that so many professional traders rely upon to improve their trading and investing returns.
By harnessing the full power of AmiBroker, you can simulate historical results for a system that mirrors exactly the way you trade, and thereby gain insights into how it might perform in the future. In this course we will teach you exactly how to do this.
This course is designed for traders who want to use AmiBroker to create complex backtests and optimizations using the Custom Backtester (CBT) interface. At the completion of this course, you will be able to:
AmiBroker is an extremely powerful analysis tool, and like any powerful tool it requires training and practice to use it effectively. In today’s course we will do a deep dive into some of AmiBroker’s most powerful functionality, including portfolio backtests, optimizations, and the Custom Backtester Interface or CBT.
AmiBroker’s AFL scripting language provides a diverse set of variables, commands and functions that you can use to develop custom indicators, scans, explorations, backtests, and explorations. In fact, the AFL help file lists over 350 AFL functions. In this session we will discuss a few of the functions that you will find most useful as you begin to develop more advanced AFL scripts.
An optimization allows you to automatically execute a set of backtests in which each test has a unique set of input parameters. Each test (combination of parameters) typically corresponds to a specific strategy variation. For example, we might want to test a strategy in which the ConnorsRSI threshold for trade entry varies from 10 to 25 in increments of 5. In this session we will discuss how to convert the AFL for a back test into an optimization.
TimeFrame Compress/Expand and Set/Restore
When you run a backtest, AmiBroker allows you to select the base duration for each “bar” of the test. This is also known as the timeframe. You can test 1-minute bars, daily bars, weekly bars, etc. Sometimes, however, you want to use multiple timeframes within a single test. For example, some of our strategies use a market timing rule that compares the current weekly close of SPY to the weekly closes over the past year. In this section we’ll illustrate the use of the AFL functions for manipulating timeframes.
Scaling & the Position Size Array
Scaling into trades is a powerful tool for increasing gains. In this session we will discuss how to implement a basic scaling strategy for an All Trades test.
Exercise: Creating an All Trades Test with Scaling
This hands-on session will be devoted to executing the scale-in code template and verifying that the strategy logic is working as expected.
Simulating how a strategy would actually be traded as part of a portfolio is a big step up from simply generating trading signals or running an “all trades” test. In this session we’ll discuss money management issues like position sizing and margin, as well as mechanics like prioritizing your trade signals and limiting the number of open positions.
Introduction to the CBT
The Custom Backtester Interface, or CBT, is one of the most powerful tools available in AmiBroker. Writing your own backtesting code gives you an enormous amount of control over how your trading signals are executed as well as opening up a myriad of possibilities for reporting and metrics. In this section we will introduce the CBT and discuss the simplest possible implementation of a custom backtesting procedure.
High Level CBT and Custom Metrics
Using the high level CBT is a great way to implement custom metrics without having to handle the intricacies of processing all the trade signals. In this session we will discuss both per-trade custom metrics and summary custom metrics, and illustrate how those are implemented using a code template.
Exercise: Generating Custom Metrics using the Code Templates
This exercise will give you hands-on experience implementing, executing, and troubleshooting custom metrics.
Low Level CBT
The low level CBT is the go-to interface that members of Connors Research use for implementing backtests and optimizations. We will discuss the types of problems that can be solved with this construct, particularly in the context of portfolio tests, and illustrate the solutions with example code.
Exercise: Implementing a Portfolio Test with Limit Entries
In this exercise, students will implement their own portfolio test with limit entries, using the code templates provided. This mini-project will combine many of the skills used throughout the course.
The more power and flexibility that a tool provides for its user, the more opportunities there are for things to go awry. In this session we will discuss some common pitfalls that occur when doing portfolio tests with AmiBroker. As one colleague stated, “if the results seem too good to be true, I probably made a mistake”.
Additional Sources and Q&A
Total Time Estimate: 7-8 hours