What Is the Commodity Channel Index(CCI)?

The CCI is a momentum-based oscillator used to help determine when an asset is reaching a condition of being overbought or oversold. The CCI was originally developed to spot long-term trend changes but has been adapted by traders for use on all markets or time-frames. Trading with multiple time frames provides more buy or sell signals for active traders. Traders often use the CCI on the longer-term chart to establish the dominant trend and on the shorter-term chart to isolate pull-backs and generate trade signals.

CCI_1.PNG

Key points about the CCI

  1. The CCI is a market indicator used to track market movements that may indicate buying or selling
  2. The CCI Compares current price to average price over a specific time period
  3. Different strategies can use the CCI in different ways, including using it across multiple timeframes to establish dominant trends, pullbacks, or entry points into that trend
  4. Some trading strategies based on CCI can produce multiple false signals or losing trades when conditions turn choppy.

How to add the CCI to my script?

Below you will find a short example of using the CCI in your script.

//Inputs
length = intInput("Length of the CCI", 20) 

//Indicator
cci = cci(length)

//Plot
plot(cci, "cci", "#996A15", 2, PlotStyle.LINE, 0, false)
band1 = plot(seriesOf(100.0), "Upper Band", "#c0c0c0", 1, PlotStyle.LINE, 0, false)
band2 = plot(seriesOf(-100.0), "Lower Band", "#c0c0c0", 1, PlotStyle.LINE, 0, false)
fill(band1, band2, "#9C6E1B", 80, "Background", false)

//Signal Push
out(NEVER_ORDER)
CCI_2.PNG

The above image is how the plot should look on the chart.

How to use the CCI to generate buy and sell signals?

For the example I will use the default settings, Length = 20, And use this on the daily chart

To generate signals we will use the most basic method of setting a crossover and crossunder of the zero line to generate either an long, or a short.

crossover the zero line = Long trade

crossunder the zero line = Short trade

//Inputs
length = intInput("Length of the CCI", 20) 

//Indicator
cci = cci(length)

//Conditions
buy = crossover(cci, seriesOf(0.0))
sell = crossunder(cci, seriesOf(0.0))

//Plot
plot(cci, "cci", "#996A15", 2, PlotStyle.LINE, 0, false)
band1 = plot(seriesOf(100.0), "Upper Band", "#c0c0c0", 1, PlotStyle.LINE, 0, false)
band2 = plot(seriesOf(-100.0), "Lower Band", "#c0c0c0", 1, PlotStyle.LINE, 0, false)
fill(band1, band2, "#9C6E1B", 80, "Background", false)

//Signal Push
out(signalIf(buy, sell))

Below is a screenshot of how your chart should look

CCI_3.PNG


So now you have learnt what CCI is, how to use it and how to put it in a script and generate signals from it.
Have fun scripting!

Disclaimer: The opinions expressed here are for general informational purposes only and are not intended to provide specific advice or recommendations for any specific security or investment product. You should never invest money that you cannot afford to lose. Before trading using complex financial products, please ensure to understand the risks involved. Past performance is no guarantee of future results.

Supercharge your trading

Sign up for our waitlist to get early access to trading strategies developed by quantitative traders.

Get Started