Building Effective Price Pattern Strategies
Some traders strongly believe that strategies based on price patterns are fundamentally superior to those based on traditional technical indicators. They cite the fact that traditional indicators, such as moving averages and oscillators, typically average values over some number of past price bars, which not only introduces lag but smooths away the very price action that's most important. Price patterns, on the other hand, are based on raw prices, with no smoothing and no lag.
Adaptrade Builder has had price pattern features for many years. In a past newsletter article, I discussed the so-called "price pattern indicator" of Builder and how to use it to develop price pattern strategies. In recent releases of Builder, I've added several new indicators that significantly expand the program's repertoire of price patterns.
This article will demonstrate how to effectively use the price pattern indicators in Builder to develop strategies that avoid traditional indicators and focus solely on price action. The price pattern indicators will be illustrated, and an example strategy will be developed. The project file used for the example, as well as the strategy code, is available below.
A Library of Price Patterns
The different indicators that can be used to create price patterns in Adaptrade Builder are listed below in Table 1. In addition to simple prices, the program considers so-called day prices, the "typical" price, the highest and lowest prices over a specified number of past bars, and support and resistance prices (so-called floor trader pivots). The "price pattern indicator", if selected, specifically instructs the program to consider all selected indicators that return a price value and form logical conditions from them.
Two other indicators that work with raw prices are the consecutive up/down indicators and congestion count. The consecutive up/down indicators can apply to any indicator returning a price, including nested combinations of such indicators, such as AS_ConsecBarsUp(Highest(Lowest(C, 5), 12)). These indicators return the number of consecutive values of the argument in a row that are either up or down, such as the number of bars that close down in a row (i.e., AS_ConsecBarsDn(C)). The congestion count indicator is designed to indicate how "congested" or range-bound the market is. It counts the number of consecutive bars where there is at least one price in common among all bars. The higher the value, the more congested the market is.
Builder uses the price patterns to define logical statements that are used as entry or exit conditions for placing trading orders. For example, a simple price pattern for an entry condition might be C > L (i.e., the current close is greater than the low three bars ago). The condition would have to be true for the entry to be placed. Examples of valid price patterns are shown in Figs. 1 and 2.
In addition to using the price pattern indicators in logical conditions for entry and exit, the indicators that return a price value (simple prices, day prices, Highest(price, N), Lowest(price, N), typical price, and floor trader pivots) can be used to construct a price or price difference for use in stop and limit orders. For example, the following are valid long limit entry prices: AS_PivotS(2); L - 1.2 * AbsValue(TypicalPrice - Lowest(O, 5)); AS_PivotR(1) - 2.9 * AbsValue(AS_PivotR(1) - Highest(H, 12)); etc.