Donchian Channels

ICE Data Services -

upperDonchian(), middleDonchian(), lowerDonchian() Built-in Study Functions


Channels are lines that surround a stock price movement, which help in projecting future price action. The Donchian Channel indicator uses the highest high and the lowest low of a period of time to plot the channel.


Syntax

upperDonchian(  nLength [, Series | sym() | inv() ][, nBarIndex ] )
middleDonchian( nLength [, Series | sym() | inv() ][, nBarIndex ] )
lowerDonchian (   nLength [, Series | sym() | inv() ][, nBarIndex ] )


Parameters

Parameter: Description: Default:
nLength Required. Number of periods to use for calculation. n/a
Series or
sym() or
inv()
[Optional]  Series Object or function of sym() or inv() to determine symbol/interval source for the study. Chart's sym/inv
nBarIndex [Optional]   Bar index of series to retrieve . n/a


Return Value(s)

Returns a Series Object when nBarIndex is not specified.

Returns a single value when nBarIndex is specified.


Notes

Only available in versions 7.9 or later.

 

Code Examples

Single Line Indicator:
function main() {
  return new Array(upperDonchian(20), middleDonchian(20), lowerDonchian(20));
}

 

Single Line Study-on-Study Indicator:
function main() {
  return new Array(
    upperDonchian(20, hl2()),
    middleDonchian(20, hl2()),
    lowerDonchian(20, hl2())
  );
}

 

Retrieve single values:

function main() {
  var nValue_0 = middleDonchian(20, 0); // Current Bar Index
  var nValue_1 = middleDonchian(20, -1); // Prior Bar Index
  return new Array(nValue_0, nValue_1);
}

 

Initialize Series Objects:
//global Series Object variables
var xStudy1 = null;
var xStudy2 = null;
var xStudy3 = null;
function main() {
  if (xStudy1 == null) xStudy1 = upperDonchian(20);
  if (xStudy2 == null) xStudy2 = middleDonchian(20);
  if (xStudy3 == null) xStudy3 = lowerDonchian(20); // retrieve single values for conditional statements
  var nValue1_0 = xStudy1.getValue(0); // Current Bar Index value
  var nValue2_0 = xStudy2.getValue(0); // Current Bar Index value
  var nValue3_0 = xStudy3.getValue(0); // Current Bar Index value
  var nValue1_1 = xStudy1.getValue(-1); // Prior Bar Index value
  // Plot Current Bar Index Value
  return new Array(nValue1_0, nValue2_0, nValue3_0);
}

 

Initialize a Series Object based on an external interval:
// global Series Object variables
var xStudy1 = null;
var xStudy2 = null;
var xStudy3 = null;
var bInit = false; // Initialization flag
function main() {
  if (bInit == false) {
    xStudy1 = upperDonchian(20, inv(20)); // 20-min interval
    xStudy2 = middleDonchian(20, inv(20)); // 20-min interval
    xStudy3 = lowerDonchian(20, inv(20)); // 20-min interval
    bInit = true;
  } // retrieve single values for conditional statements
  var nValue1_0 = xStudy1.getValue(0); // Current Bar Index value
  var nValue1_1 = xStudy1.getValue(-1); // Prior Bar Index value
  // Synchronized Series plot
  return new Array(getSeries(xStudy1), getSeries(xStudy2), getSeries(xStudy3));
}

 

Initialize a Series Object based on an external symbol and interval:
// global Series Object variables
var xStudy1 = null;
var xStudy2 = null;
var xStudy3 = null;
var bInit = false; // Initialization flag
function main() {
  if (bInit == false) {
    xStudy1 = upperDonchian(20, sym("IBM,20")); // IBM 20-min interval
    xStudy2 = middleDonchian(20, sym("IBM,20")); // IBM 20-min interval
    xStudy3 = lowerDonchian(20, sym("IBM,20")); // IBM 20-min interval
    bInit = true;
  } // retrieve single values for conditional statements
  var nValue1_0 = xStudy1.getValue(0); // Current Bar Index value
  var nValue1_1 = xStudy1.getValue(-1); // Prior Bar Index value
  // Synchronized Series plot
  return new Array(getSeries(xStudy1), getSeries(xStudy2), getSeries(xStudy3));
}



See Also

Series Object
getSeries()
Built-in Study Functions
eSignal Forum Search Engine
Help Guides and Tutorials