Coppock Curve

The Coppock Curve (originally named Trendex Model) was authored by E.S.C. Coppock. It is a trend following indicator tallied from the smoothed sum of 2 rate of change periods. The original purpose was for market entries and sell signal were not considered. Both buy and sell signals are generated in this version. Adjustable guides are also given to fine tune the signals. The user may change the input (close), method (WMA), and period lengths. This indicator’s definition is further expressed in the condensed code given in the calculation below.

Coppoch Curve1

How To Trade Using The Coppock Curve

Coppock is not well suited for commodity markets and was originally designed for the S & P 500. It was also designed for monthly trading with periods of 14 (roc1), 11 (roc2) and 10 (wma). If using daily trading change periods to 294, 231 and 210. Adjust the top and bottom guides to control the quantity and quality of the trading signals. Buy signals are given after the coppoch troughs below the bottom guide. Conversely, sell signals are given after it peaks above the top guide.

Coppoch Curve2

How To Access in MotiveWave

Go to the top menu, choose Study>Oscillators>Coppock Curve

or go to the top menu, choose Add Study, start typing in this study name until you see it appear in the list, click on the study name, click OK.

Important Disclaimer: The information provided on this page is strictly for informational purposes and is not to be construed as advice or solicitation to buy or sell any security. Please see our Risk Disclosure and Performance Disclaimer Statement.


//input = price user defined, default is close
//period1 = user defined, default is 14
//period2 = user defined, default is 11
//period3 = user defined, default is 10
//method = ma, default is WMA
//roc = rate of change
//ma = moving average, index = current bar number
//MT = more than
//LT = less than

roc1 = roc(index, period1, input);
roc2 = roc(index, periodc2, input);
rocSum = roc1 + roc2;
Plot: coppock = ma(method, index, period3, rocSum);
highSell = coppock for last sell signal, reset to max_negative on each  buy signal;
lowBuy = coppock for last buy signal, reset to max_positive on each sell signal;
sell = (coppock MT topGuide) AND (prevCoppock MT coppoch) AND (coppock MT highSell);
buy = (coppock LT bottomGuide AND prevCoppock LT coppoch) AND (coppock LT lowBuy);