Indicators & Oscillators

Trade like the professionals!

AgenaTrader provides you with a variety of powerful indicators that will assist you with your individual market analysis.

Indicators can be used in - Charts - Condition Escort - AgenaScript

For each indicator you will find a brief description of its interpretation, operation and functionality, a graphical representation on a chart and further technical details for its usage with AgenaScript.

indicators

Accumulation/Distribution (ADL)

Description

The Accumulation Distribution LevelLine (ADL) indicator was developed by Marc Chaikin. The ADL is a volume indicator that represents the money flow. The ADL is an improvement of the On-Balance Volume Indicator created by Joe Granville, which was actually one of the very first volume indicators.

Interpretation

There are two interpretations of the ADL:

Confirmation of a trend or

  1. The depiction of divergence

If the ADL is rising in an uptrend, then money is flowing in the direction of the rising prices, thus the uptrend is confirmed. If the ADL is falling in a downward trend, money is being taken out of the stock, thus confirming the downtrend.

Further information

vtadwiki.vtad.de

Usage

ADL()
ADL(IDataSeries inSeries)
ADL()[int barsAgo]
ADL(IDataSeries inSeries)[int barsAgo]

Return value

double

When using the method with an index (e.g. ADL()[int barsAgo] ), the value of the indicator will be outputted for the referenced bar.

Parameter

inSeries Input data series for the indicator

Visualization

Accumulation/Distribution (ADL)

Example

//Testing the direction of the ADL
if (IsSerieRising(ADL()) {
Print("The ADL indicator is rising.");
}

Adaptive Price Zone (APZ)

Description

This is a technical indicator developed by Lee Leibfarth in 2006. The Adaptive Price Zone is a volatility-based indicator shown as a set of bands laid over a price chart. The APZ, which is particularly useful in non-trending, choppy markets, was developed with the aim of helping traders to find potential turning points in the markets. The APZ is based on a short-term, double-smoothed EMA that reacts rapidly to price changes with reduced lag. It works in the following way: the bands create a channel that envelopes the average price and tracks price changes. If the price crosses over the upper band of the zone, this creates an opportunity for the trader to trade a reversal. For the lower band, the reverse is true.

Interpretation

The bigger the price movement, the greater the distance between the upper and lower band will be. The smaller the price movement, the smaller the distance between the bands. More widely spaced bands will indicate increased instability and volatility, whereas closely tuned bands will display reduced volatility. If the price action breaks through the upper or lower band then the APZ will tend to return to its statistical average. This will lead to trading opportunities where the market may try to compensate for imbalances. If the price overshoots the bands for example, as mentioned in the description, then this will present you with a trading opportunity in the opposite direction.

Further information

http://www.investopedia.com/articles/trading/10/adaptive-price-zone-indicator-explained.asp

Usage

APZ(double barPct, int period)
APZ(IDataSeries inSeries, double barPct, int period)
//Upper Band
APZ(double barPct, int period).Upper[int barsAgo]
APZ(IDataSeries inSeries, double barPct, int period).Upper[int barsAgo]
//Lower Band
APZ(double barPct, int period).Lower[int barsAgo]
APZ(IDataSeries inSeries, double barPct, int period).Lower[int barsAgo]

Return value

double

When using the method with an index (e.g. APZ(2, 20)[int barsAgo] ), the value of the indicator will be outputted for the referenced bar.

Parameters

barPct Standard deviation

inSeries Input data series for the indicator

period Number of bars included in the calculation

Visualization

Adaptive Price Zone (APZ)

Example

//Output for the current values for the upper and lower band of a 20-period APZ
Print("Value for the upper APZ band : " + APZ(2, 20).Upper[0]);
Print("Value for the lower APZ band: " + APZ(2, 20).Lower[0]);

Aroon

Description

Aroon, an indicator system that determines whether or not a stock is trending and how strong this trend is, was developed by Tushar Chande in 1995. Its name is derived from the Sanskrit “dawn’s early light”. Chande used this name to signify the indicators’ purpose of revealing the start of a new trend. These indicators measure the number of periods since the last time the price recorded an x-day high or low. There are two distinct indicators: the Aroon-Up and Aroon-Down, whereby a 50-day Aroon-Up measures the number of days since a 50-day high, and a 50-day Aroon-Down measures the days since a 50-day low. This makes the Aroon indicators significantly different from the usual momentum oscillators, which concentrate on price in relation to time. What makes Aroon indicators unique is that they focus on time in relation to price. Aroon indicators can be used to detect emerging trends, identify consolidations, anticipate reversals and define correction periods.

Interpretation

The Aroon indicators fluctuate above/below a centerline (50) and are bound between 0 and 100. These three levels are important for interpretation. At its most basic, the bulls have the edge when Aroon-Up is above 50 and Aroon-Down is below 50. This indicates a greater propensity for new x-day highs than lows. The converse is true for a downtrend. The bears have the edge when Aroon-Up is below 50 and Aroon-Down is above 50.

A surge to 100 indicates that a trend may be emerging. This can be confirmed with a decline in the other Aroon indicator. For example, a move to 100 in Aroon-Up combined with a decline below 30 in Aroon-Down shows upside strength. Consistently high readings mean prices are regularly hitting new highs or new lows for the specified period. Prices are moving consistently higher when Aroon-Up remains in the 70-100 range for an extended period. Conversely, consistently low readings indicate that prices are seldom hitting new highs or lows. Prices are NOT moving lower when Aroon-Down remains in the 0-30 range for an extended period. This does not mean prices are moving higher though. For that we need to check Aroon-Up.

Further information

http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:aroon

Usage

Aroon(int period)
Aroon(IDataSeries inSeries, int period)
//For the upper value
Aroon(int period).Up[int barsAgo]
Aroon(IDataSeries inSeries, int period).Up[int barsAgo]
//For the lower value
Aroon(int period).Down[int barsAgo]
Aroon(IDataSeries inSeries, int period).Down[int barsAgo]

Return value

double

When using this method with an index (e.g. Aroon(20)[int barsAgo] ) the value of the indicator will be displayed for the last referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars taken into consideration when calculating the values

Visualization

Aroon

Example

//Output of the current up or down values for the 20 period Aroon
Print("Current value for Aroon Up is : " + Aroon(20).Up[0]);
Print("Current value for Aroon Down is: " + Aroon(20).Down[0]);

Aroon Oscillator

Description

This oscillator is calculated by subtracting the Aroon-Down from the Aroon-Up. Usually, these two indicators are plotted next to each other for easy comparison, but traders can also view the difference between the two indicators using the Aroon oscillator, which can fluctuate between -100 and +100, with zero as the middle line. When the oscillator is positive, this indicates a bullish trend bias, whilst when the oscillator is negative, this shows a bearish trend bias. Chartists also have the option to extend the bull-bear threshold to spot stronger signals.

Interpretation

The Aroon Oscillator is ideally used as a trend filter and trend strength indicator. It is used analogously to the ADX Indicator.

Usage

AroonOscillator(int period)
AroonOscillator(IDataSeries inSeries, int period)
AroonOscillator(int period)[int barsAgo]
AroonOscillator(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index such as (AroonOcsillator(20)[int barsAgo] ), the value of the indicator will be outputted for the bar that was referenced.

Parameters

inSeries Input data series for the indicator

period Number of bars taken into consideration for the calculations

Visualization

Aroon Oscillator

Example

//Output for the current value for a 20 period Aroon Oscillator
Print("Value for the oscillator is: " + AroonOscillator(20)[0]);

Average Directional Index (ADX)

Description

The ADX is part of a group of directional movement indicators that make up a trading system developed by Welles Wilder: the Average Directional Index, Minus Directional Indicator (-DI) and Plus Directional Indicator (+DI). Wilder designed ADX with daily prices and commodities in mind; however, these indicators can also be applied to stocks. The Average Directional Index measures the trend strength without taking trend direction into account, while the -DI and +DI complement the ADX by defining the trend direction. When used together, traders can find out both the direction and the strength of the trend.

Wilder talks about the Directional Movement indicators in his 1978 book, New Concepts in Technical Trading Systems, which also features details of Average True Range (ATR), the Parabolic SAR system and the RSI. Although he developed them before the computer age, Wilder’s indicators are extremely detailed in their calculation and are still equally effective today.

Interpretation

The Average Directional Index (ADX) is used to measure the strength or weakness of a trend, not the actual direction. Directional movement is defined by +DI and -DI. In general, the bulls have the edge when +DI is greater than -DI, while the bears have the edge when -DI is greater. Crosses of these directional indicators can be combined with ADX for a complete trading system.

It should be kept in mind that Wilder was a commodity and currency trader. The examples in his books are based on these instruments, not stocks. This does not mean his indicators cannot be used with stocks. Some stocks have price characteristics similar to commodities, which tend to be more volatile with short and strong trends. Stocks with low volatility may not generate signals based on Wilder's parameters. Chartists will likely need to adjust the indicator settings or the signal parameters according to the characteristics of the security.

Further information

http://de.wikipedia.org/wiki/Average_Directional_Movement_Index

Usage

ADX(int period)
ADX(IDataSeries inSeries, int period)
ADX(int period)[int barsAgo]
ADX(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. ADX(20)[int barsAgo] ), the value of the indicator will be outputted for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculation

Visualization

Average Directional Index (ADX)

Example

//Output of the current value of a 20 period ADX
Print("Value of the ADX: " + ADX(20)[0]);

Average Directional Movement Rating (ADXR)

Description

The ADXR is the ADX indicator plus the ADX from n days ago divided by 2. Written as an equation, it looks like this: (current ADX + ADX n days ago) / 2.

Interpretation

The oscillator moves along a guiding line that typically has a value of 20. When the ADXR rises above 20, a trend exists. If the ADXR is below 20, no trend exists and the market is moving sideways. Welles Wilder recommends buying into the market at a value of 25 and higher, and holding the position as long as the value remains above 20.

Usage

ADXR(int interval, int period)
ADXR(IDataSeries inSeries, int interval, int period)
ADXR(int interval, int period)[int barsAgo]
ADXR(IDataSeries inSeries, int interval, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. ADXR(10, 14)[int barsAgo]), the value of the indicator will be outputted for the referenced bar.

Parameters

inSeries Input data series for the indicator

interval Interval between the first ADX value and the current ADX value

period Number of bars included in the calculation

Visualization

Average Directional Movement Rating (ADXR)

Example

//Output of the current value of the ADXR
Print("Value of the ADXR: " + ADXR(10, 14)[0]);

Average True Range (ATR)

Description & Interpretation

The Average True Range (ATR), which was developed by J. Welles Wilder, is an indicator that measures volatility. As is true for most of his indicators, Wilder designed the ATR with commodities and daily prices in mind. Commodities are often more volatile than stocks, and frequently experience gaps and limit moves, which happen when a commodity opens up or down its maximum allowed move for the session. A volatility formula that was based on the high-low range only would be unable to capture volatility from gap or limit moves. Wilder, therefore, developed the Average True Range to capture this "missing" volatility. Keep in mind that ATR does not provide an indication of price direction, but merely volatility.

The ATR is featured in Wilder’s 1978 book, New Concepts in Technical Trading Systems, which also goes into detail about the Parabolic SAR, RSI and the Directional Movement Concept (ADX). Despite having been developed before the computer age, Wilder's indicators are equally functional today and remain extremely popular.

The starting point for Wilder was a concept called True Range (TR), which is defined as the greatest of the following: - Method 1: current high minus the current low - Method 2: current high minus the previous close (absolute value) - Method 3: current Low minus the previous close (absolute value)

Absolute values are used for ensuring positive numbers, since Wilder was interested in measuring the distance between two points, not the direction. If the current period's high is above the prior period's high and the low is below the prior period's low, then the current period's high-low range will be used as the True Range. This is an outside day that would use method 1 to calculate the TR, and is quite straightforward. Methods 2 and 3 are used whenever there is a gap or inside day. A gap occurs when the previous close is greater than the current high (indicating a potential gap down or limit move) or the previous close is lower than the current low (indicating a potential gap up or limit move). The image below shows examples of when methods 2 and 3 are appropriate.

Further information

VTAD: http://vtadwiki.vtad.de/index.php/Average_True_Range

Usage

ATR(int period)
ATR(IDataSeries inSeries, int period)
ATR(int period)[int barsAgo]
ATR(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. ATR(14)[int barsAgo] ), the value of the indicator will be outputted for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculation

Visualization

Average True Range (ATR)

Example

//Output of the current value of a 14 period ATR
Print("The current ATR value is: " + ATR(14)[0]);

BBBreakOutSpeed

Description

Shows the change in the width of the Bollinger Bands in comparison to the width of the Bollinger Bands of the previous bar. Negative (red) means that the Bollinger Bands are drawing together. (Larger than SignalSize -> Short, characterized by a more intense red) Positive (green) means that the Bollinger Bands are diverging. (Larger than SignalSize -> Long, characterized by a more intense green)

Usage

BBBreakOutSpeed(double bandsDeviation, int bandsPeriod, int signalsize)
BBBreakOutSpeed(IDataSeries inSeries, double bandsDeviation, int bandsPeriod, int signalsize)
BBBreakOutSpeed(double bandsDeviation, int bandsPeriod, int signalsize)[int barsAgo]
BBBreakOutSpeed(IDataSeries inSeries, double bandsDeviation, int bandsPeriod, int signalsize)[int barsAgo]

Return value

double

When using this method with an index (e.g. BBBreakOutSpeed(5)[int barsAgo] ), the value of the indicator will be outputted for the referenced bar.

Parameters

inSeries Input data series for the indicator

bandsDeviation Standard deviation for the Bollinger Bands

bandsPeriod Periods for the Bollinger Bands

signalsize The minimum height of the bar in order for it to produce a signal (long, short)

Visualization

BBBreakOutSpeed

Example

//If the width between the Bollinger Bands (standard deviation 2, period 20) has significantly (value > 15) increased in comparison to the previous period, a long position is opened.

if(BBBreakOutSpeed(2, 20, 15).BandWidthEntrySignalBuffer[0] != 0)
{
    OpenLong("BBBreakOutSpeedLong");
}
//If the width between the Bollinger Bands (standard deviation 2, period 20) has significantly (value > 15) decreased in comparison to the previous period, a short position is opened.

if(BBBreakOutSpeed(2, 20, 15).BandWidthExitSignalBuffer[0] != 0)
{
    OpenShort("BBBreakOutSpeedShort");
}

Balance of Power (BOP)

Description

The developer of the Balance of Power indicator was Igor Livshin, who came up with the BOP in August 2001. The BOP indicator represents the strength of the buyers (bulls) vs. the sellers (bears), and oscillates between -100 and 100. The calculation of the BOP = (close - open) / (high - low).

Interpretation

A directional change of the BOP can be interpreted as a warning signal and will generally be followed by a price change.

Usage

BOP(int smooth)
BOP(IDataSeries inSeries, int smooth)
BOP(int smooth)[int barsAgo]
BOP(IDataSeries inSeries, int smooth)[int barsAgo]

Return value

double

When using this method with an index (e.g. BOP(5)[int barsAgo] ), the value of the indicator will be outputted for the referenced bar.

Parameters

inSeries Input data series for the indicator

smooth Settings for the smoothing

Visualization

Balance of Power (BOP)

Example

//Output of the value for the BOP with a smoothing of 5 periods
Print("The Balance of Power value is: " + BOP(5));

Bollinger Bands

Description & Interpretation

Bollinger Bands®, which were developed by John Bollinger, are volatility bands that are placed above and below a moving average. The volatility is based on the standard deviation, which fluctuates as volatility increases and decreases. An increase in volatility causes the bands to automatically widen, and a decrease in volatility causes them to automatically narrow. The Bollinger Bands’ dynamic nature means that they can also be used on different securities with the standard settings. When it comes to signals, Bollinger Bands can be used to identify M-Tops and W-Bottoms, or for determining a trend’s strength.

Bollinger Bands are made up of a middle band with two outer bands. The middle band is a simple moving average that is normally set to 20 periods. The reason a simple moving average is used is that the standard deviation formula also uses a simple moving average. The look-back period for the standard deviation is the same as for the simple moving average. The outer bands are generally set 2 standard deviations above and below the middle band, but settings can be adjusted to suit the characteristics of specific securities or trading styles. Bollinger recommends making small, incremental adjustments to the standard deviation multiplier. Changing the number of periods for the moving average also has an effect on the number of periods used to calculate the standard deviation, which is why only small adjustments are required for the standard deviation multiplier. An increase in the moving average period would also automatically increase the number of periods used for calculating the standard deviation, as well as warranting an increase in the standard deviation multiplier. With a 20-day SMA and 20-day Standard Deviation, the standard deviation multiplier is set at 2. Bollinger recommends increasing the standard deviation multiplier to 2.1 for a 50-period SMA and decreasing the standard deviation multiplier to 1.9 for a 10-period SMA. Bollinger Bands reflect direction with the 20-period SMA and volatility with the upper/lower bands. This means that they can be used to determine whether prices are relatively high or low. Bollinger maintains that the bands should contain 88-89% of price action, rendering a move outside the bands very significant. Technically, prices are relatively high when above the upper band and relatively low when below the lower band. However, relatively high should not be seen as bearish or as a sell signal. Likewise, relatively low should not be regarded as bullish or as a buy signal, since prices are high or low for a reason. As with other indicators, Bollinger Bands are not designed to be used as a stand-alone tool. Traders should combine Bollinger Bands with basic trend analysis and other indicators to confirm a trend.

The calculation is performed in the following manner:

Upper band = middle band + 2 standard deviations Middle band = average of 20 periods Lower band = middle period – 2 standard deviations

More information can be found here: BollingerMTF, Bollinger Percent %B, Bollinger Bands Width

Further information

VTAD: http://vtadwiki.vtad.de/index.php/Bollinger_B%C3%A4nder

Book "Technische Indikatoren - simplified" by Oliver Paesler (German only)

Usage

Bollinger(double numStdDev, int period)
Bollinger(IDataSeries inSeries, double numStdDev, int period)
//For the upper band
Bollinger(double numStdDev, int period).Upper[int barsAgo]
Bollinger(IDataSeries inSeries, double numStdDev, int period).Upper[int barsAgo]
//For the lower band
Bollinger(double numStdDev, int period).Lower[int barsAgo]
Bollinger(IDataSeries inSeries, double numStdDev, int period).Lower[int barsAgo]

Return value

double

When using this method with an index (e.g. Bollinger(2, 20)[int barsAgo] ), the value of the indicator will be displayed for the referenced bar.

Parameters

inSeries Input data series for the indicator

numStdDev Standard deviation

period Number of bars included in the calculation

Visualization

Bollinger Bands

Example

//Output of the value for the upper Bollinger Band
Print("Value of the upper band: " + Bollinger(2, 20).Upper[0]);
//Middle band
Print("Value of the middle band: " + Bollinger(2, 20)[0]);
//Lower band
Print("Value of the lower band: " + Bollinger(2, 20).Lower[0]);

Bollinger Percent B (%b)

Description

Bollinger %b is an important indicator that is derived from John Bollinger's original Bollinger Bands indicator. %b represents the location of the most recent close price in relation to the Bollinger Bands as well as to what degree it is above or below any of the bands. The Bollinger Percent B equation can be constructed in the following way: Percent B = ((Close - Bollinger Lower Band) / (Bollinger Upper Band - Bollinger Lower Band)) * 100. If the close price is the same as the upper Bollinger Band, %b will be 100 (percent). If the close price is the same as the lower Bollinger Band, %b will be 0.0 (percent). A %b value of 50 indicates that the close price is equal to the middle Bollinger Band. What is more, readings above 100 and below 0 show that the close price is outside of the Bollinger Bands by a corresponding percentage of the Bollinger Bandwidth. A %b value of 125 means that the close price is above the upper Bollinger Band by 25% of the Bandwidth, while a %b value of -25 means that the close price is below the lower Bollinger Band by 25% of the Bandwidth.

See Bollinger Bands, BBWidth

An additional application: normalizing indicators

Bollinger bands, and therefore the %b indicator, can be applied not only to the prices of stocks, futures etc., but also to time series with fundamental data, volume data and other indicators. This is particularly interesting when you need to know whether a value is relatively high or low – in this case, the %b indicator offers you a different perspective. If you wish to find out whether the volume of a stock is exceedingly high or low, you can simply apply it to the volume data. John Bollinger regards the application of the %b onto other indicators as one of the most important aspects of the indicator. If you wish to normalize an indicator with %b, it is important to first calculate the indicator (e.g. the RSI) with the help of the %b for the calculation of the indicator instead of the price data. The application of the %b essentially works in the same way as the application of Bollinger bands onto the indicator itself. The intersection points between the bands and the indicators will therefore be 1 and 0. In principle, the relative position of the original indicator is displayed in relation to its upper and lower bands. This means that the boundaries of the original indicator will be removed. John Bollinger himself wrote: “You’re defining a high or low point on a relative basis, this may allow you to gain a deeper insight and understanding not provided by traditional indicators and guidelines.” John Bollinger provides several parameters for the %b calculation, such as 40-day periods and a factor of 2.0 for a 9-day RSI, and a 50-day period with a factor of 2.1 for the calculation of %b.

(Sources: Oliver Paesler: "Technische Indikatoren - simplified" and John Bollinger: "Bollinger Bänder")

(Source: tradesignalonline)

Further information

VTAD: http://vtadwiki.vtad.de/index.php/Bollinger_B%C3%A4nder

Book "Technische Indikatoren - simplified" by Oliver Paesler (German only)

Usage

BollingerPercentB(int period, double numStdDev)
BollingerPercentB(IDataSeries inSeries, int period, double numStdDev)
BollingerPercentB(int period, double numStdDev) [int barsAgo]
BollingerPercentB(IDataSeries inSeries, int period, double numStdDev)[int barsAgo]

Return value

double

When using this method with an index (e.g. BollingerPercentB(20, 2)[int barsAgo] ), the value of the indicator will be outputted for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculation

numStdDev Standard deviation

Visualization

Bollinger Percent B (%b)

Example

//Output for the value of Bollinger %B
Print("Value of the Bollinger Percent B is: " + BollingerPercentB(20, 2)[0]);

Bollinger Band Width (BBWidth)

Description

This indicator is derived from Bollinger Bands. John Bollinger refers to Bollinger Band Width as one of two indicators that one can derive from Bollinger Bands; the other indicator is %B. The Band Width measures the percentage difference between the upper and the lower band. It decreases as Bollinger Bands narrow, and increases as they widen. Since Bollinger Bands are based on the standard deviation, falling Band Width reflects decreasing volatility and rising Band Width reflects the opposite.

Interpretation

John Bollinger uses the Band Width to recognize rising and falling trends. Most trends have their origins within sideway market movements that generally have a low volatility. If a breakout is accompanied by a sudden rise in the Band Width, this means that there is definite support for the move.

Further information

VTAD: http://vtadwiki.vtad.de/index.php/Bollinger_B%C3%A4nder

Book "Technische Indikatoren - simplified" by Oliver Paesler (German only)

Usage

BBWidth(double numStdDev, int period)
BBWidth(IDataSeries inSeries, double numStdDev, int period)
BBWidth(double numStdDev, int period)[int barsAgo]
BBWidth(IDataSeries inSeries, double numStdDev, int period)[int barsAgo]

//For the value of the upper Band Width
BBWidth(double numStdDev, int period).BandWidth
BBWidth(IDataSeries inSeries, double numStdDev, int period).BandWidth
BBWidth(double numStdDev, int period).BandWidth[int barsAgo]
BBWidth(IDataSeries inSeries, double numStdDev, int period).BandWidth[int barsAgo]

//For the value of the trigger line (threshold)
BBWidth(double numStdDev, int period).Threshold
BBWidth(IDataSeries inSeries, double numStdDev, int period).Threshold
BBWidth(double numStdDev, int period).Threshold[int barsAgo]
BBWidth(IDataSeries inSeries, double numStdDev, int period).Threshold[int barsAgo]

Return value

double

When using the method with an index (e.g. BBWidth(2, 20)[int barsAgo] ), the value of the indicator will be outputted for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculation

numStdDev Standard deviation

Visualization

Bollinger Band Width (BBWidth)

Example

//Output for the values of Bollinger Band Width
Print("The value of the Bollinger Band Width is: " + BBWidth(2, 20).BandWidth[0]);
//Output for the values for the signal line
Print("The value of the signal line is: " + BBWidth(2, 20).Threshold[0]);

Bollinger MTF (MultiTimeFrame)

Description

The Bollinger MTF is the multi-timeframe version of the Bollinger Bands, and its main use is in intraday trading. Multi-timeframe means that the indicator is calculated in a separate timeframe than that which is displayed in the chart. With the standard Bollinger band indicator, displaying an hourly Bollinger band in a 5-minute timeframe would not be possible – this is the point at which the MTF becomes useful. BollingerMTF can only be used for display in the chart and cannot be applied/implemented in AgenaScript.

Visualization

The image shows a 5-minute chart with a 60-minute Bollinger band

Bollinger MTF (MultiTimeFrame)

BuySellPressure

Description

The BuySellPressure indicator displays the buy or sell pressure for the current bar. Furthermore, these trades are classified as "buy" or “sell”. For this classification, a "buy" is assumed any time the transaction has occurred at or above the ask. Inside trades are not taken into account.

Caution: This is a real-time indicator. It will only work on and with real-time data and cannot therefore be used for historical information.

When the properties dialog for the indicator is open and changes are made, then the indicator must be reloaded. Doing so will delete all previously accumulated data.

See BuySellVolume.

Usage

BuySellPressure()
BuySellPressure(IDataSeries inSeries)

//For the values of buy pressure
BuySellPressure().BuyPressure[int barsAgo]
BuySellPressure(IDataSeries inSeries).BuyPressure[int barsAgo]

//For the values of sell Pressure
BuySellPressure().SellPressure[int barsAgo]
BuySellPressure(IDataSeries inSeries).SellPressure[int barsAgo]

Return value

double

When using this method with an index (e.g. BuySellPressure().BuyPressure[int barsAgo] ), the value of the indicator will be outputted for the referenced bar.

Caution: If BuySellPressure is used with EoD data, the value 50 will always be outputted. - BuySellPressure().SellPressure[0] = 50 - BuySellPressure().SellPressure[0] = 50

Parameters

inSeries Input data series for the indicator

Visualization

BuySellPressure

Example

protected override void OnInit()
{
  BuySellPressure().CalculateOnClosedBar = false;
}

protected override void OnCalculate()
{
  if (Close[0] > DonchianChannel(20).Upper[5])
  {
    if (IsHistoricalMode || BuySellPressure().BuyPressure[0] > 70)
    OpenLong();
  }
}

BuySellVolume

Description

This indicator shows us the current buy or sell pressure based on the volume. For this, trades are classified as "buy" or "sell", whereby for the classification, a "buy" is assumed any time the transaction is executed at or above the ask. A transaction at or below the bid is considered a "sell".

Caution: This is a real-time indicator and will not work with historical data.

Similar conditions as with the BuySellPressure apply.

Usage

BuySellVolume BuySellVolume()
BuySellVolume BuySellVolume(IDataSeries inSeries)

Return value

double

When using this method with an index (e.g. BuySellVolume().BuyVolume[int barsAgo] ), the value of the indicator will be outputted for the referenced bar.

Parameter

inSeries Input data series for the indicator

Visualization

BuySellVolume

Example

//Output for the BuySellVolume
Print("The BuySellVolume is: " + BuySellVolume()[0]);

CandleStickPattern

Description

The CandleStickPattern indicator looks for specific candlestick formations.

Further information

Explanations of the formations and their interpretations can be found here: http://en.wikipedia.org/wiki/Candlestick_pattern

Usage


CandleStickPattern(CandleStickPattern pattern, int trendStrength)
CandleStickPattern(IDataSeries input, CandleStickPattern pattern, int trendStrength)
CandleStickPattern(CandleStickPattern pattern, int trendStrength)[int barsAgo]
CandleStickPattern(IDataSeries input, CandleStickPattern pattern, int trendStrength)[int barsAgo]

Return value

double

0 – Pattern not existent 1 – Pattern existent

When using this method with an index (e.g. CandleStickPattern(...)[int barsAgo] ), the value of the indicator will be outputted for the referenced bar.

Parameters

InSeries Input data series for the indicator
pattern Possible values are:
CandleStickPattern.BearishBeltHold,
CandleStickPattern.BearishEngulfing,
CandleStickPattern.BearishHarami,
CandleStickPattern.BearishHaramiCross,
CandleStickPattern.BullishBeltHold,
CandleStickPattern.BullishEngulfing,
CandleStickPattern.BullishHarami,
CandleStickPattern.BullishHaramiCross,
CandleStickPattern.DarkCloudCover,
CandleStickPattern.Doji,
CandleStickPattern.DownsideTasukiGap,
CandleStickPattern.EveningStar,
CandleStickPattern.FallingThreeMethods,
CandleStickPattern.Hammer,
CandleStickPattern.HangingMan,
CandleStickPattern.InvertedHammer,
CandleStickPattern.MorningStart,
CandleStickPattern.PiercingLine,
CandleStickPattern.RisingThreeMethods,
CandleStickPattern.ShootingStar,
CandleStickPattern.StickSandwich,
CandleStickPattern.ThreeBlackCrows,
CandleStickPattern.ThreeWhiteSoldiers,
CandleStickPattern.UpsideGapTwoCrows,
CandleStickPattern.UpsideTasukiGap
trendStrength Signifies the number of bars to the left and right of the swing high or swing low that are used to identify a trend. The value 0 turns off the search, meaning that the only thing searched for is chart patterns.

Visualization

CandleStickPattern

Example

if (CandelStickPattern(CandleStickPattern.ShootingStar, 5)[0] == 1)
Print("Pattern ShootingStar found!");

ChaikinMoneyFlow (CMF)

Description

Marc Chaikin was the one to develop the Chaikin Money Flow Index, which is a volume indicator that tries to find an answer to the following question: Where is the money flowing into? Into the stock = accumulation, and out of the stock = distribution. Clearly, this applies not only to stocks/shares but also to other instruments. With this, Chaikin attempts to expand on and improve the On-Balance Volume that was developed by Granville. Using the CMF, the position of the closing price within the trading range is placed in relation to the volume. What this essentially means is that the trading volume is multiplied by the price. The trading volume displays the amount of money that has “flowed” into the stock or has been “removed” from the stock; the indicator simply displays whether it has been accumulated (buying pressure) or removed (distribution).

Interpretation

The CMF oscillates around the zero line and is shown in a separate window with an open scale. Should the CMF be located above the zero line, then it can be interpreted as accumulation. If higher highs are being created, then the buying pressure is increasing. The reverse is true for the selling pressure. The Chaikin Money Flow should always be used in combination with other methods of technical analysis.

Further information

VTAD: http://vtadwiki.vtad.de/index.php/Chaikin_Money_Flow

Usage

ChaikinMoneyFlow(int period)
ChaikinMoneyFlow(IDataSeries inSeries, int period)
ChaikinMoneyFlow(int period)[int barsAgo]
ChaikinMoneyFlow(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. ChaikinMoneyFlow(21)[int barsAgo] ), the value of the indicator will be outputted for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculation

Visualization

ChaikinMoneyFlow (CMF)

Example

//Output for the Money Flow value
Print("The Chaikin Money Flow value is: " + ChaikinMoneyFlow(21)[0]);

Chaikin Oscillator

Description

The Chaikin Oscillator is a volume indicator that lets the trader know whether new highs are also accompanied by new volumes. This oscillator is a simple MACD that is applied to the accumulation/distribution line. Hereby, the difference between a 3-day exponential moving average and a 10-day exponential smoothed average for the accumulation/distribution line is calculated.

Interpretation

The interpretation of the Chaikin Oscillator is similar to the principle of the accumulation/distribution. All an oscillator does is show the changes in liquidity for the instrument.

Usage

ChaikinOscillator(int fast, int slow)
ChaikinOscillator(IDataSeries inSeries, int fast, int slow)
ChaikinOscillator(int fast, int slow)[int barsAgo]
ChaikinOscillator(IDataSeries inSeries, int fast, int slow)[int barsAgo]

Return value

double

When using this method with an index (e.g. ChaikinOscillator(3, 10)[int barsAgo] ), the value of the indicator will be outputted for the referenced bar.

Parameters

inSeries Input data series for the indicator

fast Number of bars included in the calculation for the fast EMA

slow Number of bars included in the calculation for the slow EMA

Visualization

Chaikin Oscillator

Example

//Output for the oscillator for the fast and slow values of 3 and 10
Print("The Chaikin Oscillator value is: " + ChaikinOscillator(3, 10)[0]);

ChaikinVolatility (CVL)

Description

The Chaikin Volatility Indicator is one of a few indicators that are designed to try and measure price movement fluctuations. Chaikin takes the daily price range (daily high minus daily low) as the fundamental measure of volatility. With this indicator, a widening range is, by implication, associated with a higher volatility.

Interpretation

The indicator oscillates around the zero line and fluctuates between a scale of +100 to -100. It can be used on a daily chart as well as on a weekly or monthly chart. All values above the zero line represent rising volatility, and the gradient of the rise implies the seriousness of potential floors forming. The Chaikin Volatility is not specifically used to define exact signals, but is considered as more of an assisting tool in the trading system.

Usage

ChaikinVolatility(int fast, int slow)
ChaikinVolatility(IDataSeries inSeries, int fast, int slow)
ChaikinVolatility(int fast, int slow)[int barsAgo]
ChaikinVolatility(IDataSeries inSeries, int fast, int slow)[int barsAgo]

Return value

double

When using this method with an index (e.g. ChaikinVolatility(14)[int barsAgo] ), the value of the indicator will be outputted for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

ChaikinVolatility (CVL)

Example

//Chaikin output for a period of 14
Print("The value of the Chaikin Volatility is: " + ChaikinVolatility(14)[0]);

Chande Momentum Oscillator (CMO)

Description

The CMO is one of several indicators created by the technical analyst Tushar Chande; it is a technical momentum indicator. This indicator arises from calculating the difference between the total of all recent gains and the total of all recent losses, and then dividing this result by the total of all price movement over the given period. This oscillator shares similarities with other momentum indicators such as the Relative Strength Index and the Stochastic Oscillator, because it is also range-bound (+100 and -100).

Interpretation

The security is deemed overbought when the momentum oscillator is above +50 and oversold when it is below -50. Many technical traders add a nine-period moving average to this oscillator to act as a signal line. Bullish signals are generated when the oscillator crosses above the signal, and bearish signals are generated when the oscillator crosses down through the signal.

Further information

http://www.boersenwissen.de/content/content_bin/cont_bin18.html

Usage

CMO(int period)
CMO(IDataSeries inSeries, int period)
CMO(int period)[int barsAgo]
CMO(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. CMO(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Chande Momentum Oscillator (CMO)

Example

//Output for the value of the Chande Momentum Oscillator
Print("The current value for the Chande Momentum Oscillator is: " + CMO(14)[0]);

Climactic Distance

Description

The Climactic Distance indicator was invented and developed by Gilbert Kreuzthaler, CEO of Include IT GmbH and founder of AgenaTrader.com. This indicator is used in the Location Point Trading system. It calculates the median course of the current and historical candle at a distance to the simple moving average (SMA) of the last 20 periods. Additionally, it also measures the average course deviation within the last 80 periods. If the median course exceeds the top or bottom course deviation, the market is deemed climactic, and this influences the trading decisions made in Location Point Trading.

Calcualtion

Black line in the middle: SMA 20 Green moving line: Median Kurs Red upper and lower line: Average course deviation oft he last 80 periods.

More information

https://www.facebook.com/Location-Point-Trading-344217482287592/?fref=ts

Usage

ClimacticDistance(int sMAPeriod, int thresholdPercent)
ClimacticDistance(IDataSeries InSeries, int sMAPeriod, int thresholdPercent)
ClimacticDistance(int period, int tresholdPercent, Color climacticColor)
ClimacticDistance(IDataSeries InSeries, int sMAPeriod, int thresholdPercent, Color climacticColor)
//Upper band
ClimacticDistance(int sMAPeriod, int thresholdPercent).Upper[int barsAgo]
ClimacticDistance(IDataSeries InSeries, int sMAPeriod, int thresholdPercent).Upper[int barsAgo]
ClimacticDistance(int period, int tresholdPercent, Color climacticColor).Upper[int barsAgo]
ClimacticDistance(IDataSeries InSeries, int sMAPeriod, int thresholdPercent, Color climacticColor).Upper[int barsAgo]
//Lower band
ClimacticDistance(int sMAPeriod, int thresholdPercent).Lower[int barsAgo]
ClimacticDistance(IDataSeries InSeries, int sMAPeriod, int thresholdPercent).Lower[int barsAgo]
ClimacticDistance(int period, int tresholdPercent, Color climacticColor).Lower[int barsAgo]
ClimacticDistance(IDataSeries InSeries, int sMAPeriod, int thresholdPercent, Color climacticColor).Lower[int barsAgo]

//MovingAverage
ClimacticDistance(int sMAPeriod, int thresholdPercent).MovingAverage[int barsAgo]
ClimacticDistance(IDataSeries InSeries, int sMAPeriod, int thresholdPercent).MovingAverage[int barsAgo]
ClimacticDistance(int period, int tresholdPercent, Color climacticColor).MovingAverage[int barsAgo]
ClimacticDistance(IDataSeries InSeries, int sMAPeriod, int thresholdPercent, Color climacticColor).MovingAverage[int barsAgo]
//Distance
ClimacticDistance(int sMAPeriod, int thresholdPercent).Distance[int barsAgo]
ClimacticDistance(IDataSeries InSeries, int sMAPeriod, int thresholdPercent).Distance[int barsAgo]
ClimacticDistance(int period, int tresholdPercent, Color climacticColor).Distance[int barsAgo]
ClimacticDistance(IDataSeries InSeries, int sMAPeriod, int thresholdPercent, Color climacticColor).Distance[int barsAgo]

Return value

double

Parameters

Int

Visualization

Climactic Distance

Example

//Output of the value for the Upper climactic distance line
Print(“Value of the upper band: “ + ClimacticDistnance(20, 80).Upper[0]);
//Output of the value for the Lower climactic distance line
Print(“Value of the upper band: “ + ClimacticDistnance(20, 80).Lower[0]);
//Output of the value for the Distance climactic distance line
Print(“Value of the upper band: “ + ClimacticDistnance(20, 80).Distance[0]);
//Output of the value for the Moving Average climactic distance line
Print(“Value of the upper band: “ + ClimacticDistnance(20, 80).MovingAverage[0]);

Commodity Channel Index (CCI)

Description

The Commodity Channel Index (CCI), which was created by Donald Lambert and actually featured in Commodities magazine in 1980, is a versatile indicator that can be used for identifying a new trend or as a warning of extreme conditions. Lambert originally developed the CCI as a means to identify cyclical turns in commodities – however, the indicator can also successfully be applied to ETFs, indices, stocks and various other securities. In general, what CCI does is to measure the current price level relative to an average price level over a specified period of time. When prices are well above their average, CCI is relatively high. When prices are far below their average, CCI is relatively low. This is how CCI can be used for identifying overbought and oversold levels.

Interpretation

CCI measures the difference between a securitys price change and its average price change. High positive readings indicate that prices are well above their average, which is a show of strength. Low negative readings indicate that prices are well below their average, which is a show of weakness.

The Commodity Channel Index (CCI) can be used as either a coincident or leading indicator. As a coincident indicator, surges above +100 reflect strong price action that can signal the start of an uptrend. Plunges below -100 reflect weak price action that can signal the start of a downtrend.

As a leading indicator, momentum oscillators, chartists can look for overbought or oversold conditions that may foreshadow a mean reversion. Similarly, bullish and bearish divergences can be used to detect early momentum shifts and anticipate trend reversals.

Further information

VTAD: http://vtadwiki.vtad.de/index.php/Commodity_Channel_Index

Usage

CCI(int period)
CCI(IDataSeries inSeries, int period)
CCI(int period)[int barsAgo]
CCI(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. CCI(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Commodity Channel Index (CCI)

Example

//Output for the CCI value calculated using 14 periods
Print("The value of the Commodity Channel Index is: " + CCI(14));

COTAggregatedIndexPositionDisaggregated

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

This indicator also works in the same way as the COTAggregatedIndexPositionLegacy; for interpretation and more detailed information, please read more under COTAggregatedIndexPositionLegacy. The difference here, in turn, consists in the usage of the detailed disaggregated data for calculating the indicator.

For the COTAggregatedIndexPositionDisaggregated, the following parameters are available:

  • AddIndices:
  • DowJones: select [True] if the positions of the DowJones should be added to the overall result.
  • Nasdaq100: select [True] if the positions of the Nasdaq100 should be added to the overall result.
  • Russell2000: select [True] if the positions of the Russell2000 should be added to the overall result.
  • SP500: select [True] if the positions of the SP500 should be added to the overall result.

  • Categories: Financial

  • Here you can only select the categories of the Financials, since this indicator addresses 4 financial markets. However, you can load the indicator in Financials AND Commodities.
  • Select [True] for the categories for which the positions for the selected markets should be added up and displayed.

  • Data base:

  • ReportType: see COTReportLegacy – CotType

  • Display:

  • LongPosition: select [True] to display the long positions of the desired market participants
  • ShortPosition: select [True] to display the short positions of the desired market participants
  • NetPosition: select [True] to display the net positions of the desired market participants

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

COTAggregatedIndexPositionDisaggregated

Example

to be announced

COTCommercialIndex

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

The CommercialIndex is a very telling COT indicator. It puts two of the most important COT-parameters in relation to each other – the net position of the commercials to the open interest. These values are normalized and subsequently outputted. A high value of the CommercialIndex shows strong buying behavior of the commercials, whereas a low value shows strong sell pressure from the commercials. The parameters are similarly structured as with the COTReport.

The following parameters are available for the COTCommercialIndex:

  • CotType: see COTReportLegacy – CotType
  • ReportType: see COTReportLegacy – ReportType
  • StochasticPeriod: see COTReportLegacy – ComparativePeriod
  • OpenInterestType: Here you can choose between [Native/Stochastic], which determines whether absolute values or the stochastic values of the positions of the commercials should be used for the calculation. The default setting is “Native”; do not change this if you wish to keep the informative value of the indicator.

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

COTCommercialIndex

Example

to be announced

COTOpenInterestDisaggregated

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

This indicator corresponds to the mode of operation of the COTOpenInterestLegacy, instead using, however, the more finely broken down data of the disaggregated reports. For the functionality and interpretation of the open interest, please read more under see COTOpenInterestLegacy. The calculation also occurs analogously to the legacy reports, and since for each long contract, there must also be a market participant on the short side, two calculation methods are possible (here for commodity futures):

1) Producer[Long] + SwapDealer[Long] + SwapDealer[Spread] + ManagedMoney[Long] + ManagedMoney[Spread] + OtherReportables[Long] + OtherReportables[Spread] + NonReportable[Long] = OpenInterest

2) Producer[Short] + SwapDealer[Short] + SwapDealer[Spread] + ManagedMoney[Short] + ManagedMoney[Spread] + OtherReportables[Short] + OtherReportables[Spread] + NonReportable[Short] = OpenInterest

The following parameters are available for the COTOpenInterestDisaggregated:

  • Categories: Commodity
  • OpenInterest_Comm: (=total OpenInterest for Commodities)
    • [Absolute]: outputs the OpenInterest as an absolute number
    • [Stochastic]: OpenInterest as an oscillator with values between 0-100
    • [None]: no output for the OpenInterest.
  • %ofOIProd Long/Short/Spread: (=Percent of OpenInterest for Producer Long/Short/Spread – Position) – select [True] if this value should be displayed. This here is the percentage that the positions of the producers have of the overall OpenInterest. A value of 0.5, for example, means that the producers have built up long positions in the size of 50% of the entire OpenInterest.
  • %ofOISwapDealer Long/Short/Spread: (=Percent of OpenInterest for SwapDealers Long/Short/Spread – Position) – select [True] if this value should be displayed.
  • %ofOIManagedMoney Long/Short/Spread: (=Percent of OpenInterest for ManagedMoney Long/Short/Spread – Position) – select [True] if this value should be displayed.
  • %ofOIComOther Long/Short/Spread: (=Percent of OpenInterest for Other Traders in Commodities Long/Short/Spread – Position) – select [True] if this value should be displayed.
  • %ofOIComNonreportables Long/Short/Spread: (=Percent of OpenInterest for NonReportables in Commodites Long/Short/Spread – Position) select [True] if this value should be displayed.
  • Categories: Financial
  • All parameters work analogously to the settings under “Categories: Commodity”; the only difference lies in the division into various groups of market participants
  • Data base:
  • CotType: COTReportLegacy - CotType
  • ReportType: COTReportLegacy - ReportType
  • StochasticPeriod: COTReportLegacy – ComparativePeriod

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

COTOpenInterestDisaggregated

Example

to be announced

COTOpenInterestLegacy

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

The open interest specifies the number of all currently held contracts; a high open interest, therefore, indicates that the market participants have great interest in this value; vice versa, low open interest shows that a value has only few held contracts and therefore little activity from the market participants. There are two options for calculating the OpenInterest:

1) Commercial[Long] + NonCommercial[Long] + NonCommercial[Spread] + NonReportable[Long] = OpenInterest 2) Commercial[Short] + NonCommercial[Short] + NonCommercial[Spread] + NonReportable[Short] = OpenInterest

Since for every long contract, there is also a market participant on the short side, both calculation methods yield exactly the same value. Additional info: with the CFTC, the open interest is not calculated; the CFTC can simply see the open interest by counting all contracts that are open in the market. With known open interest, the NonReportable positions are then calculated, since the following equation must be valid: TotalReportable + NonReportable = OpenInterest. TotalReportable and OpenInterest are known, allowing the NonReportables to be calculated.

The following parameters are available for the OpenInterestLegacy:

  • CotType: COTReportLegacy – CotType

  • ReportType: COTReportLegacy – ReportType

  • StochasticPeriod: COTReportLegacy– ComparativePeriod

  • IsNative: outputs the OpenInterest as an absolute number, just as it is read out from the CFTC reports

  • IsStochastic: the OpenInterest is outputted and calculated as an oscillator with values between 0-100. With the StochasticPeriod, you can set with which period the Stochastic should be calculated.

  • IsCommercialLong/IsCommercialShort: select [True] if you would like to have the data for the NonCommercials displayed. The outputted values are percentages; if, for example, you set IsCommercialLong=True, the percentage of long positions of the Commercials that make up the total OpenInterest is outputted. A value of 0.5, for example, means that the OpenInterest consists of 50% long positions of the Commercials, which can be considered a very large long position of the Commercials.

  • IsNonCommercialLong/IsNonCommercialShort: if you select [True], the percentage of NonCommercial long positions i.e. NonCommercial short positions that make up the total OpenInterest is outputted.

  • IsNonReportableLong/IsNonReportableShort: if you select [True], the percentage of NonReportable long positions i.e. NonReportable short positions that make up the total OpenInterest it outputted.

  • IsTotalReportableLong/IsTotalReportableShort: if you select [True], the percentage of TotalReportable long positions i.e. TotalReportable short positions that make up the total OpenInterest is outputted. (TotalReportable = Commercials+NonCommercials).

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

COTOpenInterestLegacy

Example

to be announced

COTReportDisaggregated

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

The COTReportDisaggregated accesses the detailed disaggregated reports of the CFTC, which have been published since 2009 and can be regarded as a further development of the legacy reports. The necessity for improvement has resulted in the drastically changing and constantly developing market environment since the introduction of the COT reports in 1986. The market participants are now divided more subtly and are organized into 5 categories. These 5 categories vary according to whether we are dealing with a commodity future or a financial future.

The market participants are now divided more subtly and are organized into 5 categories. These 5 categories vary according to whether we are dealing with a commodity future or a financial future.

The commodity futures are divided into the following groups:

  • Producer/Merchant/Processor/User
  • SwapDealers o ManagedMoney
  • Other Reportables
  • Nonreportables
  • You can find more information about the classification of the commodities HERE

For the financial futures, there are the following groups:

  • Dealer/Intermediary
  • AssetManager/Institutional
  • Leveraged Funds
  • Other Reportables
  • Nonreportabes
  • You can find more information about the classification of the financials HERE

The following parameters are available for the COTReportDisaggregated:

  • Categories Commodity/Categories Financial:
  • Select [True] for the groups that you would like to have displayed in the chart. If you have opened a commodity chart, only settings made under “Categories Commodity” will be taken into account, and vice versa if you have opened a financial chart.

  • Database:

  • CotType: COTReportLegacy – CotType
  • IndexType: COTReportLegacy – IndexType
  • ReportType: COTReportLegacy – ReportType
  • StochasticPeriod: COTReportLegacy– ComparativePeriod

  • Display:

  • LongPosition: select [True] to display the long positions of the desired market participants
  • ShortPosition: select [True] to display the short positions of the desired market participants
  • NetPosition: select [True] to display the net positions of the desired market participants

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

COTReportDisaggregated

Example

to be announced

COTReportLegacy

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

This indicator is the core element of the COT analysis, with which one can directly display the pure data that the indicator reads from the reports published weekly by the CFTC (www.cftc.gov/CommitmentsofTraders). The published reports can be viewed by every market participant. The legacy data is published in the so called short reports you can find on the CFTC-website. The following parameters are available in the COTReportLegacy:

  • Comparative Period: with this setting, you can enter a comparative period with which the stochastic display is calculated (=StochasticPeriod). The system only triggers this parameter when “IndexType = Stochastic” is set.

  • CotType: under [All/Other/Old], select which contracts should be used for the display; more details are available HERE

  • IndexType: choose between [Absolute/Stochastic] as to how the values should be outputted.

  • Absolute = the values are outputted in whole numbers, just as they are read out from the reports.
  • Stochastic = the values are outputted and calculated as an oscillator with values between 0-100. With the ComparativePeriod, you can set with which period the Stochastic should be calculated.

  • ReportType: under this parameter, you select whether the data from the reports should be read out only for futures, or for futures + options.

  • ReturnType:

  • Net: outputs the net position (=LongContracts – ShortContracts) of the selected market participants
  • Long/Short: outputs the long i.e. short contracts of the selected market participants
  • OI: outputs the total OpenInterest of this instrument; for a more precise and advanced display of the OpenInterest, please use the indicator OpenInterestLegacy

  • ShowCommercials: select [True] if you would like to have the data for the Commercials displayed. For detailed information on the definition of which market participants are classified as Commercials, please have a look HERE

  • ShowNonCommercials: select [True] if you would like to have the data for the NonCommercials displayed. For detailed information on the definition of which market participants are classified as NonCommercials please have a look at the link provided above.

  • ShowNonReportables: select [True] if you would like to have the data for the NonReportables displayed. For detailed information on the definition of which market participants are classified as NonCommercials please have a look at the link provided above.

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

COTReportLegacy

Example

to be announced

COTStockDummy

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

This indicator attempts to simulate the behavior of the commercials in stock markets using a special algorithm. The values are outputted as Stochastic, meaning that they oscillate between values of 0-100. The interpretation of this indicator is analogous to the interpretation of the commercial data in the standard COT indicators. The output of this indicator should be confirmed with other indicators; you must be aware that we are not talking about real COT data from market participants, but about calculations from the price data. As for the COT data, an analysis in the weekly chart is also recommended for the COTStockDummy.

The following parameters are available for the COTStockDummy:

  • ComparativePeriod: input period for the stochastic calculation
  • Stochastic: [True] outputs normalized values (values between 0-100)
  • Period: this is a period that is necessary for calculating the data. If you do not have detailed information about how this indicator works, please leave this period on the default setting.

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

COTStockDummy&large

Example

to be announced

COTLargeTraderActivity

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

The COTLargeTraderActivity indicator, like the COTStockDummy, is based not on real COT data, but instead on algorithmically calculated outputs. This indicator attempts to simulate the behavior of the large traders in markets for which no COT data is available. Here, the interpretation takes place analogously to the analysis of the NonCommercials in the standard COT indicators.As with the COTStockDummy, we point out that other indicators should be consulted, since we are not dealing with real COT data.

The following parameters are available for the COTLargeTraderActivity:

  • Period: this is a period that is necessary for calculating the data. If you do not have detailed information about how this indicator works, please leave this period on the default setting.

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

COTStockDummy&large

Example

to be announced

Darvas Boxes

Description

Former ballroom dancer Nicolas Darvas developed the Darvas boxes as a trading strategy in 1956. Darvas' trading technique consisted of buying into stocks that were trading at new 52-week highs, with accordingly high volumes. When a stock price rises above the previous 52-week high, but then proceeds to fall back to a price not far from that high, a Darvas box is formed. If the price falls too far, this can signify a false breakout. Otherwise, however, the lower price is used as the bottom of the box and the higher price as the top. A box is made up of an upper boundary (top) and a lower boundary (floor). Each new box is created based on a previous box, depicting a “stair” formation. If a new high is not formed after three consecutive days, then the high is labeled as the upper boundary. Following this, the floor is specified based on the lowest price.

Interpretation

This system is similar to a trend-following channel breakout system. As soon as one of these boxes breaks out, a new buy or sell signal is generated.

Explanation

The initial box top is the high of day 1. First, you should find a new high that must be higher than the high of day 1. It does not matter when the high is located - even if it is after 5 days. However, if the bottom is detected, the box has been completed. To detect the bottom, the low must be after the day 2 since the last day’s box top was detected, and should be lower than the low of the original day 1 low.

The bottom is usually detected last, and a new high may not be detected until the bottom is locked in. The Darvas box has then been completed.

If the price breaks out of the bottom or top, a new box will be started. The bottom stop loss box has been drawn as the last price percentage.

We should take the first day’s high value as the top border. The next day, we check if the high of the day is higher than the previous border top. In the case that it is higher -> top border = high. In the case that the top is going up for the last 3 steps, and the next is then lower, it will be a box top. Start looking for the bottom border. It is identical to the top (search for a trend low after which the daily low would be higher than the previous. In this case, the previous low would be the box bottom). Now we have a Darvas corridor. If one of the next bar’s high values is higher than the top box or lower than the bottom box -> box is closed (a new box will be started when the price breaks out of the top or bottom of the box).

Buy Signal

DarvasBuySignal

Sell Signal

DarvasSellSignal

Further information

Here you can read about a trading system based on the Darvas boxes. (German only) http://www.eusdoni.de/index.php?option=com_content&view=article&catid=13:eusdoni-version-3&id=42:darvas-boxen

Usage

Darvas()
Darvas(IDataSeries inSeries)

//For the upper Box boundary
Darvas().Upper[int barsAgo]
Darvas(IDataSeries inSeries).Upper[int barsAgo]

//Returns the lower value
Darvas().Lower[int barsAgo]
Darvas(IDataSeries inSeries).Lower[int barsAgo]

Return value

double

When using this method with an index (e.g. Darvas()[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameter

inSeries Input data series for the indicator

Visualization

Darvas Boxes

Example

//Output for the values for the upper markings (box top)
Print("The upper boundary for the Darvas box is: " + Darvas().Upper[0]);
//Lower markings
Print("The lower boundary for the Darvas box is: " + Darvas().Lower[0]);

Directional Movement (DM)

Description

The Directional Movement indicator is almost identical to the ADX, with the only difference that the +DM and -DM values are also calculated. These values are then later on used for the DMI.

Interpretation

The Directional Movement indicator is positive when the difference between the highs is at its largest.

Further information

See: Directional Movement Index (DMI)

Usage

DM(int period)
DM(IDataSeries inSeries, int period)
DM(int period)[int barsAgo]
DM(IDataSeries inSeries, int period)[int barsAgo]
//For the value of +DM
DM(int period).DiPlus[int barsAgo]
DM(IDataSeries inSeries, int period).DiPlus[int barsAgo]
//For the value of -DM
DM(int period).DiMinus[int barsAgo]
DM(IDataSeries inSeries, int period).DiMinus[int barsAgo]

Return value

double

When using this method with an index (e.g. DM(14).DiPlus[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Directional Movement (DM)

Example

//Output of the DM values
Print("The current +DM value is: " + DM(14).DiPlus[0]);
Print("The current –DM value is: " + DM(14).DiMinus[0]);

Donchian Channel

Description

The Donchian channel can also be called the “4-week-rule”; this is how it works: when the current price reaches a peak above the high of the past 4 weeks, a new long position is opened. If a short position is open simultaneously, it is closed. This works vice versa with shorts. The Donchian channel trading system is a purely trend-following system based on the concept “buy when it is strong, sell when it is weak”. The famous “Turtles” also employed this breakout system. This indicator displays the highs and lows of the last n days as lines above and below the price development. 20 days represent 4 weeks.

Further information

VTAD: http://vtadwiki.vtad.de/index.php/Donchian_Channel

Usage

DonchianChannel(int period)
DonchianChannel(IDataSeries inSeries, int period)

//Upper band
DonchianChannel(int period).Upper[int barsAgo]
DonchianChannel(IDataSeries inSeries, int period).Upper[int barsAgo]

//Middle band
DonchianChannel(int period)[int barsAgo]
DonchianChannel(IDataSeries inSeries, int period)[int barsAgo]

//Lower band
DonchianChannel(int period).Lower[int barsAgo]
DonchianChannel(IDataSeries inSeries, int period).Lower[int barsAgo]

Return value

double

When using this method with an index (e.g. DonchianChannel(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Donchian Channel

Example

//Output for the values of the Donchian Channel
Print("The upper band is at: " + DonchianChannel(14).Upper[0]);
Print("The middle band is at: " + DonchianChannel(14)[0]);
Print("The lower band is at: " + DonchianChannel(14).Lower[0]);

Directional Movement Index (DMI)

Description

Welles Wilder Jr. developed the Directional Movement concept in 1978. His concept includes the following components:

Directional Movement Index (DMI)

Average Directional Movement Index (ADX)

True Range (TR)

The Directional Movement Index comes before the Average Directional Movement Index. The DMI shows the strengths of the trend-favoring price movements in percentages. Its standard application is the smoothed ADX.

Interpretation

The DMI shows the strength of the trend, but not the trend direction. This means that it is particularly suited as a filter for trading systems employing the Parabolic SAR, for example, in order to filter out sideways phases. When the DMI rises (especially above 25), a trend is displayed; anything below that is recognized as a sideways phase. The +DI and the –DI point towards a trend. An uptrend is classified when the +DI is above the –DI. The further apart they drift, the stronger the trend.

Further information

VTAD: http://vtadwiki.vtad.de/index.php/DMI_-_Directional_Movement_Index

Usage

DMI(int period)
DMI(IDataSeries inSeries, int period)
DMI(int period)[int barsAgo]
DMI(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. DMI(20)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Directional Movement Index (DMI)

Example

//Output for the DMI
Print("The current DMI value is: " + DMI(20)[0]);

Double Stochastics (DSS)

Description

William Blau was the developer of the Double Smoothed Stochastic (DSS), which is a double-smoothed stochastic indicator. After a while, it was improved upon by Walter Bressert as a variation of the double-smoothed stochastic. Smaller changes in the price movements cause this indicator to react more sensitively, and it also produces more signals than the one Blau developed. The Bressert version therefore also illustrates extreme zones more clearly than the Blau version.

Regardless of the various calculation methods used, the DSS always stays within a scale of 0 to 100. The extreme zones in the developed stochastics are the same as for the original stochastics. The upper extreme area is marked at 80, and the lower extreme zone at 20 - these values cannot be changed. For many applications, it is wise to include an additional middle line at 50, and to adapt this to the circumstances as needed.

Interpretation

Values above 80 are seen as overbought, and below 20 as oversold. In addition, signals are produced by the signal line’s behavior and movements into and out of the extreme zones.

Usage

DoubleStochastics(int period)
DoubleStochastics(int period)[int barsAgo]
DoubleStochastics(int period, DoubleStochasticsMode mode, int EMA-Period1)
DoubleStochastics(IDataSeries inSeries, int period, DoubleStochasticsMode mode, int EMA-Period1)
DoubleStochastics(int period, DoubleStochasticsMode mode, int EMA-Period1)[int barsAgo]
DoubleStochastics(IDataSeries inSeries, int period, DoubleStochasticsMode mode, int EMA-Period1)[int barsAgo]
DoubleStochastics(int period, DoubleStochasticsMode mode, int EMA-Period1, int EMA-Period2)
DoubleStochastics(IDataSeries inSeries, int period, DoubleStochasticsMode mode, int EMA-Period1, int EMA-Period2)
DoubleStochastics(int period, DoubleStochasticsMode mode, int EMA-Period1, int EMA-Period2)[int barsAgo]
DoubleStochastics(IDataSeries inSeries, int period, DoubleStochasticsMode mode, int EMA-Period1, int EMA-Period2)[int barsAgo]

//For the value of %K
DoubleStochastics(int period).K[int barsAgo]
DoubleStochastics(IDataSeries inSeries, int period).K[int barsAgo]
DoubleStochastics(int period, DoubleStochasticsMode mode, int EMA-Period1).K[int barsAgo]
DoubleStochastics(IDataSeries inSeries, int period, DoubleStochasticsMode mode, int EMA-Period1).K[int barsAgo]
DoubleStochastics(int period, DoubleStochasticsMode mode, int EMA-Period1, int EMA-Period2).K[int barsAgo]
DoubleStochastics(IDataSeries inSeries, int period, DoubleStochasticsMode mode, int EMA-Period1, int EMA-Period2).K[int barsAgo]

Return value

double

When using this method with an index (e.g. DoubleStochastics(...)[int barsAgo] or DoubleStochastics(...).K[int barsAgo]), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations (default: 10)

mode Method of calculation, possible inSeries are Blau, Blau2, Bressert

EMA-Period1 Periods for the EMA

EMA-Period2 Periods for the second EMA

Visualization

Double Stochastics (DSS)

Example

//Output for %K
Print("The value of the DSS Bressert %K is: " + DoubleStochastics(10, DoubleStochasticsMode.Bressert, 2)[0]);

Dynamic Momentum Index (DMIndex)

Description

The Dynamic Momentum Index, which was developed by Tushar Chande, is a specific variant of the Relative Strength Index. Chande changed the Dynamic Momentum Index in such a way that, based on various factors, the period settings automatically adjust themselves, which he achieved by coupling it to the RSI in order for a volatility component to be present. The definition of this volatility component is based on a 5-day standard deviation of the closing prices. This, in turn, is then compared to the 10-day average of a 5-day standard deviation.

Interpretation

If the Dynamic Momentum Index is showing the overbought area, one speculates on falling prices; if the Dynamic Momentum Index is showing the oversold area, the speculation is on rising prices. Trading in this way makes sense if other indicators such as absCMO are showing a trendless phase, so the point is to trade against the trend. During a strong trend phase, it is recommended to trade in the trend direction; in the phase of an upward trend, one should wait for an oversold situation until a buy signal occurs.

Further and more concise information

VTAD: http://vtadwiki.vtad.de/index.php/Dynamic_Momentum_Index

Usage

DMIndex(int smooth)
DMIndex(IDataSeries inSeries, int smooth)
DMIndex(int smooth)[int barsAgo]
DMIndex(IDataSeries inSeries, int smooth)[int barsAgo]

Return value

double

When using this method with an index (e.g. DMIndex(3)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

smooth Smoothing settings

Visualization

Dynamic Momentum Index (DMIndex)

Example

//Output of the value for the DMIndex Indicator with a smoothing factor of 3
Print("The current value for the DMIndex is: " + DMIndex(3)[0]);

Ease of Movement (EOM)

Description

Ease of Movement (EMV) is a volume-based oscillator created by Richard Arms that constantly moves above and below the zero line. It is intended to measure the "ease" of price movement, as suggested by the name. Arms developed Equivolume charts in order to visually display price ranges and volume. Ease of Movement expands upon Equivolume by quantifying the price/volume relationship and displaying the results in the form of an oscillator. Generally, when the oscillator is in a positive area, prices are advancing with relative ease. On the other hand, when the oscillator is in negative territory, prices are falling with relative ease.

Interpretation

When the EOM is moving away from the zero line (marker) then an impulse has begun in that direction. During a breakout onto the opposite side of the zero line, it is recommended to enter with the trend direction.

Further information

http://www.volumen-analyse.de

Usage

EaseOfMovement(int smoothing, int volDivisor)
EaseOfMovement(IDataSeries inSeries, int smoothing, int volDivisor)
EaseOfMovement(int smoothing, int volDivisor)[int barsAgo]
EaseOfMovement(IDataSeries inSeries, int smoothing, int volDivisor)[int barsAgo]

Return value

double

When using this method with an index (e.g. EaseOfMovement(14, 10000)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

smoothing Smoothing settings

volDivisor For calculation of the box ratio (see “Calculation” below)

Visualization

Ease of Movement (EOM)

Calculation

Midpoint = (High + Low) / 2 MidpointMove = Midpoint [today] – Midpoint [yesterday] BoxRatio = Volume / (High – Low) Ease = MidpointMove / Box Ratio

Example

//Output for the values of the EOM line
Print("The value for the Ease of Movement is: " + EaseOfMovement(14, 10000)[0]);

Fisher Transform

Description

The physicist John Ehlers created the Fisher Transform in 2002. The intention of the indicator is to show where there are turning points, which can be achieved with the help of the Inverse Fisher Transform. This changes indicators in such a way that the movements are less random, and the signal quality is clearer. The Fisher Transform either stretches or compresses the input values of the function so that the output is very likely to be between -1 and 1. This gives us a clearly identifiable pattern where even indicators such as the RSI become better defined and more precise.

Interpretation

A system using the Fisher Transform can be found here: https://www.prorealtime.com/de/pdf/probacktest.pdf

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Return value

double

When using this method with an index (e.g. FisherTransform(10)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Usage

FisherTransform(int period)
FisherTransform(IDataSeries inSeries, int period)
FisherTransform(int period)[int barsAgo]
FisherTransform(IDataSeries inSeries, int period)[int barsAgo]

Visualization

Fisher Transform

Example

//Output values for the Fisher Transform
Print("The current value for the Fisher Transform is: " + FisherTransform(10)[0]);

Forecast Oscillator (FOSC)

Description

The FOSC makes a comparison of the current price against the value returned by the Time Series Forecast study. It is calculated as a percentage ratio of the difference between the close price and the Time Series Forecast value for the previous bar.

When this oscillator displays positive values, it hints that the Time Series Forecast has underestimated the price, whereas negative values suggest that the TSF has overestimated the price. Usually, an SMA also accompanies the Forecast Oscillator line in the search for oscillator reversals.

Further information

FMLabs: http://www.fmlabs.com/reference/default.htm?url=ForecastOscillator.htm

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Return value

double

When using this method with an index (e.g. FOSC(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Usage

FOSC(int period)
FOSC(IDataSeries inSeries, int period)
FOSC(int period)[int barsAgo]
FOSC(IDataSeries inSeries, int period)[int barsAgo]

Visualization

Forecast Oscillator (FOSC)

Examples

//Output for the Forecast Oscillator
Print("The current value for the Forecast Oscillator is: " + FOSC(14)[0]);

//Determining the future market direction
if (FOSC(14)[0] > 0)
Print("The FOSC is bigger than zero, which indicates rising price movements.");

HighestHighIndex()

Description

The Highest High Index prints the index for the bars with the highest high within a specified number of periods. It is slightly different from the GetSerieHighestValue() function in that it can be visualized within the chart.

See HighestHighPrice(), LowestLowPrice(), LowestLowIndex, GetSerieHighestValue(), GetSerieLowestValue().

Usage

HighestHighIndex(int BarsBack)
HighestHighIndex(int BarsBack)[int barsAgo]

Return value

double

When using this method with an index (e.g. HighestHighIndex(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameter

BarsBack Number of periods in which the highest high will be searched for

Visualization

HighestHighIndex()

Example

// How many bars back is the bar with the highest high of the last 14 bars located?
Print("The highest high in the last 14 bars was " + HighestHighIndex(14)[0] + " bars ago.");

HighestHighPrice()

Description

Highest High Price shows the highest high achieved within a predefined number of periods.

Unlike the GetSerieHighestValue(), this indicator can be displayed within the chart.

See HighestHighIndex(), LowestLowPrice(), LowestLowIndex, GetSerieHighestValue(), GetSerieLowestValue().

Usage

HighestHighPrice(int BarsBack)
HighestHighPrice(int BarsBack)[int barsAgo]

Return value

double

When using this method with an index (e.g. HighestHighPrice(14)[int barsAgo] ), the value of the indicator will be outputted for the referenced bar.

Parameter

BarsBack Number of periods in which the highest high will be searched for

Visualization

HighestHighPrice()

Example

// What was the value of the highest high in the last 14 periods?
Print("The highest high for the last 14 bars is " + HighestHighPrice(14)[0]);

IchimokuCloud

Description

The Ichimoku Cloud, also called Ichimoku Kinko Hyo, is a very adaptable indicator that defines support and resistance, gauges momentum, identifies trend direction and provides trading signals. Ichimoku Kinko Hyo literally means "one look equilibrium chart". With just one look, traders can identify the trend and search for possible signals in that trend. The indicator was developed by the journalist Goichi Hosoda, and published in his 1969 book. Although the Ichimoku Cloud may appear complicated when looked at on the price chart, it is in fact a simple indicator that can be implemented very well – a tribute to the fact that its inventor was a journalist! What is more, the concepts are easily understandable and the signals well-defined.

1. Tenkan Sen – conversion line This is the median value of the 9-period high and the 9-period low. 2. Kinjun Sen – the baseline This is the midpoint of the 26-period high and low. 3. Chikou Span – lagging span This is the closing price plotted 26 days in the past. 4. Senkou Span A – the first leading line This is the midpoint between the conversion line and the baseline. The leading Span A forms one of the two cloud boundaries. It is referred to as leading because it is plotted 26 periods in the future and thus builds the faster cloud boundary. 5. Senkou Span B – the second leading line This is the midpoint of the 52-day high-low range projected 26 periods into the future, forming the slower cloud boundary. Kumo – cloud The cloud (Kumo) is the area between Senkou Span A and Senkou Span B. This area is highlighted in color, forming a cloud shape.

Caution: Because the cloud is drawn “into the future”, it is necessary to shift the time axis to the left in order to view it.

Interpretation

Similarly to the smoothing averages, the Ichimoku indicator will create a bullish signal when the Tenkan Sen crosses over the Kinjun Sen from below.

Further information

http://de.wikipedia.org/wiki/Ichimoku

http://www.forexabode.com/technical-analysis/ichimoku-cloud

http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:ichimoku_cloud

http://www.forexonlinegeheimnisse.com/ichimoku-kinko-hyo-teil-i#top (Part 1, German)

http://www.forexonlinegeheimnisse.com/ichimoku-kinko-hyo-teil-ii-das-perfekte-kauf-oder-verkaufssignal#top (Part 2, German)

Usage

IchimokuCloud(int periodFast, int periodMedium, int periodSlow)
IchimokuCloud(IDataSeries inSeries, int periodFast, int periodMedium, int periodSlow)

//TenkanSen
IchimokuCloud(int periodFast, int periodMedium, int periodSlow).TenkanSen[int barsAgo]
IchimokuCloud(IDataSeries inSeries, int periodFast, int periodMedium, int periodSlow).TenkanSen[int barsAgo]

//KijunSen
IchimokuCloud(int periodFast, int periodMedium, int periodSlow).KijunSen[int barsAgo]
IchimokuCloud(IDataSeries inSeries, int periodFast, int periodMedium, int periodSlow).KijunSen[int barsAgo]

//ChikouSpan
IchimokuCloud(int periodFast, int periodMedium, int periodSlow).ChikouSpan[int barsAgo]
IchimokuCloud(IDataSeries inSeries, int periodFast, int periodMedium, int periodSlow).ChikouSpan[int barsAgo]

//SenkouSpanA
IchimokuCloud(int periodFast, int periodMedium, int periodSlow).SenkouSpanA[int barsAgo]
IchimokuCloud(IDataSeries inSeries, int periodFast, int periodMedium, int periodSlow).SenkouSpanA[int barsAgo]

//SenkouSpanB
IchimokuCloud(int periodFast, int periodMedium, int periodSlow).SenkouSpanB[int barsAgo]
IchimokuCloud(IDataSeries inSeries, int periodFast, int periodMedium, int periodSlow).SenkouSpanB[int barsAgo]

Return value

double

When using this method with an index (e.g. IchimokuCloud(9,26,52)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

periodFast Period setting for the Tenkan line. Default: 9

periodMedium Period setting for the Kijun line. Default: 29

periodSlow Number of periods used for the calculation of the Chikou line. Default: 52

Visualization

IchimokuCloud

InsideBarsMT

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

InsideBarsMT displays inside bars as defined by Michael Voigt in his book. The settings can be modified, and additional adjustments are also possible. Furthermore, there are several data series used in stop calculations for self-developed indicators and strategies.

Interpretation

Inside bars are bars whose body (open-close) are located within the high-low span of the previous bar. The previous bar is generally called an outside bar. Inside bars will sometimes reflect sideways phases, and will also display trend corrections of lower timeframes. When trading inside bars, the stop is placed at the high or low of the previous period. If the high or low of the previous candle is unsuitable, then the high or low of an older candle is used.

Usage

InsideBarsMT().isInsideBar[int barsAgo]
InsideBarsMT().isOutsideBar[int barsAgo]
InsideBarsMT().HighBeforeOutsideBar[int barsAgo]
InsideBarsMT().LowBeforeOutsideBar[int barsAgo]

Settings

  • InsideBarsMT().isInsideBar[int barsAgo]

Will return “true” if the referenced bar is an inside bar, otherwise “false”

  • InsideBarsMT().isOutsideBar[int barsAgo]

Will return “true” if the previous bar is an outside bar

  • InsideBarsMT().HighBeforeOutsideBar[int barsAgo]

Will output the high of the bar preceding the outside bar

  • InsideBarsMT().LowBeforeOutsideBar[int barsAgo]

Will return the low of the bar preceding the outside bar

Visualization

InsideBarsMT

Tolerance parameter

In the image below you will see a longer “phase” where the market is within an inside bar. The bar marked with the arrow opens the low of the outside bar. If the open of the green candle had been a tick lower, then the marked bar would not be an inside bar and the red bar would clearly not be an outside bar. The tolerance parameter defines the number of ticks by which the inside bars may “breach” the high-low span of the outside bar and still be recognized as an inside bar.

Tolerance default setting = 0.

InsideBarsMT

Example

double StopPrice;
protected override void OnCalculate()
{
// Open position when SMAs cross
if (CrossAbove(SMA(10),SMA(20),1) && Position.PositionType == PositionType.Flat)
OpenLong();
// If the current bar is an inside bar, modify the stop
if (InsideBarsMT().isInsideBar[0])
StopPrice = InsideBarsMT().LowBeforeOutsideBar[0];
else
// Use different stop method
}

Keltner Channel

Description

Keltner Channels are volatility-based envelopes placed above and below an EMA. This indicator shares similarities with Bollinger Bands, where the bands are set using the standard deviation. Here, instead of using the standard deviation, Keltner Channels use the Average True Range (ATR) to set the channel distance. Typically, the channels are set two Average True Range values above and two ATRs below the 20-day EMA. The EMA determines the direction and the Average True Range dictates the channel width. Keltner Channels form a trend-following indicator that is applied with the aim of identifying reversals with channel breakouts and channel direction. The channels can also be used to spot overbought and oversold levels when the trend is flat. In his 1960 book, How to Make Money in Commodities, Chester Keltner featured the "Ten-Day Moving Average Trading Rule," credited as the original version of Keltner Channels. This version started off with a 10-day SMA of the typical price {(H+L+C)/3)} as the center line. The 10-day SMA of the high-low range was added and subtracted to set the upper and lower channel lines respectively. Linda Bradford Raschke then brought in the more recent version of Keltner Channels in the 1980s. Similarly to Bollinger Bands, this new version made use of a volatility-based indicator, Average True Range (ATR), to set channel width. Middle line = 20-day exponential moving average Upper channel line: 20-day EMA + (2x ATR(10)) Lower channel line: 20-day EMA – (2xATR(10))

Interpretation

Indicators based on channels, bands and envelopes are designed to encompass most price action. Therefore, moves above or below the channel lines warrant attention because they are relatively rare. Trends often start with strong moves in one direction or another. A surge above the upper channel line shows extraordinary strength, while a plunge below the lower channel line shows extraordinary weakness. Such strong moves can signal the end of one trend and the beginning of another.

With an exponential moving average, average as their foundation, the Keltner Channels are a trend-following indicator. As with moving averages and trend-following indicators, Keltner Channels lag price action. The direction of the moving average dictates the direction of the channel. In general, a downtrend is present when the channel moves lower, while an uptrend exists when the channel moves higher. The trend is flat when the channel moves sideways.

A channel upturn and break above the upper trend line can signal the start of an uptrend. A channel downturn and break below the lower trend line can signal the start a downtrend. Sometimes a strong trend does not take hold after a channel breakout and prices oscillate between the channel lines. Such trading ranges are marked by a relatively flat moving average. The channel boundaries can then be used to identify overbought and oversold levels for trading purposes.

Further information

VTAD: http://vtadwiki.vtad.de/index.php/Keltner_Channel

Usage

KeltnerChannel(double offsetMutiplier, int period)
KeltnerChannel(IDataSeries inSeries, double offsetMutiplier, int period)

//Returns midline value
KeltnerChannel(double offsetMutiplier, int period)[int barsAgo]
KeltnerChannel(IDataSeries inSeries, double offsetMutiplier, int period)[int barsAgo]

//Returns upper band value
KeltnerChannel(double offsetMutiplier, int period).Upper[int barsAgo]
KeltnerChannel(IDataSeries inSeries, double offsetMutiplier, int period).Upper[int barsAgo]

//Returns lower band value
KeltnerChannel(double offsetMutiplier, int period).Lower[int barsAgo]
KeltnerChannel(IDataSeries inSeries, double offsetMutiplier, int period).Lower[int barsAgo]

Return value

double

When using this method with an index (e.g. KeltnerChannel(1.5, 15)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

offsetMultiplier Multiplier for the SMA

period Number of bars included in the calculations

Visualization

Keltner Channel

Calculation

diff.Set(High[0] - Low[0]);

double middle = SMA(Typical, Period)[0];

double offset = SMA(diff, Period)[0] * offsetMultiplier;

double upper = middle + offset;

double lower = middle - offset;

Example

//Current value for the Keltner Channel based on 15 periods
Print("Current value of the upper Keltner Channel band: " + KeltnerChannel(1.5, 15).Upper[0]);
Print("Current value of the middle Keltner Channel band: " + KeltnerChannel(1.5, 15)[0]);
Print("Current value of the lower Keltner Channel band: " + KeltnerChannel(1.5, 15).Lower[0]);

KeyReversalUp

Description

The KeyReversalUp indicator searches within a predefined number of periods to find turning points with the following characteristics: 1 The current close is higher than the previous close 2 The current low is smaller than or equal to the last low of the last n bars

See KeyReversalDown, KeyReversalUpAtSMA, KeyReversalDownAtSMA, KeyReversalUpAtEMA, KeyReversalDownAtEMA.

Parameters

inSeries Input data series for the indicator period Number of bars included in the calculations

Return value

double

0 – No reversal information available 1 – Reversal information available

Usage

KeyReversalUp(int period)
KeyReversalUp(IDataSeries inSeries, int period)
KeyReversalUp(int period)[int barsAgo]
KeyReversalUp(IDataSeries inSeries, int period)[int barsAgo]

Example

// Search for an entry opportunity (longs)
if (KeyReversalUp(10)[0] == 1)
Print("A long reversal formation has occurred.");

KeyReversalDown

Description

KeyReversalDown searches within a predefined number of periods to find turning points with the following characteristics:

1 The current close is lower than the previous close 2 The current high is higher than or equal to the highest high of the last n bars

See KeyReversalUp, KeyReversalUpAtSMA, KeyReversalDownAtSMA, KeyReversalUpAtEMA, KeyReversalDownAtEMA.

Parameters

inSeries Input data series for the indicator period Number of bars included in the calculations

Return value

double

0 – No reversal information available 1 – Reversal information available

Usage

KeyReversalDown(int period)
KeyReversalDown(IDataSeries inSeries, int period)
KeyReversalDown(int period)[int barsAgo]
KeyReversalDown(IDataSeries inSeries, int period)[int barsAgo]

Example

// Look for a short entry
if (KeyReversalDown(10)[0] == 1)
Print("A short reversal formation has occurred.");

KeyReversalUpAtSMA

Description

KeyReversalUpAtSMA searches within a predefined number of periods to find turning points with the following characteristics:

1 The current close is higher than the previous close 2 The current low is smaller than or equal to the lowest low within n bars 3 The current low has touched or breached an SMA

See KeyReversalUp, KeyReversalDown, KeyReversalDownAtSMA, KeyReversalUpAtEMA, KeyReversalDownAtEMA.

Parameters

inSeries Input data series for the indicator period Number of bars included in the calculations SMAperiod Number of periods included in the calculation of the SMA

Return value

double

0 – No reversal information 1 – Reversal information found

Usage

KeyReversalUpAtSMA(int period, int SMAperiod)
KeyReversalUpAtSMA(IDataSeries inSeries, int period, int SMAperiod)
KeyReversalUpAtSMA(int period, int SMAperiod)[int barsAgo]
KeyReversalUpAtSMA(IDataSeries inSeries, int period, int SMAperiod)[int barsAgo]

Example

// Look for a long entry
if (KeyReversalUpAtSMA(10)[0] == 1)
Print("A long reversal formation has occurred.");

KeyReversalDownAtSMA

Description

KeyReversalDownAtSMA searches within a predefined number of periods to find a turning point with the following characteristics:

1 The current close is lower than the previous close 2 The current high is higher than or equal to the highest high within the last n periods 3 The current high has touched or breached an SMA

See KeyReversalUp, KeyReversalDown, KeyReversalUpAtSMA, KeyReversalUpAtEMA, KeyReversalDownAtEMA.

Parameters

inSeries Input data series for the indicator period Number of bars included in the calculations SMAperiod Number of periods included in the SMA calculation

Return value

double

0 – No reversal formation found 1 – Reversal formation present

Usage

KeyReversalDownAtSMA(int period, int SMAperiod)
KeyReversalDownAtSMA(IDataSeries inSeries, int period, int SMAperiod)
KeyReversalDownAtSMA(int period, int SMAperiod)[int barsAgo]
KeyReversalDownAtSMA(IDataSeries inSeries, int period, int SMAperiod)[int barsAgo]

Example

// Search for a short entry
if (KeyReversalDownAtSMA(10)[0] == 1)
Print("A short reversal formation has occurred.");

KeyReversalUpAtEMA

Description

KeyReversalUpAtEMA searches within a predefined number of periods to find a reversal formation with the following characteristics:

1 The current close is higher than the previous close 2 The current low is smaller than or equal to the lowest low within the last n bars 3 The current low has touched or breached an EMA

See KeyReversalUp, KeyReversalDown, KeyReversalUpAtSMA, KeyReversalDownAtSMA, KeyReversalDownAtEMA.

Parameters

inSeries Input data series for the indicator period Number of bars included in the calculations EMAperiod Number of periods included in the EMA calculation

Return value

double

0 – No reversal information found 1 – Reversal information found

Usage

KeyReversalUpAtEMA(int period, int EMAperiod)
KeyReversalUpAtEMA(IDataSeries inSeries, int period, int EMAperiod)
KeyReversalUpAtEMA(int period, int EMAperiod)[int barsAgo]
KeyReversalUpAtEMA(IDataSeries inSeries, int period, int EMAperiod)[int barsAgo]

Example

// Search for a long entry
if (KeyReversalUpAtEMA(10)[0] == 1)
Print("A long reversal formation has occurred.");

KeyReversalDownAtEMA

Description

KeyReversalDownAtEMA searches within a predefined number of periods to find a reversal formation with the following characteristics:

1 The current close is lower than the previous close 2 The current high is larger than or equal to the highest high of the last n bars 3 The current high has touched or breached an EMA

See KeyReversalUp, KeyReversalDown, KeyReversalUpAtSMA, KeyReversalDownAtSMA, KeyReversalUpAtEMA.

Parameters

inSeries Input data series for the indicator period Number of bars included in the calculations EMAperiod Number of periods used to calculate the EMA

Return value

double

0 – No reversal formation found

1 – Reversal formation found

Usage

KeyReversalDownAtEMA(int period, int EMAperiod)
KeyReversalDownAtEMA(IDataSeries inSeries, int period, int EMAperiod)
KeyReversalDownAtEMA(int period, int EMAperiod)[int barsAgo]
KeyReversalDownAtEMA(IDataSeries inSeries, int period, int EMAperiod)[int barsAgo]

Example

// Search for a short entry
if (KeyReversalDownAtEMA(10)[0] == 1)
Print("A short reversal formation has occurred.");

KlingerVolumeOscillator

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

The KlingerVolumeOscillator is a technical indicator that was developed by Stephen Klinger in order to determine long-term trends of the money flow. At the same time, the indicator is sensitive enough to also identify short-term fluctuations, thereby giving the trader the possibility to detect even short-term reversals in the market. The indicator compares the influent and effluent volume of an instrument with its price movements, and is outputted as an oscillator. A signal line (13-period moving average) is used for generating signals. Divergences in the KlingerVolumeOscillator in comparison to the price movement can also be used for entry and exit decisions. A bullish signal is formed when the KlingerVolumeOscillator start to rise while the price continues to fall; the opposite goes for a bearish signal.

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

KlingerVolumeOscillator

Example

to be announced

Linear Regression

Description

Linear Regression is used to determine trends. Here, the prices are set as dependent variables, and time is set as an independent variable. Using the method for determination of the smallest square, a straight line is placed through the price movements in such a way that the distance between the prices and the line deviates as little as possible. Using this method also establishes a trend between two points in time. The regression line can be found in the middle of the price channel, and the indicator provides the end values of multiple linear regression trend lines. Each point along this indicator is therefore an end value of a linear regression trend line. What results is quite similar to a smoothing average, with the difference that the regression line exhibits less lag.

See R-Squared, LinRegSlope, LinRegIntercept.

Further information

http://www.vtad.de/sites/files/forschung/vtad_Award_2011_Joachim_Lenz_Veroeffentlichung.pdf

Interpretation

The linear regression indicator is used as a prognosis tool for the future developments of the instrument. If the prices are rising or falling steadily, then it can be expected that they will return to a more realistic/reasonable level. In other words: the indicator shows where the price should be, a deviation from the regression is assumed to be short-lived and to be corrected soon.

Usage

LinReg(int period)
LinReg(IDataSeries inSeries, int period)
LinReg(int period)[int barsAgo]
LinReg(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. LinReg(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Linear Regression

Example

//Show the current values of the regression line
Print("The current value for the linear regression is: " + LinReg(14)[0]);

LinRegIntercept

Description

The Linear Regression Intercept outputs the value of the regression constant, i.e. the mathematical intersection of where the regression line meets the price axis.

A straight line can be accurately determined with the help of the slope and intercept values.

See Linear Regression, R-Squared LinRegSlope.

Interpretation

The indicator is not used by itself, but is simply a component of trading systems that analyze trade trends with the help of the linear regression.

Usage

LinRegIntercept(int period)
LinRegIntercept(IDataSeries inSeries, int period)
LinRegIntercept(int period)[int barsAgo]
LinRegIntercept(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. LinRegIntercept(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

LinRegIntercept

Example

//Show current value
Print("The current value of the regression constant is: " + LinRegIntercept(14)[0]);

LinRegSlope

Description

The Linear Regression Slope outputs the slope of the linear regression line, and is a measurement of the regression line’s “elevation”.

See Linear Regression, R-Squared, LinRegIntercept.

Interpretation

Simply put: in an uptrend, the elevation is positive and facing upwards. The opposite applies to downtrends. This indicator is not very useful for determining overbought or oversold areas, but can be used to measure the strength of a trend. It should be used in combination with other indicators to identify potential entries.

Usage

LinRegSlope(int period)
LinRegSlope(IDataSeries inSeries, int period)
LinRegSlope(int period)[int barsAgo]
LinRegSlope(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. LinRegSlope(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

LinRegSlope

Example

//Current value for the slope:
Print("The current value for the inclination of the linear regression line is: " + LinRegSlope(14)[0]);

LowestLowIndex()

Description

LowestLowIndex delivers the index of the bar with the lowest low within a predefined number of periods.

Differently to GetSerieLowestValue(), one can display this indicator within a chart.

See HighestHighPrice(), HighestHighIndex(), LowestLowPrice(), GetSerieHighestValue(), GetSerieLowestValue().

Usage

LowestLowIndex(int BarsBack)
LowestLowIndex(int BarsBack)[int barsAgo]

Return value

double

When using this method with an index (e.g. LowestLowIndex(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameter

BarsBack Number of periods within which the highest high shall be searched for

Visualization

LowestLowIndex()

Example

// How many bars back is the lowest low of the last 14 bars located?
Print("The lowest low of the last 14 bars was " + LowestLowIndex(14)[0] + " bars ago.");

LowestLowPrice()

Description

LowestLowPrice delivers the value of the lowest low within a predefined number of periods.

Unlike the GetSerieLowestValue(), this indicator can be viewed within the chart.

See HighestHighPrice(), HighestHighIndex(), LowestLowIndex, GetSerieHighestValue(), GetSerieLowestValue().

Usage

LowestLowPrice(int BarsBack)
LowestLowPrice(int BarsBack)[int barsAgo]

Return value

double

When using this method with an index (e.g. LowestLowPrice(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameter

BarsBack Number of periods within which the low will be searched for

Visualization

LowestLowPrice()

Example

// What value did the lowest low of the last 14 periods have?
Print("The lowest low of the last 14 bars is " + LowestLowPrice(14)[0]);

MACD

Description

The Moving Average Convergence-Divergence (MACD) indicator, developed by Gerald Appel in the late 70s, is one of the simplest, most effective momentum indicators out there. The MACD makes two trend-following indicators, moving averages, average, become a momentum oscillator by subtracting the longer moving average from the shorter moving average. As a result of this, the MACD offers great advantages: trend following and momentum. The MACD moves above and below the zero line as the moving averages converge, cross and diverge again. Signal line crossovers, centerline crossovers and divergences are things that traders can keep an eye out for to generate signals. Since the MACD is unbounded, it is not especially useful for identifying overbought or oversold levels. The MACD line is the 12-day Exponential Moving Average (EMA) minus the 26-day EMA, and closing prices are used for these moving averages. A 9-day EMA of the MACD line is plotted with the indicator acting as a signal line and identifying turns. The MACD histogram shows the difference between the MACD and its 9-day EMA, i.e. the signal line. When the MACD line is above its signal line, the histogram is positive, and vice versa when the MACD line is below its signal line.

The typical settings used with the MACD are the values 12, 26 and 9. However, other values can also be used depending on the trading style and goals in mind.

Interpretation

As its name implies, the MACD is all about the convergence and divergence of the two moving averages. Convergence occurs when the moving averages move towards each other. Divergence occurs when the moving averages move away from each other. The shorter moving average (12-day) is faster and responsible for most MACD movements. The longer moving average (26-day) is slower and less reactive to price changes in the underlying security.

The MACD line oscillates above and below the zero line, which is also known as the centerline. These crossovers signal that the 12-day EMA has crossed the 26-day EMA. The direction, of course, depends on the direction of the moving average cross. Positive MACD indicates that the 12-day EMA is above the 26-day EMA. Positive values increase as the shorter EMA diverges further from the longer EMA. This means upside momentum is increasing. Negative MACD values indicate that the 12-day EMA is below the 26-day EMA. Negative values increase as the shorter EMA diverges further below the longer EMA. This means downside momentum is increasing. Signal line crossovers are the most common MACD signals. The signal line is a 9-day EMA of the MACD line. As a moving average of the indicator, it trails the MACD and makes it easier to spot MACD turns. A bullish crossover occurs when the MACD turns up and crosses above the signal line. A bearish crossover occurs when the MACD turns down and crosses below the signal line. Crossovers can last a few days or a few weeks, it all depends on the strength of the move.

Due diligence is required before relying on these common signals. Signal line crossovers at positive or negative extremes should be viewed with caution. Even though the MACD does not have upper and lower limits, chartists can estimate historical extremes with a simple visual assessment. It takes a strong move in the underlying security to push momentum to an extreme. Even though the move may continue, momentum is likely to slow and this will usually produce a signal line crossover at the extremities. Volatility in the underlying security can also increase the number of crossovers.

Further information

VTAD: http://vtadwiki.vtad.de/index.php/MACD

Usage

MACD(int fast, int slow, int smooth)
MACD(IDataSeries inSeries, int fast, int slow, int smooth)

//For the value of the MACD line
MACD(int fast, int slow, int smooth)[int barsAgo]
MACD(IDataSeries inSeries, int fast, int slow, int smooth)[int barsAgo]

//For the value of the signal line
MACD(int fast, int slow, int smooth).Avg[int barsAgo]
MACD(IDataSeries inSeries, int fast, int slow, int smooth).Avg[int barsAgo]

//For the difference between the MACD and the signal line
MACD(int fast, int slow, int smooth).Diff[int barsAgo]
MACD(IDataSeries inSeries, int fast, int slow, int smooth).Diff[int barsAgo]

Return value

double

When using this method with an index (e.g. MACD(12,26,9)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

fast Number of periods for the fast EMA calculation

slow Number of periods for the slow EMA calculation

smooth Number of periods for the EMA calculation of the signal line

Visualization

MACD

Example

//Show the current values for the MACD
Print("The current value for the MACD line is: " + MACD(12,26,9)[0]);
Print("The current value for the signal line is: " + MACD(12,26,9).Avg[0]);
Print("The difference between the MACD and the signal line is: " + MACD(12,26,9).Diff[0]);

MAEnvelopes

Description

These Moving Average Envelopes are percentage-based envelopes placed above and below a moving average. The moving average forms the base for this indicator, and can be a either simple or exponential moving average. Each MA envelope is set the same percentage above or below the moving average, thereby creating parallel bands that follow price action. Moving Average Envelopes can be used as a trend-following indicator with a moving average as the base. But this indicator is not limited to just trend following: the envelopes can also be used for spotting overbought and oversold levels when the trend is relatively flat.

Indicators based on channels, bands and envelopes are intended to encompass most price action, which is why moves above or below the envelopes deserve attention. Trends often start with sharp moves in one direction – a surge above the upper envelope shows extraordinary strength, while a dive below the lower envelope exhibits extraordinary weakness. Strong moves such as these can signal the end of one trend and the start of another.

With a moving average as the foundation, Moving Average Envelopes are a trend-following indicator. As with moving averages, the envelopes lag price action. The direction of the moving average dictates the direction of the channel, so generally, when the channel moves lower, a downtrend exists, and when the channel goes higher, an uptrend is present. When the channel moves sideways, this signifies that the trend is flat.

Occasionally, it happens that a strong trend does not establish itself after an envelope break, and prices move into a trading range. Trading ranges such as these are characterized by a relatively flat moving average. These envelopes can then be used to spot overbought and oversold levels. A move above the upper envelope shows an overbought situation; a move below the lower envelope signals an oversold situation.

Usage

MAEnvelopes(double envelopePercentage, MAEnvelopesMAType maType, int period)
MAEnvelopes(IDataSeries inSeries, double envelopePercentage, MAEnvelopesMAType maType, int period)

//For the upper band
MAEnvelopes(double envelopePercentage, MAEnvelopesMAType maType, int period).Upper[int barsAgo]
MAEnvelopes(IDataSeries inSeries, double envelopePercentage, MAEnvelopesMAType maType, int period).Upper[int barsAgo]

//For the middle band
MAEnvelopes(double envelopePercentage, MAEnvelopesMAType maType, int period).Middle[int barsAgo]
MAEnvelopes(IDataSeries inSeries, double envelopePercentage, MAEnvelopesMAType maType, int period).Middle[int barsAgo]

//For the lower band
MAEnvelopes(double envelopePercentage, MAEnvelopesMAType maType, int period).Lower[int barsAgo]
MAEnvelopes(IDataSeries inSeries, double envelopePercentage, MAEnvelopesMAType maType, int period).Lower[int barsAgo]

Return value

double

When using this method with an index (e.g. MAEnvelopes(14,SMA,1.5)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

v Input data series for the indicator

period Number of bars included in the calculations

envelopePercentage Distance of the upper and lower bands from the middle line in percent

maType Type of moving average used, possible choices are: - EMA - HMA - SMA (default) - TMA - TEMA - WMA

Visualization

MAEnvelopes

Usage

//Value output for the upper band
Print("Upper band of the MA Envelope: " + MAEnvelopes(1.5, MAEnvelopesMAType.SMA, 14).Upper[0]);

//Value output for the middle band
Print("Middle band of the MA Envelope: " + MAEnvelopes(1.5, MAEnvelopesMAType.SMA, 14).Middle[0]);

//Value output for the lower band
Print("Lower band of the MA Envelope: " + MAEnvelopes(1.5, MAEnvelopesMAType.SMA, 14).Lower[0]);

MarketPhases

The installation of the Dow Theory Standard or Professional Package is required in order to access this indicator.

Description

The Market Phases Indicator is another important component of the Technical Analysis Package, and is based on integrated trend detection for the various relevant trading market phases.

The market phases are defined according to the book series “Der Händler” (“The Trader”) by Michael Voigt.

Important tip MarketPhases indicators are very history sensitive and need at least up to 2000 intraday candles to see good results.

Phase 3:

The market is located far away from the movement; a correction is imminent.

MarketPhases Phase 3

Phase 4:

The market is in correction mode. The original trend direction has not yet resumed. During the uptrend, further lows may occur, and in a downtrend, further highs may occur.

MarketPhases Phase 4

Phase 5:

The market is coming out of the correction and will resume its trend direction.

MarketPhases Phase 5

Phase 5+

The market is in Phase 5. In addition, the sub-trend is confirming a 1-2-3 pattern.

MarketPhases Phase 6

Phase 5+ (Prom Queen)

The term Prom Queen is also taken from the book series “Der Händler”. A 5+ trend phase is classified by an uptrend correction move running up to point 2. The correction zone is marked in grey in the following image.

MarketPhases Phase 5+ (Prom Queen)

Market phases 1, 2, 6, and 9 are not relevant for successful trading.

Depiction in the chart

No parameters are required.

MarketPhases in chart window

Usage in AgenaScript

The indicator provides the following values for the market phases:

Phase 3: 3

Phase 4: 4

Phase 5: 5

Phase 5+ 5.1

Prom Queen 5.2

In a downtrend, the values are prefixed with a “-“ sign. If the market phase is not defined, then the value 0 is returned.

MarketPhases(int trendSize)[barsAgo]

Parameter

trendsize: trend size from 0 .. 3

Caution:

For a comparison of double values such as: if (MarketPhases(1)[0] == 5.1) ...we recommend that you use the following instead:

bool goLong = Math.Abs(MarketPhases(1)[0] - 5.1) <= Double.Epsilon;

Usage within the Condition Escort

When using market phases within AgenaScript, the indicator provides a data series that has the aforementioned values of +/-3, 4, 5, 5.1, 5.2.

You can use the indicator as a filter by using the signals of other indicators when they are inside the market phases 5.1 or 5.2(long):

Condition Escort

Important tip The scanner and chart use a different history calculation. Since Dow Theory indicators are very bar sensitive we cannot guarantee 100% synchronization between results show in the chart and the scanner. We recommend to reload the data in the scanner from time to time to avoid to big discrepancies. If you want to use MarketPhases (also Pro and Advanced version) indicator in conjunction with the scanner, the following settings are required:

  • Chart settings:
  • Bars count
  • Time frame

  • Scanner column settings:

  • Bars required
  • Time frame

These chart and column settings should be identical.

MarketPhasesChart

MarketPhasesScanner

MarketPhases Pro Description

Phase5Level How many percents the price correction must be to become a valid market phase 5.

Phase4Level How many percents the price correction must be to become a valid market phase 4.

Usage

As this indicator ignores the input series, user can use only these 2 methods:

public MarketPhasesPro MarketPhasesPro(Int32 trendSize,
            double phase4Level,
            double phase5Level,
            P123ProValidationMethod validationMethod,
            double p2Distance,
            double p3Distance,
            double p3BreakageDistance,
            bool breakTheTrendByCS)

public MarketPhasesPro MarketPhasesPro(Int32 trendSize,
            P123ProValidationMethod validationMethod,
            double p2Distance,
            double p3Distance,
            double p3BreakageDistance,
            bool breakTheTrendByCS)

Parameter

phase4Level = 0.2 (0.2 = 20%) phase5Level = 0.5 (0.5 = 50%)

The parameters trendSize, validationMethod, p2Distance, p3Distance, p3BreakageDistance and breakTheTrendByCS are only for the P123 indicator which is used within the MarketPhasesPro. These parameters can be checked under P123Pro descripption.

The most important parameter is the "int trendSize" parameter. It defines which trend is checked

The output value is the phase in the specific trend (1, 2, 3, 4, 5, 5.1, 5.2, 5.3 / as well as the negative values when short direction, see screenshot)

MarketPhasesPro

Example

MarketPhasesPro(0, P123ProValidationMethod.Correction, 0, 0, 0, false)[0] == 4 //check if the big trend is in phase 4 (Long)

            MarketPhasesPro(3, 0.3, 0.6, P123ProValidationMethod.Correction, 0, 0, 0, false)[0] == -5.3 //check if the smallest trend is in phase 5+ (Prom Queen) (Short, phase4Level = 0.3, phase5Level = 0.6)

MarketValue

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

This indicator compares the value of a market with the current price of gold or the dollar index. This means that markets are placed in relation to the gold price or the dollar, whereby over- and undervaluation can be determined very well in instruments.

A low MarketValue means that a market is cheap relative to gold/dollar index; vice versa, a higher value means that the market is relatively expensive.

In general, commodities should be compared to the gold price, and financials to the dollar index. However, depending on the market environment, it may be useful to deviate from this rule.

The following parameters are available for the MarketValue:

  • CompareTo: select [Gold/Dollar Index] depending on which market the current symbol should be placed in relation to.

  • EMA1: this is a period that is necessary for calculating the data. If you do not have detailed information about how this indicator works, please leave this period on the default settings. (Default value = 21)

  • EMA2: this is an EMA period that is necessary for calculating the data. If you do not have detailed information about how this indicator works, please leave this period on the standard settings. (Default value = 3)

It is not yet possible to use the MarketValue indicator in the ConditionEscort, since a multi-instrument indicator cannot be depicted there. Since the MarketValue requires the price data from the current chart and also from gold i.e. the dollar index, this is a multi-instrument indicator, which, as mentioned, currently cannot be represented in the ConditionEscort.

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

MarketValue

Example

to be announced

Momentum (MOM)

Description

Momentum is one of the most popular indicators available, the first choice of many traders. This relatively simple indicator is so popular because it measures the attenuation of the motion without the need for complex formulas. The momentum indicator represents a whole family of indicators that measure a movement’s strength. Other representatives in this case are the RSI or CCI, and so on. In the illustration below, the indicator is a graph that oscillates around a zero point. There is no fixed scale in percentage terms, and the value can be quite far removed from the zero point; this usually happens when the price makes an exceptionally strong leap, which is why the indicator predominantly shows the direction in which the current prices are moving towards.

Interpretation

Entry signals are generated when the indicator crosses the zero line.

See ROC.

Further information

http://de.wikipedia.org/wiki/Momentum_%28Chartanalyse%29

Usage

Momentum(int period)
Momentum (IDataSeries inSeries, int period)
Momentum (int period)[int barsAgo]
Momentum (IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. Momentum(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Momentum (MOM)

Example

//Output of the values for the momentum indicator.
Print("The current value for the momentum is " + Momentum(14)[0]);

Money Flow Index (MFI)

Description

The MFI is an oscillator that makes use of both volume and price to measure buying and selling pressure. MFI, which was developed by Gene Quong and Avrum Soudack, is also known as volume-weighted RSI. MFI starts with the typical price for each period. Money flow is then positive when this aforementioned typical price increases (buying pressure) and negative when it decreases (selling pressure). A ratio of positive-negative money flow is then inserted into an RSI formula to come up with an oscillator that fluctuates between 0 and 100. The MFI, which is a momentum oscillator linked to volume, is best used for identifying reversals and price extremes with a variety of different signals.

Interpretation

The MFI is interpreted similarly to the RSI indicator. The MFI’s decisive factor is much stronger than the RSI’s when it comes to trend direction, due to the fact that volume is included in the calculation.

Further information

VTAD: http://vtadwiki.vtad.de/index.php/Money_Flow_Index

Usage

MFI(int period)
MFI(IDataSeries inSeries, int period)
MFI(int period)[int barsAgo]
MFI(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. MFI(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Money Flow Index (MFI)

Example

//Current MFI value
Print("The current value for the MFI is: " + MFI(14)[0]);

Moving Averages

Variants

DEMA - Double Exponential Moving Average

EMA - Exponential Moving Average

HMA - Hull Moving Average

KAMA - Kaufman's Adaptive Moving Average

MAMA - Mesa Adaptive Moving Average

SMA - Simple Moving Average

TEMA - Triple Exponential Moving Average

TMA - Triangular Moving Average

TRIX - Triple Exponential Moving Average

T3 - Triple Exponential Moving Average

VMA - Variable Moving Average

VWMA - Volume Weighted Moving Average

WMA, VMA - Weighted Moving Average

ZLEMA - Zero Lag Exponential Moving Average

Interpretation

The arithmetic average, also known as the moving average or simple moving average, smoothes the progression of the price for better trend detection. Moving averages are trend-following indicators; they follow the course and do not lead. IsSerieRising averages show uptrends, whereas falling averages display downtrends. By varying the period input, the time delay of the average can be changed. The smaller the period interval, the quicker the reaction time will be, but as a consequence, the smoothing effect will also be diminished. The opposite is true when increasing the period selection. The most popular choices are: 38, 50, 100 and 200 days. The 200-day moving average in particular has a significant importance for institutional traders, since it displays the long-term trend. 200 trading days are equal to a trading year. When the 200 MA is broken, then buy/sell signals are generated.

Applications

Crossing of two averages

The integration of multiple moving averages is used to identify trend sequences and minimize the number of false signals. When two arithmetic averages are used, whereby one is a short-term and the other a long-term, more interesting signals can be generated. One such application can be seen with Richard Donchian’s methodologies, such as using the 5 and 20-day averages. The Double Crossover Method generates signals in the following way:

If the short-term average crosses the long-term average from below, this is called a Golden Cross, and a buy signal is generated. Higher trading volume reinforces the quality of the signal. The long-term average works as a support line in an uptrend.

If the short-term average crosses the long-term average from above, this is called a Death Cross. It generates a sell signal. Higher trading volume reinforces the signal quality. In a downtrend, the long-term average functions as a resistance line.

Crossing of three moving averages

Another method is to use three moving averages (Triple Crossover Method). This method was presented by R.C Allen, who used the 4, 9, and 18-day averages and suggested that a trend change is hinted at when the 4MA crosses the 9MA from bottom to top. An entry is only recommended when all lines are above the 18-day period. An exit is initiated when the 4-day MA moves below the 9-day MA. (Source: VTAD)

DEMA - Double Exponential Moving Average

Description

The Double Exponential Moving Average is a technical indicator created by Patrick Mulloy. The calculation hereof is done using a simple as well as a double exponential moving average.

Interpretation

The DEMA is a fast-working moving average that reacts quicker to market changes. The DEMA may be used as a stand-alone indicator or in tandem with other indicators. The general interpretations are the same as for regular moving averages.

Usage

DEMA(int period)
DEMA(IDataSeries inSeries, int period)
DEMA(int period)[int barsAgo]
DEMA(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. DEMA(20)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

DEMA - Double Exponential Moving Average

Calculation

Value.Set(2 * EMA(InSeries[0], Period)[0] - EMA(EMA(InSeries[0], Period), Period)[0]);

Example

//Output the values for the DEMA
Print("The current DEMA value is " + DEMA(20)[0]);

EMA - Exponential Moving Average

Description

Exponential moving averages work to reduce lag by weighting recent prices more heavily. The weighting given to the most recent price depends on the number of periods in the moving average. Calculating an exponential moving average involves three steps. 1. Calculate the simple moving average. An exponential moving average (EMA) must start somewhere, therefore a simple moving average is used as the previous period's EMA in the beginning calculation. 2. Calculate the weighting multiplier. 3. Calculate the EMA.

Interpretation

The EMA is used by many traders in the most varying of timeframes. It is especially meaningful within the 15, 60 and 240-minute charts. The EMA 200 line is also especially popular with traders.

If the price rises sharply and moves away quickly from the respective EMA line, it is possible to enter countertrend positions in order to profit from the potential return to the moving average. General interpretations of the moving averages also apply to the EMA.

Usage

EMA(int period)
EMA(IDataSeries inSeries, int period)
EMA(int period)[int barsAgo]
EMA(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. EMA(20)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

EMA - Exponential Moving Average

Calculation

Value.Set(ProcessingBarIndex == 0 ? InSeries[0] : InSeries[0] * (2.0 / (1 + Period)) + (1 - (2.0 / (1 + Period))) * Value[1]);

Example

//Output the value for the EMA
Print("The current EMA value is " + EMA(20)[0]);

EMA MTF (MultiTimeFrame)

Description

The EMA MTF indicator is a multi-timeframe version of the standard EMA indicator. This indicator basically allows you to make calculationgs in a different timeframe than that of the current chart.

For more information, see EMA.

Also see BollingerMTF, SmaMTF.

Visualization

A 5-minute chart with an EMA(20) calculated with hourly bars as the underlying input:

EMA MTF (MultiTimeFrame)

HMA - Hull Moving Average

Description

The Hull Moving Average, invented by Alan Hull, is a fast-working moving average that gets rid of almost all delays/lags (zero lag). The calculation is carried out using several weighted moving averages, thereby partially reducing the smoothing effect. Hull’s methodology uses square roots of the period instead of the actual period itself.

Interpretation

The same interpretations as for the moving averages apply to the HMA, the only major distinction being the reduced lag. See Moving Averages.

Usage

HMA(int period)
HMA(IDataSeries InSeries, int period)
HMA(int period)[int barsAgo]
HMA(IDataSeries InSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. HMA(21)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

HMA - Hull Moving Average

Calculation

double value1 = 2 * WMA(InSeries, (int)(Period / 2))[0];
double value2 = WMA(InSeries, Period)[0];
diffSeries.Set(value1 - value2);
Value.Set(WMA(diffSeries, (int) Math.Sqrt(Period))[0]);

Example

//Output the value for the HMA
Print("The current HMA value is " + HMA(21)[0]);

KAMA - Kaufman's Adaptive Moving Average

Description

The KAMA is based on an EMA in which a trend efficiency ratio controls the weight of future price changes. This efficiency ratio (the squared efficiency factor) is a measure that can also be used by itself. The trend efficiency is the ratio of the absolute price change from the start to the end of the period, and the total of the absolute daily price changes. At higher trending efficiencies (i.e. straight price movements) without too much variation, the extra price carries a higher weighting, according to a shorter day period setting. Lower trending frequencies carry a smaller weighting.

Interpretation

Kaufman mentions that a rising KAMA value can be interpreted as a buying signal, whilst falling KAMA values assume the prices to be falling. Kaufman also defines a maximum and minimum value for the calculation of the smoothing components. The efficiency ratio is converted using specified maximum and minimum values, which are applied to newly incoming price changes. Kaufman uses 2 (short period) as a minimum value and 30 (long period) as a maximum value. The number of days for the determination of the efficiency ratio is one of the more important parameters for the KAMA.

For a more general interpretation of moving averages, please see the following chapter: Moving Averages.

Further information

http://www.investor-verlag.de/boersenwissen/kama/

Usage

KAMA(int fast, int period, int slow)
KAMA(IDataSeries inSeries, int fast, int period, int slow)
KAMA(int fast, int period, int slow)[int barsAgo]
KAMA(IDataSeries inSeries, int fast, int period, int slow)[int barsAgo]

Return value

double

When using this method with an index (e.g. KAMA(2,10,30)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

fast Short period

slow Long period

Visualization

KAMA - Kaufman

Example

//Output for the value of the Kaufman Moving Average(KAMA)
Print("The current value of the KAMA is " + KAMA(2,10,30)[0]);

MAMA - Mesa Adaptive Moving Average

Description

This automatically adapting moving average has a period length that is determined by means of various complex calculations. This complex indicator has its origins in publications by John Ehlers. Ehlers calculates cycles for the price movements to determine the length and intensity of single trend phases. Working with the length of the cycles, the weighting factor for the moving average can be established in several different ways.

FAMA This indicator is a second line – the name FAMA can be found in various publications. This line is similar to the underlying exponential moving average and can be used as a trigger line.

Interpretation

For more concise information, we recommend that you read Ehler’s paper.

General information about moving averages can be found here: Moving Averages.

Further information

http://www.tradesignalonline.com/de/lexicon/view.aspx?id=MAMA+adaptive+Moving+Average

Usage

MAMA(double fastLimit, double slowLimit)
MAMA(IDataSeries inSeries, double fastLimit, double slowLimit)
MAMA(double fastLimit, double slowLimit)[int barsAgo]
MAMA(IDataSeries inSeries, double fastLimit, double slowLimit)[int barsAgo]

//Value of the Following Adaptive Moving Average (FAMA)
MAMA(double fastLimit, double slowLimit).Fama[int barsAgo]
MAMA(IDataSeries inSeries, double fastLimit, double slowLimit).Fama[int barsAgo]

Return value

double

When using this method with an index (e.g. MAMA(0.5,0.05)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

fastLimit Upper limit for the alpha value

slowLimit Lower limit for the alpha value

Visualization

MAMA - Mesa Adaptive Moving Average

Example

//Output values for (MAMA)
Print("The current value for the MAMA is " + MAMA(0.5, 0.05)[0]);
//Output values for (FAMA)
Print("The current value for the FAMA is " + MAMA(0.5, 0.05).Fama[0]);

SMA - Simple Moving Average

Description

The SMA is the most well-known average, representing the simplest method of displaying the trend direction in a chart. In mathematical terms, this is the arithmetic mean of a number of individual lengths. It is called “moving” because to establish an average, the oldest value is always sacrificed to make space for the new incoming price change. Fundamentally speaking, the period length influences the intensity of the smoothing. Shorter periods (such as 10 days) will mean that the indicator follows the price changes quite closely. The SMA has a few disadvantages, which is why several adaptations of this indicator have been developed in the last few years. One of the biggest disadvantages is the fact that the indicator tends to lag, and the equal weighting for all data inputs across time intervals. You can find more general interpretations and meanings here: Moving Averages.

Further information

http://www.forex-trading-online.de/indikatoren/simple-moving-average-sma

http://vtadwiki.vtad.de/index.php/SMA#Average-Off-Berechnungsverfahren_.28MMA.29

Usage

SMA(int period)
SMA(IDataSeries InSeries, int period)
SMA(int period)[int barsAgo]
SMA(IDataSeries InSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. SMA(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

SMA - Simple Moving Average

Calculation

Value.Set((last + InSeries[0] - InSeries[Period]) / Math.Min(ProcessingBarIndex, Period));

Example

//Output of the SMA value
Print("The current SMA value is " + SMA(14)[0]);

GapSMA - Gap Simple Moving Average

Description

The SimpleSMA has the Issue, that in case of an big opening Gap, the SMA takes very long to adjust to the candles. The GapSMA ignores the Gaps and ends calculating on the Market Close and starts calculating on the Market Open again.

If there is a Gap between the Market Close and the Market Open it will not be taken into account.

Usage

GapSMA(int period)
GapSMA(IDataSeries InSeries, int period)
GapSMA(int period)[int barsAgo]
GapSMA(IDataSeries InSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. GapSMA(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

InSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

GapSMA - Simple Moving Average

Example

//Output of the SMA value
Print("The current GapSMA value is " + GapSMA(14)[0]);

SMA MTF (MultiTimeFrame)

Description

The SMA MTF – as is true for the other multi-timeframe indicator variations – allows traders to display the SMA of a specific timeframe on a chart of a different timeframe.

See BollingerMTF, EmaMTF.

Visualization

The image shows a 5-minute chart with an SMA (14) calculated on 4-hour bars

SMA MTF (MultiTimeFrame)

SMMA - Smoothed Moving Average

Description

The Smoothed Moving Average is combined from both Simple Moving Average and the Exponential Moving Average. Generally speaking, it is only used for higher period amounts/inputs. It normally has roughly half of the value of an EMA, meaning that an SMMA(20) is closer to an EMA(40).

Interpretation

For more general information about moving averages, please see Moving Averages.

The SMMA is often used with the SuperTrend indicator.

Further information

http://www2.wealth-lab.com/wiki/SMMA.ashx

Usage

SMMA(int period)
SMMA(IDataSeries inSeries, int period)
SMMA(int period)[int barsAgo]
SMMA(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. SMMA(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

SMMA - Smoothed Moving Average

Example

//Output for the value of the SMMA
Print("The current SMMA value is " + SMMA(14)[0]);

TEMA - Triple Exponential Moving Average

Description

The TEMA is combined from a single, a double and a triple EMA. This combo improves the delay between the indicator and price movements. The Triple Exponential Moving Average is quite efficient at smoothing price changes.

You can find more information about moving averages here: Moving Averages.

Usage

TEMA(int period)
TEMA(IDataSeries inSeries, int period)
TEMA(int period)[int barsAgo]
TEMA(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. TEMA(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

TEMA - Triple Exponential Moving Average

Example

//Output for the Triple Exponential Moving Average
Print("The current TEMA value is " + TEMA(14)[0]);

TMA - Triangular Moving Average

Description

This specifically weighted average has an extra smoothing component. The weightings are not linear, but instead take on a triangular pattern. To demonstrate, the weighting for a 7-period average would be 1,2,3,4,3,2,1. More weight is given to the median value of the time series, and the newest and oldest data is given less weight.

Usage

TMA(int period)
TMA(IDataSeries inSeries, int period)
TMA(int period)[int barsAgo]
TMA(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. TMA(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

TMA - Triangular Moving Average

Example

//Output for the value of the TMA
Print("The current value for the TMA is " + TMA(14)[0]);

TRIX - Triple Exponential Moving Average

Description

Jack Hutson developed this TRIX indicator, which is a 1-day rate-of-change indicator. What this means is that day 2 is divided by day 1, day 3 by day 2 and so on and so forth, and this is then applied to a triple exponential moving average of the closing prices. This results in a zero line fluctuating oscillator which is used as trend indicator thanks to its stability.

Interpretation

A buy signal is created when the TRIX indicator crosses the zero line from bottom to top. A sell signal is generated when the zero line is broken in a downwards direction.

Usage

TRIX(int period, int signalPeriod)
TRIX(IDataSeries inSeries, int period, int signalPeriod)
TRIX(int period, int signalPeriod)[int barsAgo]
TRIX(IDataSeries inSeries, int period, int signalPeriod)[int barsAgo]

//For the signal line
TRIX(int period, int signalPeriod).Signal[int barsAgo]
TRIX(IDataSeries inSeries, int period, int signalPeriod).Signal[int barsAgo]

Return value

double

When using this method with an index (e.g. TRIX(14, 3)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

signal period Number of bars included in the signal line calculation

Visualization

TRIX - Triple Exponential Moving Average

Example

//Output for the TRIX EMA
Print("The current TRIX value is " + TRIX(14, 3)[0]);

//Output for the TRIX signal line
Print("The current TRIX value is " + TRIX(14, 3).Signal[0]);

T3 - Triple Exponential Moving Average

Description

The Triple Exponential Moving Average T3 indicator (also dubbed the T3MA) is calculated by taking the weighted sums of a simple, a double, and a triple EMA. This produces a smooth, soft indicator line. The parameter tCount allows the trader to set the number of reiterations. The calculation is the same as the calculation for the DEMA, with the slight difference that here, a volume factor is also added. It accepts values between 0 and 1 (default: 0.7).

Usage

T3(int period, int tCount, double vFactor)
T3(IDataSeries inSeries, int period, int tCount, double vFactor)
T3(int period, int tCount, double vFactor)[int barsAgo]
T3(IDataSeries inSeries, int period, int tCount, double vFactor)[int barsAgo]

Return value

double

When using this method with an index (e.g. T3(14,3,0.7)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

tCount Number of iterations for the smoothing

vFactor Volume factor (multiplier)

Visualization

T3 - Triple Exponential Moving Average

Example

//Output of the value for the T3 indicator
Print("The current T3 value is " + T3(14, 3, 0.7)[0]);

VMA - Variable Moving Average

Description

This variation of an EMA automatically smoothes any fluctuations in the market, and its sensitivity grows as more weight is placed on more recent data.

The VMA attempts to get rid of the disadvantages of other moving averages by automatically regulating the smoothing constant. This is why the VMA can be implemented for most of the market conditions, and is in a few cases actually better than other averages.

Caution The VMA is not to be confused with the Volume Moving Average (VolMA)!

Usage

VMA(int period, int volatilityPeriod)
VMA(IDataSeries inSeries, int period, int volatilityPeriod)
VMA(int period, int volatilityPeriod)[int barsAgo]
VMA(IDataSeries inSeries, int period, int volatilityPeriod)[int barsAgo]

Return value

double

When using this method with an index (e.g. VMA(9,9)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

volatility period Number of bars included in the calculation for the signal line

Visualization

VMA - Variable Moving Average

Example

//Output the VMA value
Print("The current VMA value is " + VMA(9, 9)[0]);

VWMA - Volume Weighted Moving Average

Description

VWMA is a non-cumulated smoothed average that is weighted based on the various volumes for the periods.

Usage

VWMA(int period)
VWMA(IDataSeries inSeries, int period)
VWMA(int period)[int barsAgo]
VWMA(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. VWMA(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

VWMA - Volume Weighted Moving Average

Example

//Output for the VWMA
Print("The current VWMA value is " + VWMA(14)[0]);

WMA - Weighted Moving Average

Description

The Weighted Moving Average is the most well-known of the weighted averages, and is implemented to identify and quickly react to price changes. Current prices are given higher weighting than older ones. In addition, bad signals in sideways markets are minimized. The WMA smoothes the price changes and makes more efficient trade identification possible.

Further information

http://www.tradesignalonline.com/de/lexicon/view.aspx?id=Moving+Average+Weighted+%28WMA%29

Usage

WMA(int period)
WMA(IDataSeries inSeries, int period)
WMA(int period)[int barsAgo]
WMA(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. WMA(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

WMA - Weighted Moving Average

Example

//Output for the WMA
Print("The current value of the WMA is " + WMA(14)[0]);

ZLEMA - Zero Lag Exponential Moving Average

Description

The Zero Lag Exponential Moving Average is another variation of the EMA. Zero lag in this context signifies no delay, which means that the indicator adapts to the price changes more closely. The indicator does so by removing older price data and decreasing the cumulative effect in order to minimize the lag.

Further information

FMLabs: http://www.fmlabs.com/reference/default.htm?url=ZeroLagExpMA.htm

Usage

ZLEMA(int period)
ZLEMA(IDataSeries inSeries, int period)
ZLEMA(int period)[int barsAgo]
ZLEMA(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. ZLEMA(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

ZLEMA - Zero Lag Exponential Moving Average

Example

//Output for the value of the Zero Lag Exponential Moving Average
Print("The current ZLEMA value is " + ZLEMA(14)[0]);

nBarsUp

Description

The nBarsUp indicator looks for a specified number of rising closing prices. Other conditions can also be added to the search, for example: Constantly rising bars, i.e. close < open (red candles) Constantly rising highs Constantly rising lows

Usage

NBarsUp(int barCount, bool BarUp, bool higherHigh, bool higherLow)
NBarsUp(IDataSeries inSeries, int barCount, bool BarUp, bool higherHigh, bool higherLow)
NBarsUp(int barCount, int barCount, bool BarUp, bool higherHigh, bool higherLow)[int barsAgo]
NBarsUp(IDataSeries inSeries, int barCount, bool BarUp, bool higherHigh, bool higherLow)[int barsAgo]

Return value

double

When using this method with an index (e.g. NBarsUp(...)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

1 – The condition applies 0 – The condition does not apply

Parameters

inSeries Input data series for the indicator

barCount Number of successively rising closing prices

barUp Additional condition (true): each close must be higher than the open (green bar)

higherHigh Additional condition (true): continuously rising highs

higherLow Additional condition (true): continuously rising lows

Visualization

nBarsUp

Example

// Look for 3 successively rising closing prices
if (NBarsUp(3, true, true, true)[0] == 1)
Print("3 successively higher closing prices have occurred.");

nBarsDown

Description

The nBarsDown indicator looks for a specified number of falling closing prices.

The following conditions can also be included in the search: - Constantly falling bars - Constantly falling highs - Constantly falling lows

Usage

NBarsDown(int barCount, bool BarDown, bool lowerHigh, bool lowerLow)
NBarsDown(IDataSeries inSeries, int barCount, bool BarDown, bool lowerHigh, bool lowerLow)
NBarsDown(int barCount, bool BarDown, bool lowerHigh, bool lowerLow)[int barsAgo]
NBarsDown(IDataSeries inSeries, bool barCount, int BarDown, bool lowerHigh, bool lowerLow)[int barsAgo]

Return value

double

When using this method with an index (e.g. NBarsDown(...)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

1 – The condition applies 0 – The condition does not apply

Parameters

inSeries Input data series for the indicator

barCount Required number of successively lower closing prices

barDown Additional condition (true): each close must be lower than the open

lowerHigh Additional condition (true): continuously falling highs

lowerLow Additional condition (true); continuously falling lows

Visualization

nBarsDown

Example

NBarsDown(int barCount, bool BarDown, bool lowerHigh, bool lowerLow)
NBarsDown(IDataSeries inSeries, int barCount, bool BarDown, bool lowerHigh, bool lowerLow)
NBarsDown(int barCount, bool BarDown, bool lowerHigh, bool lowerLow)[int barsAgo]
NBarsDown(IDataSeries inSeries, bool barCount, int BarDown, bool lowerHigh, bool lowerLow)[int barsAgo]

OnBalanceVolume (OBV)

Description

This indicator displays the buy or sell pressure. For each day with a positive close, the volume is added cumulatively, and it is subtracted for days with a close that is smaller than the open.

Interpretation

Granville theorized that volume precedes price. OBV rises when volume on up days outpaces volume on down days. OBV falls when volume on down days is stronger. A rising OBV reflects positive volume pressure that can lead to higher prices. Conversely, falling OBV reflects negative volume pressure that can foreshadow lower prices. Granville noted in his research that OBV would often move before price. Expect prices to move higher if OBV is rising while prices are either flat or moving down. Expect prices to move lower if OBV is falling while prices are either flat or moving up.

The absolute value of OBV is not important. Chartists should instead focus on the characteristics of the OBV line. First define the trend for OBV. Second, determine if the current trend matches the trend for the underlying security. Third, look for potential support or resistance levels. Once broken, the trend for OBV will change and these breaks can be used to generate signals. Also notice that OBV is based on closing prices. Therefore, closing prices should be considered when looking for divergences or support/resistance breaks. And finally, volume spikes can sometimes throw off the indicator by causing a sharp move that will require a settling period. (Source: Stockcharts.com)

Usage

OBV()
OBV(IDataSeries inSeries)
OBV()[int barsAgo]
OBV(IDataSeries inSeries)[int barsAgo]

Return value

double

When using this method with an index (e.g. OBV()[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameter

inSeries Input data series for the indicator

Visualization

OnBalanceVolume (OBV)

Example

//Output the value for the On Balance Volume (OBV)
Print("The current value for the OBV is " + OBV()[0]);

OutsideBars

Description

The Outside Bars indicator is in fact an outdated version of the InsideBarsMT.

P123

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

The goal of the P123 indicator is to automatically detect a 1-2-3 pattern.

The following features make it stand out:

Innovative recognition of 4 different trend sizes

It recognizes points 1, 2, and 3 at the bar

Recognition of a trend continuation in the same direction as a trend break

Completely automatic adjustment of the search algorithm for all possible market conditions (no additional settings/inputs required)

Adaptive workflow, adjusting to any volatility fluctuations

Clear overview while simultaneously displaying the various trend sizes

Can be implemented within the Condition Escort and AgenaScript

The trend sizes are defined as follows:

T0 = large trend

T1 = medium-sized trend

T2 = small trend

T3 = smallest trend size

The smallest trend size (T3) cannot be detected on all trading instruments. Point 2 is often situated at the high of a bar, and point 3 at the low of the same bar. Depending on the timeframe and fluctuation range, T0 and T1 can be fused into one.

The indicator determines the selected timeframe of the chart, and then labels all trends and trend sizes accordingly. When there is low volatility, trend recognition is more sensitive, and the vice versa for higher volatility. The P123’s adaptive methods make for a balanced recognition of trend sizes.

Important tip:

In some cases, the large trend (T0) cannot be seen with the naked eye, which may be due to the fact that not enough candles are visible within the chart. A minimum of 500 candles should be loaded to ensure this is not the case.

Interpretation

Trading signals often form at points 2 & 3: at point 3 as entry signals into a correction phase within a confirmed trend, and at point 2 as a sub-trend in the trend direction of the superior trade. The definition of a trend at points 1 to 3 can be read in "Das große Buch der Markttechnik" by Michael Voigt (German only).

Visualization in the chart

The parameter input settings define which trend sizes are shown in the chart and whether or not they are connected by a line.

For the default settings, the trend T2 is enabled by default.

The depiction in the chart may change with the changing market movements. If the market moves below the last point 3 and breaks the uptrend, the point is marked with a “3?”. The newly created low becomes the new point 2 and the last point 2 becomes point 1.

Visualization in the chart

The parameter settings are not relevant for the display in the chart and are primarily used for the Condition Escort.

The depiction in the chart is primarily influenced by the settings “Display 123” and “Display Lines”.

parameter settings

The settings highlighted in yellow have no influence on the chart. No changes need to be made.

Usage in AgenaScript

When using P123 in AgenaScript, multiple public variables are available.

A notation such as [barsAgo] is not available for this. Parameter occurrences are used in the following manner:

P123(int trendSize). ... <<a public variable, see below>>

P123(int trendSize, int occurrence). ...

Trend Direction 1 = uptrend -1 = downtrend 0 = no trend
IsTrendValid true = confirmed trend with a point sequence of at least 1 - 2 - 3 - 2
false = no confirmed trend (phases 1 and 2)
LastPoint last point of a trend, 1, 2 or 3
LastPointPrice outputs the price value of the last market point
LastPointDateTime outputs the date and time of the last market point
P1Price outputs the value of the last point 1
P1DateTime outputs the value and date/time of the last point 1
P2Price outputs the value of the last point 2
P2DateTime outputs the time and date of point 2
TempP3Price putputs the value of the temporary point “3?”
TempP3DateTime outputs the time and date of the temporary point “3?”
ValidP3Price outputs the value of the last point 3. This is used as a stop placement. When this point is breached, a trend change is confirmed
ValidP3DateTime outputs the date and time for the last valid point 3

Parameters

trendsize: trend size from 0 .. 3

occurrence the occurrences of the youngest to the oldest point

Example

private void PrintOutTrendProperties(int trendSize)
{
  // Reverse order of prints fills output window in correct order
  Print("");
  Print("valid P3 date: " + P123(trendSize).ValidP3DateTime);
  Print("valid P3 price: " + P123(trendSize).ValidP3Price);
  Print("temp P3 date: " + P123(trendSize).TempP3DateTime);
  Print("temp P3 price: " + P123(trendSize).TempP3Price);
  Print("P2 date: " + P123(trendSize).P2DateTime);
  Print("P2 price: " + P123(trendSize).P2Price);
  Print("P1 date: " + P123(trendSize).P1DateTime);
  Print("P1 price: " + P123(trendSize).P1Price);
  Print("last point date: " + P123(trendSize).LastPointDateTime);
  Print("last point price: " + P123(trendSize).LastPointPrice);
  Print("last point: " + P123(trendSize).LastPoint);
  Print("is trend valid: " + P123(trendSize).IsTrendValid);
  Print("trend direction: " + P123(trendSize).TrendDirection);
}

Utilization within the Condition Escort

All public variables are available to you inside the Condition Escort as data series; they can be found under „Series & Output Values“. The name has an underscore ("_") suffix in order to differentiate it.

The parameters “trendSize” and “occurrence” can be found within the Condition Escort.

P123Pro

The parameter TrendSize can be found under the parameter settings (see figure). It is only intended to be used within the Condition Escort. This parameter is not relevant for display in the chart. The display is only controlled by the following settings: "Display 123" and "Display Lines".

parameter settings

You can see in the respectful description fields for each parameter to which extend the particular parameters may influence the chart or Condition Escort as well as AgenaScript.

Usage in the AgenaScript

For the AgenaScript purposes several data series of the same type are doubled. For each of these data series the common notation with ...[barsAgo] can be used.

TrendDirection 1 = Uptrend -1 = Downtrend 0 = no trend defined according to the market technique
IsP21 If a bar represents an old point 2 and at the same time a new point 1, it will be labelled in the chart as "(2) 1". The value of this bar (and all subsequent bars up to the next point 2) will be 1, and 0 otherwise.
IsTrendValid 1 = defines a confirmed trend, i.e. at least a point sequence 1 - 2 - 3 - 2. 0 = there is no confirmed trend yet. (Phase 1 and 2 according to market technique)
LastPoint Provides the latest point of the trend, i.e. 1, 2, or 3
LastPointPrice Provides the corresponding market value of the latest point according to the market technique
LastPointDateTime Provides the corresponding date and time related to the latest point according to the market technique
LastPointExtInfo Provides the corresponding label of the latest point according to the market technique. The labelling should be additionally defined in Parameter tab. The slope is a chart-only feature therefore it is neither in Conditions, nor in the AgenaScript available.
P1Price Provides the market value of the latest point 1
P1DateTime Provides the date and time of the latest point 2
PriorP2Price efert die Datums- und Zeitangabe des vorletzten Punkt 2
TempP3Price Provides the date and time of the second last point 2
TempP3DateTime Provides the date and time of the last preliminary point 3
ValidP3Price Provides the market value of the last valid point 3. This market value defines the stop movement according to the market techniques. When this point is crossed, there is a trend break from the market technique perspective.
ValidP3DateTime Provides the date and time of the last valid point 3

Parameters

trendsize Trend size of 0 .. 3
breakageP2 Shows an arrow in the chart, when a break of P2 occurs or has been already completed. The figure is expressed as a percentage between -100 and +100. -20 alerts e.g. 20% before the P2 will be reached
extInfo Selection of a labelling
p2Distance Uncertainty: this is a factor (between 0 and 1) that defines, how far has to be the P2 from the "old" valid P2 in order to be treated as valid. The previous movement is decisive in this case.
p3Distance Uncertainty: this is a factor (between 0 and 1) that defines, how far has to be the P3 from the "old" valid P2 in order to be treated as valid. The previous movement is decisive in this case..
p3BreakageDistance Uncertainty: this is a factor (between 0 and 1) that defines when a trend brake is valid. The previous movement is decisive in this case. So, for instance, the breakout of the latest P3 (with one tick only) will not be considered as the breakout anymore.

Examples

private void PrintOutTrendProperties(int trendSize)
private void PrintOutTrendProperties(int trendSize)
{
    // revers order of prints fills output window in correct order
    Print("");
    Print("IsP21: " +  P123Pro(trendSize).IsP21[0]);
    Print("valid P3 date: " +  P123Pro(trendSize).ValidP3DateTime[0]);
    Print("valid P3 price: " +  P123Pro(trendSize).ValidP3Price[0]);
    Print("temp P3 date: " +  P123Pro(trendSize).TempP3DateTime[0]);
    Print("temp P3 price: " +  P123Pro(trendSize).TempP3Price[0]);
    Print("P2 date: " +  P123Pro(trendSize).P2DateTime[0]);
    Print("P2 price: " +  P123Pro(trendSize).P2Price[0]);
    Print("P1 date: " +  P123Pro(trendSize).P1DateTime[0]);
    Print("P1 price: " +  P123Pro(trendSize).P1Price[0]);
    Print("last point date: " +  P123Pro(trendSize).LastPointDateTime[0]);
    Print("last point price: " +  P123Pro(trendSize).LastPointPrice[0]);
    Print("last point: " +  P123Pro(trendSize).LastPoint[0]);
    Print("Is trend valid: " +  P123Pro(trendSize).IsTrendValid[0]);
    Print("Trend direction: " +  P123Pro(trendSize).TrendDirection[0]);
    Print("P2Breakout: " +  P123Pro(trendSize).P2Breakout[0]);
    Print("Extended Information: " +  P123Pro(trendSize).LastPointExtInfo[0]);
}

Usage in the Condition Escort

All data series (excluding the DateTime series) are available in the Condition Escort under the "Series & Output Values".

Logical variables (true and false) are replaced by the numbers 1 and 0. The "TrendSize" parameter is available in the Condition Escort as well. The description you will find below.

Examples

Inquiry whether the currently active in the chart middle trend is a downtrend: P123Pro(Close, 1).TrendDirection[0] - Inh. TimeFrame == 1

Inquiry whether the latest point of the currently active in the chart smallest trend is a Point2: P123Pro(Close, 3).LastPoint[0] - Inh. TimeFrame == 2

Inquiry whether the latest bar under the valid point 3 (not the 3?) of the small trend has been closed: P123Pro(Close, 2).isTrendValid[0] - Inh. TimeFrame == 1 UND (also neue Zeile) Close[0] - Inh. TimeFrame < P123Pro(Close, 2).ValidP3Price[0] - Inh. TimeFrame

Parabolic SAR

Description

Welles Wilder came up with the Parabolic SAR, which denotes a price and time-based trading system. Wilder named this the "Parabolic Time/Price System." SAR signifies "stop and reverse," which is the name of the actual indicator used in his system, where SAR trails price as the trend extends over time. When prices are rising, the indicator is below them, and when prices are falling, it is above them. Therefore the indicator stops and reverses when the price trend reverses and breaks either above or below the indicator.

Wilder used his new book, New Concepts in Technical Trading Systems, to introduce the Parabolic Time/Price System in 1978. The book also discusses RSI, Average True Range, and the Directional Movement Concept (ADX). Although they were created before the computer age, Wilder's indicators function equally well today and have a high reputation.

SAR follows the price, and can be considered a trend-following indicator. If a downtrend reverses and starts up, SAR follows the prices just like a trailing stop. This stop continues to rise so long as the uptrend remains intact, which means that the SAR never decreases in an uptrend and is always protecting profits as prices move forwards. Once the price stops rising and reverses below SAR, a downtrend starts and SAR is above the price. SAR follows prices lower like a trailing stop, as mentioned before. The stop continuously falls as long as the downtrend continues to exist. Due to the fact that SAR never rises in a downtrend, it always protects profits on short positions.

Further information

VTAD: http://vtadwiki.vtad.de/index.php/Parabolic_SAR

Wikipedia: http://en.wikipedia.org/wiki/Parabolic_SAR

Usage

ParabolicSAR(double acceleration, double accelerationStep, double accelerationMax)
ParabolicSAR(IDataSeries inSeries, double acceleration, double accelerationStep, double accelerationMax)
ParabolicSAR(double acceleration, double accelerationStep, double accelerationMax)[int barsAgo]
ParabolicSAR(IDataSeries inSeries, double acceleration, double accelerationStep, double accelerationMax)[int barsAgo]

Return value

double

When using this method with an index (e.g. ParabolicSAR(...)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

acceleration Acceleration
accelerationStep Increment of the acceleration
accelerationMax Maximum acceleration
InSeries Input data series for the indicator

Visualization

Parabolic SAR

Example

//Output of the value for the PSAR
Print("The current value for the Parabolic SAR is " + ParabolicSAR(0.02, 0.2, 0.02)[0]);

Percentage Price Oscillator (PPO)

Description

The Percentage Price Oscillator displays the percentage difference between two moving averages. It is classed as a momentum indicator and is similar to the MACD in its construction.

Interpretation

The PPO can be used for divergence analysis. The divergences have the advantage of having a higher percentual hit rate. On the downside, they often appear too early and thus are hard for newer traders to assess properly.

Usage

PPO(int fast, int slow, int smooth)
PPO(IDataSeries inSeries, int fast, int slow, int smooth)
PPO(int fast, int slow, int smooth)[int barsAgo]
PPO(IDataSeries inSeries, int fast, int slow, int smooth)[int barsAgo]

//For the smoothed value
PPO(int fast, int slow, int smooth).Smoothed[int barsAgo]
PPO(IDataSeries inSeries, int fast, int slow, int smooth).Smoothed[int barsAgo]

Return value

double

When using this method with an index (e.g. PPO(12,26,9)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

fast Number of bars for the calculation of the fast EMA

slow Number of bars for the calculation of the slow EMA

smooth Number of bars for the calculation of the EMA signal line

Visualization

Percentage Price Oscillator (PPO)

Example

//Output for the PPO
Print("The current value for the PPO is " + PPO(12, 26, 9)[0]);

//Output for the value of the PPO smoothed
Print("The current value for the PPO is " + PPO(12, 26, 9).Smoothed[0]);

PercentEnvelopes

Description

The Percent Envelopes indicator draws an upper and a lower band around a predefined value with a distance of a specified percentage value. The trader can specify which data series the entry value should be (highs, lows, closing price, another indicator etc.).

It is possible to use an SMA as the entry value. In this case, the upper and lower bands will be displayed with a distance of 1.5%.

Interpretation

Similarly to the Bollinger Bands, the Percent Envelope indicator can be used to make buy or sell decisions and to determine whether the price is under- or overvalued.

The Percent Envelope should never be used to make decisions based solely on the output, but should be used in conjunction with other indicators to confirm signals.

Usage

PercentEnvelopes(double percent)
PercentEnvelopes(IDataSeries inSeries, double percent)

//For the upper band
PercentEnvelopes(double percent).UpperPercentBand[int barsAgo]
PercentEnvelopes(IDataSeries inSeries, double percent).UpperPercentBand[int barsAgo]

//For the lower band
PercentEnvelopes(double percent).LowerPercentBand[int barsAgo]
PercentEnvelopes(IDataSeries inSeries, double percent).LowerPercentBand[int barsAgo]

Return value

double

When using this method with an index (e.g. PercentEnvelopes(2)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

percent Difference in % for the bands (from the input value)

Visualization

PercentEnvelopes

Example

//Output for the upper band
Print("Value of the upper percent band is: " + PercentEnvelopes(3).UpperPercentBand[0]);

//Output for the lower band
Print("Value of the lower percent band is: " + PercentEnvelopes(3).LowerPercentBand[0]);

Pivot Points

Description

This indicator, based on the price zone approach invented by Dr. Bruce Gould, has been honed over the years. In the beginning, the price zones were calculated using the price developments of the last 2-3 years. Nowadays, however, the practical concept of pivot points is taken from the calculation of price zones in the daily chart, using the previous day’s periods as the basis. The goal hereby is to determine price levels that one could use as potential resistance zones (R1..R3) or support zones (S1..S3). The following methods can be used to calculate the indicator: Classic, Floor, Woodie, Camarilla, Fibonacci. The Classic and Floor methods are often wrongly named within literature, which is why in AgenaTrader you will find that the Classic method is labeled as “Floor” and vice versa. The indicator displays the pivot points for intraday charts, and the parameter “ShowPrices” allows you to display the price on the levels. The parameter “DaysBack” allows you to set the number of periods in the past that should be used for the calculation. The line coloring can be defined manually

Interpretation

Traders prefer to sell above the resistance lines 1 & 2 (e.g. to build up short positions), and to start building up tactical long positions at the support lines.

Further information

http://www.finanznachrichten.de/nachrichten-2008-01/9833653-was-sind-pivot-punkte-und-wie-kann-ich-sie-handeln-005.htm

http://www.aktienboard.com/forum/f38/7-kapitel-pivot-points-t36428/

http://www.forexschule.com/schule/wie-man-mit-hilfe-von-pivot-punkten-handelt-50

Usage

PivotPoints()
PivotPoints(PivotPointsMode mode)
PivotPoints(PivotPointsMode mode, int LineWidth, bool ShowPrices, int DaysBack, Color RColor, Color PPColor, Color SColor)
PivotPoints(IDataSeries inSeries, PivotPointsMode mode, int LineWidth, bool ShowPrices, int DaysBack, Color RColor, Color PPColor, Color SColor)
PivotPoints()[barsAgo]
PivotPoints(PivotPointsMode mode)[barsAgo]
PivotPoints(PivotPointsMode mode, int LineWidth, bool ShowPrices, int DaysBack, Color RColor, Color PPColor, Color SColor)[barsAgo]
PivotPoints(IDataSeries inSeries, PivotPointsMode mode, int LineWidth, bool ShowPrices, int DaysBack, Color RColor, Color PPColor, Color SColor)[barsAgo]

Return value

This class has the following public methods (as data series), which all return double values:

PP, S1, S2, S3, R1, R2 ,R3

Example:

PivotPoints().PP[int barsAgo]
PivotPoints(PivotPointsMode.Classic).S3[int barsAgo]

Parameters

InSeries Input data series for the indicator
PivotPointsMode Calculatory method. Default: floor
PivotPointsMode.Classic
PivotPointsMode.Floor
PivotPointsMode.Woodie
PivotPointsMode.Camarilla
PivotPointsMode.Fibonacci
LineWidth Default: 1
ShowPrices Shows prices next to the lines. Default:false
DaysBack The number of historical periods to be included in the display of the pivot lines Default:0
RColor Resistance line color
PPColor Pivot line color
SColor Support line color
Show Regions Color fill space between lines
Extend Lines to Future Extend lines to latest data

Visualization

Pivot Points

Example

//Output current pivot point
Print("The floor pivot point is located at: " + PivotPoints()[0]);
//Output first support (S1)
Print("The first pivot support (S1) is at: " + PivotPoints().S1[0]);

Calculation

H=yesterday’s high, L=yesterday’s low, O=yesterday’s open, C=yesterday’s close

Range = H-L

Classic

pp = (H + L + C)/3

r1 = 2*pp - L

s1 = 2*pp - H

r2 = pp - s1 + r1

s2 = pp - r1 + s1

r3 = H + 2*(pp - L)

s3 = L - 2*(H - pp)

Floor

pp = (H + L + C)/3

r1 = 2*pp - L

s1 = 2*pp - H

r2 = pp + Range

s2 = pp - Range

r3 = pp + 2*Range

s3 = pp - 2*Range

Woodie

pp = (H + L + 2*C)/4

r1 = 2*pp - L

s1 = 2*pp - H

r2 = pp + H - L

s2 = pp - H + L

r3 = 0.0

s3 = 0.0

Camarilla

pp = (H + L + C)/3

r1 = C + Range * 1.1 / 12

s1 = C - Range * 1.1 / 12

r2 = C + Range * 1.1 / 6

s2 = C - Range * 1.1 / 6

r3 = C + Range * 1.1 / 4

s3 = C - Range * 1.1 / 4

Fibonacci

pp = (H + L + C)/3

r1 = pp + 0.382 * Range

s1 = pp - 0.382 * Range

r2 = pp + 0.618 * Range

s2 = pp - 0.618 * Range

r3 = pp + 0.764 * Range

s3 = pp - 0.764 * Range

Polarized Fractal Efficiency (PFE)

Description

Hans Hannula developed the PFE, which is categorized as a momentum indicator. It uses the methods of fractal geometry and chaos theory to determine the price efficiency of the movements.

Interpretation

When the PFE zigzags around the zero line, no trend is present. If the PFE is equally formed and running above the zero line, the market is in an uptrend. The higher the value, the stronger the uptrend.

Usage

PFE(int period)
PFE(IDataSeries inSeries, int period)
PFE(int period)[int barsAgo]
PFE(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. PFE(20)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Polarized Fractal Efficiency (PFE)

Example

//Output for the value of the Polarized Fractal Efficiency (PFE)
Print("The current value for the PFE is: " + PFE(20)[0]);

Price Oscillator

Description

This indicator is based on the difference between two moving averages. The difference is measured in absolute values, not in percentages.

Usage

PriceOscillator(int fast, int slow, int smooth)
PriceOscillator(IDataSeries inSeries, int fast, int slow, int smooth)
PriceOscillator(int fast, int slow, int smooth)[int barsAgo]
PriceOscillator(IDataSeries inSeries, int fast, int slow, int smooth)[int barsAgo]

Return value

double

When using this method with an index (e.g. PriceOscillator(12,26,9)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

fast Number of bars used for the calculation of the fast EMA

slow Number of bars used for the calculation of the slow EMA

smooth Number of bars used for the calculation of the EMA signal line

Visualization

Price Oscillator

Example

//Output for the value of the price oscillator
Print("The current value for the PPO is " + PriceOscillator(12, 26, 9)[0]);
//Output for the value of the smooth price oscillator
Print("The current value for the smooth is " + PriceOscillator(12, 26, 9).Smoothed[0]);

Rainbow

Description

The rainbow indicator is represented by the set of the moving average indicator lines. Each of these lines is placed closer or further from the chart depending on the time period taken into the account for calculation of moving averages.

Introduction

The rainbow indicator has some advantages comparing to the single moving average lines because it shows better, where the trend reversal occurs. When divergence in all lines is substantial - this is a signal of a strong up- or downtrend movement. By default red lines are the closest to the chart and represent the moving average line with the smallest time period. Yellow lines indicate short-term trends. Blue display the area for short-term traders’ activity. Green is typify for medium-term trends. Pink lines can be usefull for traders who hold positions for a long period.

Return value

Colors:

Yellow ЕМА: 2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15; Blue ЕМА: 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41; Green ЕМА: 44, 47, 50, 53, 56, 59, 62, 65, 68, 71, 74; Red ЕМА: 78, 82, 86, 90, 94, 98, 102, 106, 110, 114, 118, 122; Pink ЕМА: 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200.

Parameters

MA Type Allows to select between the types of the moving average lines that shape a rainbow indicator. Default setting is the EMA (exponential moving average) but it is possible to choose a simple (SMA), hull (HMA) and weighted (WMA) moving average lines
Low MA Period Shows the smallest amount of time periods for which the moving average will be calculated. For example, the setting “2” for the daily chart indicates the two latest daily closing prices.
High MA Period Shows the largest amount of time periods for which the moving average will be calculated.
Step Defines the amount of moving average lines shown on a chart within the rainbow indicator. The smaller is this number the larger amount of lines will be plotted. In our example, step 2 would mean that the indicator will contain 80 EMA lines: EMA(2), EMA(4), EMA(6) and so on.

Visualisation

Rainbow

Range

Description

Range delivers the span/difference between the high and low in ticks for each bar. The range is always greater than or equal to 0.

Usage

Range()
Range(IDataSeries inSeries)
Range()[int barsAgo]
Range(IDataSeries inSeries)[int barsAgo]

Return value

double

When using this method with an index (e.g. Range()[int barsAgo] ), the range value for the referenced bar will be outputted.

Parameter

inSeries Input data series for the indicator

Visualization

Range

Example

//Output for the value of the range
Print("The current bar has a range of: " + Range()[0]);

//Identical output
Print("The current bar has a range of: " + High[0] - Low[0]);

Range Indicator (RIND)

Description

Jack Weinberg created the Range Indicator (RIND), which was first published in 1954. The RIND compares the intraday span (range) between the high and low to the span (range) between the current closing price and the closing price from the day before.

Interpretation

When the span between the current close and the previous days close is bigger than the intraday span between high and low, the indicator will display a high value. This signals a potential trend change...

Further information

http://www.fmlabs.com/reference/default.htm?url=RangeIndicator.htm

Usage

RIND(int periodQ, int smooth)
RIND(IDataSeries inSeries, int periodQ, int smooth)
RIND(int periodQ, int smooth)[int barsAgo]
RIND(IDataSeries inSeries, int periodQ, int smooth)[int barsAgo]

Return value

double

When using this method with an index (e.g. RIND(3,10)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

periodQ Number of bars used for the short-term stochastic

smooth Number of bars used for smoothing the indicator (using an EMA)

Visualization

Range Indicator (RIND)

Example

//Output
Print("The current value for the PFE is: " + RIND(3, 10)[0]);

Rate of Change (ROC)

Description

The Rate of Change Indicator is a simple yet effective momentum oscillator. It measures the relative percentage change of the prices from one period to the next. The calculation looks at the current price and compares it to the price of n periods ago.

Interpretation

As long as the ROC is above 0, the uptrend is intact. As long as the ROC is below 0, the downtrend is intact. Divergences between the indicator and the price development can hint to a trend change.

Further information

VTAD: http://vtadwiki.vtad.de/index.php/RoC

Usage

ROC(int period)
ROC(IDataSeries inSeries, int period)
ROC(int period)[int barsAgo]
ROC(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. ROC(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Rate of Change (ROC)

Relative Currency Strength (RCS)

Description

The Relative Currency Strength indicator is a tool used for technical analysis for the Forex (foreign exchange) market. This indicator calculates the current and historical strength or weakness of a currency. The RCS can be used in all timeframes; the interpretation of the indicator remains the same.

The basic idea of the RCS is based on finding the strongest and weakest currency in the present moment in a historical context. When you have all currencies displayed simultaneously, you can seek out the strongest and weakest currency in that moment. The strongest currency is the one whose line is currently the highest in comparison to the other lines; vice versa, you will find the weakest currency to be the lowest line at that moment. The currency pair that results from this is a potential trade candidate.

If the RCS is showing that at the moment, the euro is the strongest (overbought) and the US dollar is the weakest (oversold) currency relative to the other major currencies, then a short entry in the EURUSD Forex pair makes sense.

The logic behind this states that the EURUSD will fall either when the euro shows weakness or the US dollar displays strength. Since the euro is overbought, its performance will tend to weaken; in addition, the dollar is oversold, which means we can predict rising strength on the part of the USD. By finding the strongest and weakest currency, one trades the currency pair that currently contains the highest probability of a value adjustment

Parameters

  1. Moving Average Type: [SMA/EMA] – calculation of the Relative Strength based on an SMA (Simple Moving Average) or EMA (Exponential Moving Average).

  2. Slow Period: input parameter for the sensitivity of the calculation. Higher values mean that a slower average is used for the calculation. Please leave this parameter on the standard setting (10) unless you are 100% sure what you are changing with this, since the analysis of the RCS can be distorted by deviating values. A higher period simply outputs fewer signals, which, however, present higher potential in return.

  3. Fast Period: see Slow Period.

  4. – 11. Set the currencies that you wish to have displayed in the chart to “True”.

Signals

Extreme points in the valuation of 2 currencies

Extreme points in the valuation of 2 currencies For this signal, just display the two currencies included in the respective currency pair from the RCS. In the example above, the EURUSD is loaded in the chart and the RCS is showing the USD (green) and the euro (blue). At the red horizontal lines, there is a strong overvaluation of the euro in comparison to the dollar. In these situations, the euro shows enormous strength, and the dollar great weakness. These tendencies cannot be maintained in the long run, since in the course of things, both currencies gravitate toward their fair value. This is why this overvaluation of the euro is followed by a weakening of the EURUSD ratio, that is to say the EURUSD currency price falls. This interpretation is possible for every Forex pair.

Intersecting of the currency lines

The overlapping of two currency lines can also be used as a signal. In the example, a long signal (blue) forms when the USD intersects the CHF line from bottom to top. A short signal is formed when the CHF intersects the USD line from top to bottom.

Extreme points in the valuation of 2 currencies

Divergences between chart and RCS

A divergence is formed when, for example, the chart forms new highs that are no longer confirmed by the strength of the RCG. In the example, the USDCHF forms new highs after a strong upward movement, which, however, are no longer confirmed by the USD strength of the RCS. After the divergence occurs, the USDCHF cannot continue its upward movement and transitions into a sideways phase. A divergence, therefore, can be used as an early indicator, for example to “foresee” the end of a longer movement.

Divergences between chart and RCS

Display of the current performance

In the right-hand side of the indicator window, you have a display showing how the currencies are currently developing. The values shown are the absolute changes of the individual currency in the RCS graph of the previous period compared to the current period. For example, a change in the USD from 0.0700 (previous period) to 0.0800 (current period) is outputted as +100 USD. This display serves to provide a global overview of how the Forex majors are currently developing relative to each other.

Display of the current performance

Relative Performance

Description

Calculates the price ratio between current and selected symbols.

Further information

http://stockcharts.com/articles/mailbag/2012/01/how-can-i-chart-relative-performance-qqq-underperforms-spy-.html?st=relative+performance

http://www.wikinvest.com/wiki/Relative_performance

Usage

RelativePerformance (Instrument)
RelativePerformance (Instrument)[int barsAgo]

Return value

double

Parameters

IInstrument

Visualization

Relative Performance

Relative Spread Strength (RSS)

Description

The Relative Spread Strength Indicator was developed in 2006. It uses the difference of two SMAs to calculates the value of the RSI.

Interpretation

Values above 70 and below 30 mean that the price has the potential of turning. Trades should not be entered into at these points. When it comes to extreme values, you might want to check smaller timeframes for clearer trading signals.

In the long-term analysis, the following methodology should be applied:

  • below 30: long entry
  • above 70: for more than 5 days: exit long

  • above 95: short entry

  • below 30: for more than 5 days: exit short

Usage

RSS(int eMA1, int eMA2, int length)
RSS(IDataSeries inSeries, int eMA1, int eMA2, int length)
RSS(int eMA1, int eMA2, int length)[int barsAgo]
RSS(IDataSeries inSeries, int eMA1, int eMA2, int length)[int barsAgo]

Return value

double

When using this method with an index (e.g. RSS(10,40,5)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

length Number of bars used in the calculation

eMA1 Number of periods for the first EMA

eMA2 Number of periods for the second EMA

Visualization

Relative Spread Strength (RSS)

Example

//Output for the RSS
Print("The current RSS is " + RSS (10, 40, 5)[0]);

Relative Strength Index (RSI)

Description

J. Welles Wilder, the creator of several indicators, also developed the RSI, which is one of the most popular, useful momentum oscillators. It compares the size of the most recent profits with the size of the most recent losses, which means that it assesses the relationships between the up and down closing prices. The values are shown between 0 and 100.

Interpretation

Traditionally, and according to Wilder, RSI is considered overbought when above 70 and oversold when below 30. Signals can also be generated by searching for divergences, failure swings and centerline crossovers. RSI can also be used to identify the general trend. These traditional levels can also be adjusted to better fit the security or analytical requirements. Raising overbought to 80 or lowering oversold to 20 will reduce the number of overbought/oversold readings. Short-term traders sometimes use 2-period RSI to look for overbought readings above 80 and oversold readings below 20.

Further information

http://technische-analyse.eu/index.php?title=RSI

Usage

RSI(int period, int smooth)
RSI(IDataSeries inSeries, int period, int smooth)
RSI(int period, int smooth)[int barsAgo]
RSI(IDataSeries inSeries, int period, int smooth)[int barsAgo]

//For the average value
RSI(int period, int smooth).Avg[int barsAgo]
RSI(IDataSeries inSeries, int period, int smooth).Avg[int barsAgo]

Return value

double

When using this method with an index (e.g. RSI(14,3)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

smooth Number of periods for the smoothing

Visualization

Relative Strength Index (RSI)

Example

//Output for the RSI
Print("The current value for the RSI is: " + RSI(14, 3)[0]);

//Output for the average line
Print("The current value for the AVG line is: " + RSI(14, 3).Avg[0]);

Relative Strength Levy (RSL)

Description

The concept of the Relative Strength according to R.A. Levy is that the past developments play a very important role in the strength that will be seen in the future. The current performance is compared to the past performance.

The calculation involves taking the weekly closes (or daily closes) and dividing them by the arithmetic mean of the closing prices for the examined period. The result is then balanced around the 10 marker, and an ordered list is created where the value of the highest RSL fills the first place.

Usage

RSL(int period)
RSLDataSeries inSeries, int period)
RSLnt period)[int barsAgo]
RSL(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. RSL(27)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Relative Strength Levy (RSL)

Example

//RSL value output
Print("The Relative Strength as calculated by Levy is " + RSL(27)[0]);

Relative Volatility Index (RVI)

Description

The Relative Volatility Index (RVI) has many similarities to the RSI indicator. Donald Dorsey developed the RVI, which uses the standard deviation instead of the daily price span. To determine the underlying volatility of the instrument, the RVI uses the standard deviation over a period of 10. The RSI indicator is then used on the results, which normalizes them. What comes from this is displayed on a scale of 1 to 100.

Interpretation

Values above 50 assume an increase in volatility. Values below 50 imply a drop in volatility. Dorsey recommends using the indicator as a filter for other indicators.

Further information

http://vtadwiki.vtad.de/index.php/Relative_Volatility_Index_%28RVI%29

Usage

RVI(int period)
RVI(IDataSeries inSeries, int period)
RVI(int period)[int barsAgo]
RVI(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. RVI(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Relative Volatility Index (RVI)

Example

//Output of the RVI value
Print("The current value for the RVI is: " + RVI(14)[0]);

ReversalBars

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

The Reversal Bars indicator helps the trader find reversal bars within a chart. The indicator has a plot, and outputs the value 1 for long reversal bars, -1 for short reversal bars and 0 when there are none present. Traders can make several adjustments such as colors, arrows that are shown, etc.

Interpretation

The interpretation of reversal bars is described in M. Voight’s book.

Usage

Reversalbars()
Reversalbars(IDataSeries inSeries)
Reversalbars()[int barsAgo]
Reversalbars(IDataSeries inSeries)[int barsAgo]
Reversalbars(IDataSeries inSeries)
Reversalbars(IDataSeries inSeries)[int barsAgo]

Return value

double

1 = long reversal bar

-1 = short reversal bar

0 = no reversal bar

When using this method with an index (e.g. Reversalbars()[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

Visualization

ReversalBars

Example

// Set CalculateOnClosedBar = true !!
if (Reversalbars()[0] == 1.0)
Print("The last bar is a long reversal bar.");

R-Squared

Description

This indicator belongs to the linear regression series. R-Squared is the correlation coefficient that specifies the quality of the linear regression line.

It is the calculation that gives R-Squared its name – the value is the square of the correlation coefficient, which in mathematics is prefixed with the Greek letter Rho (P).

See Linear Regression, LinRegSlope, LinRegIntercept.

Interpretation

The value of the oscillator fluctuates between 0 and 1. By default, the upper boundary line is located at 0.75, and the lower border is at 0.2. If the prices are in a sideways movement, the data is scattered around the regression line. R-Squared will have a value of 0 in the aforementioned situation. In a strong trend phase, the prices will remain within a tight range for an extended period of time; if these are located close to the regression line then the R-Squared indicator will have a value of 1. Stanley Kroll and Tuchar Chande used the correlation coefficient as a trend filter in their book “The new technical trader”.

Further information

http://www.blastchart.com/Community/IndicatorGuide/Indicators/LinearRegressionRSquared.aspx

Usage

RSquared(int period)
RSquared(IDataSeries inSeries, int period)
RSquared(int period)[int barsAgo]
RSquared(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. RSquared(8)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

R-Squared

Example

//Output for the value of R-Squared
Print("The current value of R-Squared is: " + RSquared(8)[0]);

StandardDeviation(StdDev)

Description

The Standard Deviation (StdDev) is a tool used in statistics and probability calculation. It measures the dispersion of the values of a random variable around its median value. The Standard Deviation is used for the calculation of many indicators, such as, for example, the Bollinger Bands.

Interpretation

A lower standard deviation implies that the data points are located very close to their median value. The trading application assumes that prices will return to their median value.

Further information

VTAD: http://vtadwiki.vtad.de/index.php/Standard_Abweichung

Usage

StdDev (int period)
StdDev (IDataSeries inSeries, int period)
StdDev (int period)[int barsAgo]
StdDev (IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. StdDev(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

StandardDeviation(StdDev)

Example

//Output for the StdDev
Print("The current value for the standard deviation is: " + StdDev(14)[0]);

Standard Error (StdError)

Description

Jon Anderson came up with the Standard Error Bands, which are similar to the Bollinger Bands, but with a different calculation. An upper and a lower boundary around a middle line create the bands – this is also known as the linear regression. The lower standard error band results from the subtraction of two standard errors from the final value of the regression line. Because individual closing prices can have a huge influence on the values of the bands, it is necessary to use a Simple Moving Average to smooth the data.

Interpretation

One of the applications of the standard error bands is the tightening of the bands when prices rise/fall. If the bands tighten, it signifies that a trend is currently in place. A strong trend will continue to tighten the bands.

Further information

http://www.forexrealm.com/technical-analysis/technical-indicators/standard-error-bands.html

Usage

StdError(int period)
StdError(IDataSeries inSeries, int period)
StdError(int period)[int barsAgo]
StdError(IDataSeries inSeries, int period)[int barsAgo]

//Upper band
StdError(int period).Upper[int barsAgo]
StdError(IDataSeries inSeries, int period).Upper[int barsAgo]

//Lower band
StdError(int period).Lower[int barsAgo]
StdError(IDataSeries inSeries, int period).Lower[int barsAgo]

Return value

double

When using this method with an index (e.g. StdError(21)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Standard Error (StdError)

Example

//Output for the values of the middle line
Print("The middle line is currently at: " + StdError(21)[0]);

//Output for the lower band
Print("The lower band of the standard error is currently at: " + StdError(21).Lower[0]);

//output for the upper band
Print("The upper band of the standard error is currently at: " + StdError(21).Upper[0]);

Stochastics

Description

The stochastic indicator was developed by George C. Lane in the 1950s. It belongs to the class “momentum indicators” (oscillators) and represents the current closing price in relation to a high or low area over a defined number of periods. The stochastic indicator is based on the observation that in an uptrend, the closing price is close to the daily high, while in a downtrend, the closing price is closer to the daily low. The stochastic indicator consists of two exponential Average Lines (%K and %D), both of which range between 0 and 100. There are two types of stochastic: the classic slow stochastic and the fast stochastic.

Fast stochastic: The %D line is the smoothing average of the %K line

Slow stochastic: The %D is the basis on which the smoothing average is calculated. The slow stochastic smoothes the fast stochastic, thus stabilizing the oscillator.

Interpretation

The closing prices found in the upper area imply an accumulation (buying pressure); the lower area represents selling pressure. The stochastic indicator is a classic oscillator, and is primarily used in sideways markets in order to determine the reversal points. Days with a stable trend will not provide the indicator with any relevant or valuable results/information.

Further information

VTAD: http://vtadwiki.vtad.de/index.php/Stochastik

Usage

Stochastics(int periodD, int periodK, int smooth)
Stochastics(IDataSeries inSeries, int periodD, int periodK, int smooth)

//For the %D line
Stochastics(int periodD, int periodK, int smooth).D[int barsAgo]
Stochastics(IDataSeries inSeries, int periodD, int periodK, int smooth).D[int barsAgo]

//For the %K line
Stochastics(int periodD, int periodK, int smooth).K[int barsAgo]
Stochastics(IDataSeries inSeries, int periodD, int periodK, int smooth).K[int barsAgo]

Return value

double

When using this method with an index (e.g. Stochastics(7,14,3)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

periodD Number of periods to be used for the %K smoothing

periodK Number of bars included in the %K calculation

smooth Number of periods for the smoothing of %D

Visualization

Stochastics

Example

//Output for the %K line
Print("The stochastic line %K is currently at: " + Stochastics(3, 14, 7).K[0]);

//Output for the %D line
Print("The stochastic line %D is currently at: " + Stochastics(3, 14, 7).D[0]);

Stochastics Fast

Description

See stochastics.

Interpretation

Closing prices that are constantly in the upper area indicate accumulation (i.e. buying pressure), whilst the distribution (i.e. selling pressure) is shown by an indicator value in the lower area.

Further information

VTAD: http://vtadwiki.vtad.de/index.php/Stochastik

Charttec: http://www.charttec.de/html/indikator_stochastics.php

Usage

StochasticsFast(int periodD, int periodK)
StochasticsFast(IDataSeries inSeries, int periodD, int periodK)

//For the %D line
StochasticsFast(int periodD, int periodK).D[int barsAgo]
StochasticsFast(IDataSeries inSeries, int periodD, int periodK).D[int barsAgo]

//For the %K line
StochasticsFast(int periodD, int periodK).K[int barsAgo]
StochasticsFast(IDataSeries inSeries, int periodD, int periodK).K[int barsAgo]

Return value

double

When using this method with an index (e.g. StochasticsFast(7,14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

periodD Number of periods for the smoothing of %K

periodK Number of periods included in the calculation of %K

Visualization

Stochastics Fast

Example

//Output for the %K line of the fast stochastic
Print("The stochastic line %K is currently at: " + StochasticsFast(3, 14).K[0]);

//Output %D line
Print("The stochastic line %D is currently at: " + StochasticsFast(3, 14).D[0]);

Stochastics RSI (StochRSI)

Description

Stochastics RSI is a calculation of the stochastic based on the RSI indicator.

Interpretation

The indicator provides fast and precise extreme values/points in the price movements. The StochRSI can be used as a trend filter in higher timeframes as well as a tool for better entry timing.

Further information

http://www.investopedia.com/terms/s/stochrsi.asp#axzz263tizhIG

Usage

StochRSI(int period)
StochRSI(IDataSeries inSeries, int period)
StochRSI(int period)[int barsAgo]
StochRSI(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. StochRSI(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Stochastics RSI (StochRSI)

Example

//Output for the StochRSI
Print("The current value for the StochRSI is: " + StochRSI(14)[0]);

Summation (SUM)

Description

Summation is the sum over a predefined number of periods.

Usage

SUM(int period)
SUM(IDataSeries inSeries, int period)
SUM(int period)[int barsAgo]
SUM(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. SUM(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Summation (SUM)

Example

// Sum of the volume for the last 10 trading days
Print(SUM(Volume,10)[0]);

SuperTrend

Description

The SuperTrend indicator was invented by a French trader. SuperTrend is similar to the Parabolic Stop and Reverse System (Parabolic SAR), and is based on the median values of the candles. It measures volatility as a span between high and low, not taking potential price gaps into account. The indicator, which originates from a starting value, continues to proceed in one direction until the market changes direction, combined with rising volatility. This causes the indicator to adjust its starting value to match that of the counter-direction. The indicator is programmed in such a way that nothing but the trend direction can bring about a change. Dropping volatility combined with movements against the trend direction cause the indicator to move horizontally.

Interpretation

There are multiple interpretations and applications for the SuperTrend. Forex traders prefer to trade the crosses directly. This way, the system will continuously be inside the market and only needs to be complemented by a stop and further trading logic settings. Analytically speaking, the SuperTrend indicator is only able to provide information about the current trend. If the market is above the indicator, then an uptrend exists, otherwise a downtrend is in force. The indicator can be used as an exit for additional trading systems, meaning that an open position can be closed if a trend change occurs.

Usage

SuperTrend(SuperTrendMode stMode, int length, double multiplier, SuperTrendMAType maType, int smooth)
SuperTrend(IDataSeries inSeries, SuperTrendMode stMode, int length, double multiplier, SuperTrendMAType maType, int smooth)
SuperTrend(SuperTrendMode stMode, int length, double multiplier, SuperTrendMAType maType, int smooth)[int barsAgo]
SuperTrend(IDataSeries inSeries, SuperTrendMode stMode, int length, double multiplier, SuperTrendMAType maType, int smooth)[int barsAgo]

//For the values of the uptrend:
SuperTrend(SuperTrendMode stMode, int length, double multiplier, SuperTrendMAType maType, int smooth).UpTrend[int barsAgo]
SuperTrend(IDataSeries inSeries, SuperTrendMode stMode, int length, double multiplier, SuperTrendMAType maType, int smooth).UpTrend[int barsAgo]

//For the values of the downtrend:
SuperTrend(SuperTrendMode stMode, int length, double multiplier, SuperTrendMAType maType, int smooth).DownTrend[int barsAgo]
SuperTrend(IDataSeries inSeries, SuperTrendMode stMode, int length, double multiplier, SuperTrendMAType maType, int smooth).DownTrend[int barsAgo]

Return value

double

When using this method with an index (e.g. SuperTrend(...).UpTrend[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

InSeries Input data series for the indicator
maType For the calculation of the MA, the following methods can be used:
SuperTrendMAType.HMA
SuperTrendMAType.SMA
SuperTrendMAType.SMMA
SuperTrendMAType.TEMA
SuperTrendMAType.TMA
SuperTrendMAType.VMA
SuperTrendMAType.VWMA
SuperTrendMAType.WMA

Also see: HMA, SMA, SMMA, TEMA, TMA, VMA, VWMA, WMA. Default: HMA | | multiplier | This is a multiplier for the internal calculation of the offset. This is only used when the method is set to ATR and DualThrust. (In the adaptive mode, the multiplier uses the Homodyne Discriminator) Default: 2.618 | | Period | Number of bars used for the calculation of the moving average Default: 14 | | smooth | Values for additional smoothing If no smoothing is necessary, this value can be set to 1 Default: 14 | | stMode | The following methods can be chosen: SuperTrendMode.ATR, SuperTrendMode.DualThrust, SuperTrendMode.Adaptive The Period Parameter will have a huge influence when the DualThrustMode is selected. The smaller the period, the tighter the indicator will follow price developments. Default: SuperTrendMode.ATR |

Visualization

SuperTrend

Example

if (Close[0] > SuperTrend(SuperTrendMAType.HMA, SuperTrendMode.ATR, 14, 2.618, 14).UpTrend[0])
  Print("The market is in an uptrend.");
if (Close[0] < SuperTrend(SuperTrendMAType.HMA, SuperTrendMode.ATR, 14, 2.618, 14).DownTrend[0])
  Print("The market is in a downtrend.");

SupportResistanceAreas

Description

This indicator draws support and resistance areas in the chart. There are 4 different types of possible supports and resistances, which are differentiated by various colors.

Support due to a lower high (ColorLowerHigh)

Support due to a lower low (ColorLowerLow)

Resistance due to a higher high (ColorHigherHigh)

Resistance due to a higher low (ColorHigherLow)

Interpretation

S/R zones play an important role in technical analysis. Clearly defined and identifiable support areas provide favorable entry opportunities, while resistance areas provide target zones to exit those trades. Once broken, these areas tend to reverse their function, meaning that a broken support zone becomes a resistance zone.

http://finanzportal.wiwi.uni-saarland.de/tech/Kapitel5_4.htm

Parameters

ATRRangeFactor Settings for the width of the support/resistance area as calculated by the ATR.
The smallest configurable value is 0.1; default is 0.3
Levels This setting defines how many S/R zones of the same type are displayed. The default is 3
Opacity Transparency of the bars to be drawn into the chart; 0 (transparent) – 255 (completely visible).
Default is 70
SensibilityFactor Defines the sensitivity of the S/R search.
The smallest setting is 1; the default is 5

Visualization

SupportResistanceAreas

Swing

Description

Based on the strength of the swing highs or the swing lows, the swing indicator draws a line at these points. The number of bars to the left and right of the extreme point is the determining factor for the strength. Methods for these indicators can also be implemented for other scripts.

Interpretation

The methods for these indicators can be used in scripts to determine the last extreme point and its corresponding price value. The highs and lows of these points may then be used as entry, stop or target markers.

Usage

//For a high
Swing(int strength).SwingHighBar(int barsAgo, int instance, int lookBackPeriod);
Swing(IDataSeries inSeries, int strength).SwingHighBar(int barsAgo, int instance, int lookBackPeriod);

//For a low
Swing(int strength).SwingLowBar(int barsAgo, int instance, int lookBackPeriod);
Swing(IDataSeries inSeries, int strength).SwingLowBar(int barsAgo, int instance, int lookBackPeriod);

Return value

double

When using this method with an index (e.g. Swing(5)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

When the current bar is smaller than the parameter strength, or if no swing high/low has been found, the return value is -1.

Parameters

barsAgo Starting point for the search
InSeries Input data series for the indicator
instance The number of occurrences of extreme points (1 is the last occurrence, 2 is the second last occurrence etc.)
length Number of bars included in the calculation
lookBackPeriod Number of bars in the past in which swing points will be searched for (search area)
strength Number of bars to the left and right of the extreme points

Visualization

Swing

Example

// Position and price of the last swing high
int barsAgo = Swing(5).SwingHighBar(0, 1, 10);
Print("The last swing high was " + barsAgo + " bars ago.");
Print("The last swing high was at " + High[barsAgo]);

Time-Series-Forecast (TSF)

Description

The Time-Series-Forecast is quite similar to a moving average. Here, the trend is established based on a regression equation that uses the smallest square formula. The goal of the TSF is to anticipate future price movements with the help of currently existing data.

Interpretation

The TSF reacts faster than the moving averages. These always have time delays when depicting the pre-existing trends. The TSF formula never allows the distance to the current price to become too large, thus permitting sharper trade reversal recognition.

An entry is placed when the price breaks the TSF line from bottom to top.

Further information

http://en.wikipedia.org/wiki/Time_series

Usage

TSF(int forecast, int period)
TSF(IDataSeries inSeries, int forecast, int period)
TSF(int forecast, int period)[int barsAgo]
TSF(IDataSeries inSeries, int forecast, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. TSF(3,14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

forecast Number of bars used for the forecast

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Time-Series-Forecast (TSF)

Example

//Output the TSF values
Print("The current value for the TSF is: " + TSF(3, 14)[0]);

Tools

Constant Lines

Description

The Constant Lines tool can draw a maximum of four freely configurable horizontal lines within a chart. In general, it is used to label certain price levels in order to keep an eye on them.

Usage

ConstantLines(double line1Value, double line2Value, double line3Value, double line4Value)
ConstantLines(double line1Value, double line2Value, double line3Value, double line4Value)[barsAgo]
ConstantLines(double line1Value, double line2Value, double line3Value, double line4Value).Line1[barsAgo]
ConstantLines(double line1Value, double line2Value, double line3Value, double line4Value).Line2[barsAgo]
ConstantLines(double line1Value, double line2Value, double line3Value, double line4Value).Line3[barsAgo]
ConstantLines(double line1Value, double line2Value, double line3Value, double line4Value).Line4[barsAgo]

Return value

double

When using this method with an index (e.g. ConstantLines(1,2,3,4)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Visualization

Constant Lines

CurrentDayOHL

Description

This function delivers the values for the open, high and low of the current day i.e. session.

CurrentDayOHL is intended for use with intraday data series.

See PriorDayOHLC, DayLines.

Parameter

inSeries Input data series for the indicator

Return value

double

When using this method with an index (e.g. CurrentDayOHL.CurrentOpen[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Usage

CurrentDayOHL()
CurrentDayOHL(IDataSeries inSeries)
int barsAgo = 0;
//For the open value
CurrentDayOHL().CurrentOpen[ barsAgo]
CurrentDayOHL(IDataSeries inSeries).CurrentOpen[ barsAgo]
//For the high value
CurrentDayOHL().CurrentHigh[ barsAgo]
CurrentDayOHL(IDataSeries inSeries).CurrentBarHigh[ barsAgo]


//For the low value
CurrentDayOHL().CurrentLow[ barsAgo]
CurrentDayOHL(IDataSeries inSeries).CurrentLow[ barsAgo]

Visualization

CurrentDayOHL

Example

Print("The low of the current session is at " + CurrentDayOHL().GetCurrentBar().Low[0]);

Daily Performance

Description

This indicator delivers information concerning the changes in the price movements based on either a past close or a current-day open in comparison to the current price level.

The Daily Performance can be displayed in points, ticks, percent, or a currency value.

Colors and other settings can be freely adjusted.

See Momentum, ROC.

Regarding usage with a scanner: To get a list of your favorite stocks and their daily percentual changes, please set CalculateOnFinishedBar to “False”, TimeFrame to “1 Day”, Calculation mode to “Percent” and Days ago to “0”.

settings

The result will look similar to this:

scanner

Usage

DailyPerformance(DailyPerformanceReference reference, DailyPerformanceCalculationMode mode, int daysAgo)
DailyPerformance(IDataSeries inSeries,DailyPerformanceReference reference, DailyPerformanceCalculationMode mode, int daysAgo)
DailyPerformance(DailyPerformanceReference reference, DailyPerformanceCalculationMode mode, int daysAgo)[int barsAgo]
DailyPerformance(IDataSeries inSeries,DailyPerformanceReference reference, DailyPerformanceCalculationMode mode, int daysAgo)[int barsAgo]

Return value

double

When using this method with an index (e.g. DailyPerformance(...)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

reference Possible values are: - DailyPerformanceReference.Open - DailyPerformanceReference.PreviousClose

mode Possible values are: - DailyPerformanceCalculationMode.Points - DailyPerformanceCalculationMode.Ticks - DailyPerformanceCalculationMode.Percent - DailyPerformanceCalculationMode.Currency

daysAgo Number of days in the past

Visualization

DailyPerformance

Example

//How many ticks are between today’s open and the current price?
DailyPerformance(DailyPerformanceReference.Open, DailyPerformanceCalculationMode.Ticks, 1)[0]

//By how much percent did the stock rise/fall since the last closing price?
DailyPerformance(DailyPerformanceReference.PreviousClose, DailyPerformanceCalculationMode.Percent, 1)[0]

//By how many points/ticks did the future deviate from the start of the trading week to the current value?
DailyPerformance(DailyPerformanceReference.PreviousClose, DailyPerformanceCalculationMode.Points, 3)[0]

//How many EURO/USD does the performance equal?
DailyPerformance(DailyPerformanceReference.PreviousClose, DailyPerformanceCalculationMode.Currency, 3)[0]

//How big is the overnight gap in comparison to the opening price?
DailyPerformance(DailyPerformanceReference.PreviousClose, DailyPerformanceCalculationMode.Points, 1)[0]

DailyQuoteMoves

Description

This indicator shows the daily price moves of the current market, starting at the zero line each day. With this indicator you can see if the Market is currently over/under water based on the perspective of the market open. e.g. the FDAX has the character that after reaching the 100, 200, 400 level, the market has a potential to turn.

Works only with intraday charts!

Usage

DailyQuoteMoves()
DailyQuoteMoves(IDataSeries inSeries)
DailyQuoteMoves()[int barsAgo]
DailyQuoteMoves(IDataSeries inSeries) [int barsAgo]

Return value

double

When using this method with an index (e.g. DailyQuoteMoves(...)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

Visualization

DailyQuoteMoves

Example

//How many ticks are in between closing price of current bar and opening price of the current day? If this bar is the first of the day, the difference will be shown Open-Close of the bar
DailyQuoteMoves()[0]

DayLines

Description

The DayLines indicator draws lines for the previous day’s high, low, and close. It also draws a line for the current day’s open. These lines often show a reaction to the market. Each line can be turned on or off, and the colors and line strengths can be freely set.

See CurrentDayOHL, PriorDayOHLC.

Visualization

DayLines

DayLinesAdv

Description

DayLinesAdv draws horizontal lines for the previous day’s high, low, and close, as well as the current day’s open.

CurrentDayOHL, PriorDayOHLC.

DaysBack parameter

The DaysBack parameter sets the number of days in the past for which the lines are to be placed onto the chart.

Include Weekends parameter This parameter manages the interaction with weekend price data. If IncludeWeekends = true, the price data for a trading session resulting from the weekend data is added to the last trading session.

This is generally applicable to traders in different time zones. For example, a trader located in Germany will receive EURUSD data that beginning on Sunday evenings in America. To add the couple of hours that are transcribed on Sunday to the previous Friday’s session, you simply need to set IncludeWeekends = true. The first picture shows IncludeWeekends = false:

IncludeWeekends = false

The second picture shows IncludeWeekends = true:

IncludeWeekends = true

Show Prices parameter If set to “true”, prices are displayed in addition to the line itself.

prices are displayed

Extend high lines and Extend low lines parameters. If set to “true”, the highs and lows that have not yet been „breached“ by the price will be extended onto the right-hand side of the chart using dotted lines.

highs and lows

GetDayBar

Description

The function GetDayBar() outputs all values (open, high, low, close, time, median, typical, volume, and weighted) for a specified past or current day i.e. session. GetDayBar() is not intended to be used inside the chart. For this purpose, DayLinesAdv should be used instead. GetDayBar is mainly used as a high-performance replacement for PriorDayOHLC.

Several data feed providers also offer historical data, in which case we recommend that you use GetDayBar. If it is intraday data that is offered, it still works adequately to use PriorDayOHLC.

If the outputted data varies, the main cause is normally assumed to be the difference between Session Begin and Session End.

Parameters

daysAgo Number of days in the past (0 for the current value)

Return value

DateTime for time double for all other values

For daysAgo = 0, the following applies: Close = current price (for CalculateOnClosedBar = false) Time = time of the current day’s open All other values are calculated using intraday data.

Usage

GetDayBar (int daysAgo)

Example

[TimeFrameRequirements("1 day")]
public class xy : UserIndicator
{
  int daysAgo = 5;
  double historicalClose = Instrument.Round2TickSize(GetDayBar(daysAgo).Close);
}

protected override void OnStart()
{
  Print("The closing price from " + daysAgo + " days ago was at " + historicalClose);
}

Important: The attribute TimeFrameRequirements must also always be used for the class doing the calling up (in the above example, class xy) if the indicator uses Multibars.

Info

Description

Info is not an indicator in the classic sense of the word, but is actually more similar to a tool. Depending on the underlying instrument, the background of the chart may show additional information.

Visualization

Info

Maximum (MAX)

Description

Max (MAX) delivers the highest value for a predefined number of periods.

Usage

MAX(int period)
MAX (IDataSeries inSeries, int period)
MAX (int period)[int barsAgo]
MAX (IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. MAX(Close, 10)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Maximum (MAX)

Example

// Output of the highest value of the last 20 periods
// The output is identical to high [GetSerieHighestValue(High,20)]
Print("The highest value of the last 20 periods is " + MAX(High, 20)[0]);

Minimum (MIN)

Description

Minimum (MIN) outputs the lowest value for a predefined number of periods.

Usage

MIN (int period)
MIN (IDataSeries inSeries, int period)
MIN (int period)[int barsAgo]
MIN (IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. MIN(Close, 10)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Minimum (MIN)

Example

// Outputs the lowest value for the last 20 periods
Print("The lowest value of the last 20 periods is " + MIN(Low, 20)[0]);

MTFBoxes

Description

What MTFBoxes does is to draw a colored area behind the bars that signify a candle from a higher timeframe. This therefore makes it possible to depict an hourly candle inside a 5-minute chart. The area would contain all 5-minute bars that are located within said hourly candle.

The area turns greener if the candle of the higher timeframe is rising. A Doji would be shown in grey.

Parameters

TimeFrame Timeframe of the “virtual” candle (second, minute, hour, day, week, month) TimeFrameValue Value of the timeframe (number)

Visualization

MTFBoxes

PriceLine

Description

PriceLine is not so much an indicator, but more of a tool. It places a horizontal line on top of the current market price within the chart. The colors and line widths are freely configurable.

Visualization

PriceLine

PriorDayOHLC

Description

PriorDayOHLC shows the values for yesterday’s (i.e. the previous session’s) open, high, low, and close. PriorDayOHLC works best when used together with the intraday data series.

PriorDayOHLCext PriorDayOHLCext For people in different time zones, PriorDayOHLCext makes it possible to set the IncludeWeekend parameter to “true”, which is helpful because all data originating from a Saturday or Sunday is treated as if it comes from the previous Friday’s session.

See CurrentDayOHL, DayLines.

Parameter

inSeries Input data series for the indicator

Return value

double

When using this method with an index (e.g. PriorDayOHLC().PriorHigh[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Usage

PriorDayOHLC()
PriorDayOHLC(IDataSeries inSeries)

//For the value of open
PriorDayOHLC().PriorOpen[int barsAgo]
PriorDayOHLC(IDataSeries inSeries).PriorOpen[int barsAgo]

//For the value of high
PriorDayOHLC().PriorHigh[int barsAgo]
PriorDayOHLC(IDataSeries inSeries).PriorHigh[int barsAgo]

//For the value of low
PriorDayOHLC().PriorLow[int barsAgo]
PriorDayOHLC(IDataSeries inSeries).PriorLow[int barsAgo]

//For the value of close
PriorDayOHLC().PriorClose[int barsAgo]
PriorDayOHLC(IDataSeries inSeries).PriorClose[int barsAgo]

Visualization

PriorDayOHLC

Example

// Value from the previous trading day
Print("Yesterday’s open was " + PriorDayOHLC().PriorOpen[0]);
Print("Yesterday’s high was " + PriorDayOHLC().PriorHigh[0]);
Print("Yesterday’s low was " + PriorDayOHLC().PriorLow[0]);
Print("Yesterday’s close was " + PriorDayOHLC().PriorClose[0]);

PriorDayOHLCext

See PriorDayOHLC.

SessionBreakLines

Description

The indicator SessionBreakLines draws a vertical line at the first candle of a new trading session. What is special about this indicator is that you can manually set how the so-called “weekend sessions” should be handled. If the parameter IncludeWeekends is set to “true”, then the Sunday sessions will be added to the Friday’s session. See PriorDayOHLC.

Visualization

SessionBreakLines

ShowBidAsk

Description

The ShowBidAsk indicator displays the current bid and ask prices as well as the corresponding volume within the lower part of the chart. It also shows changes in volume even if a trade has not occurred.

Visualization

ShowBidAsk

TickCounter

Description

TickCounter provides information regarding the current number of ticks that are contained within the bar. The indicator can not only count starting from 0, but can also be set to count from a specified number down to 0. TickCounter can display the value either as absolute or as a percentage. It only works with candle charts in which the bars are established based on a fixed number of ticks.

When programming your own scripts, please use Bars, TicksCountForLastBar or Bars, LastBarCompleteness.

Visualization

TickCounter

True Strength Index (TSI)

Description

The True Strength Index (TSI) is a momentum indicator. It is used as an indicator for trend direction and for displaying overbought or oversold conditions. As a rule, momentum oscillators preemptively indicate price changes, whereas moving averages generally lag behind the price. The TSI brings together the advantages of these two indicator groups.

Interpretation

The TSI line moves between 100 and -100. Most values are between +25 and -25. These trigger lines can be used to anticipate overbought or oversold situations. A rising TSI signals an uptrend, while falling TSI suggests a downtrend.

Further information

http://en.wikipedia.org/wiki/True_strength_index

Usage

TSI(int fast, int slow)
TSI(IDataSeries inSeries, int fast, int slow)
TSI(int fast, int slow)[int barsAgo]
TSI(IDataSeries inSeries, int fast, int slow)[int barsAgo]

Return value

double

When using this method with an index (e.g. TSI(3,14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

fast Number of bars included in the calculation of the fast EMA

slow Number of bars included in the calculation of the slow EMA

Visualization

True Strength Index (TSI)

Example

//Output of the current value for the True Strength Index (TSI)
Print("The current value for the TSI is " + TSI(3, 14)[0]);

Ultimate Oscillator

Description

Larry Williams developed the Ultimate Oscillator, which was first published in 1985. The Ultimate Oscillator is calculated by means of taking the weighted sum of three oscillators in different timeframes. These three timeframes are the short-term, middle and long-term market cycles. The typical period lengths used are 7, 14 and 28, and the value of the indicator moves between 0 and 100. Values above 70 signify an overbought situation, and values below 30 show that it is oversold.

Interpretation

Williams defined the following criteria for a buy signal:

A bullish divergence between price and oscillator can be observed, meaning that the market makes a new low but the oscillator remains unchanged.

While this divergence is forming, the oscillator falls below 30.

The oscillator will then resume its upward move towards the high at which it peaked before the divergence began forming.

The buy signal is created when the price breaches that last high.

The long position is closed if the oscillator rises above 70 or if the oscillator rises above 50 and then falls back below 45. A sell signal consists of bearish divergences forming above 70. These positions are closed once the 30 level marker is breached.

Usage

UltimateOscillator(int fast, int intermediate, int slow)
UltimateOscillator(IDataSeries inSeries, int fast, int intermediate, int slow)
UltimateOscillator(int fast, int intermediate, int slow)[int barsAgo]
UltimateOscillator(IDataSeries inSeries, int fast, int intermediate, int slow)[int barsAgo]

Return value

double

When using this method with an index (e.g. UltimateOscillator (5)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator
fast Number of bars for the calculation of the short-term oscillator
intermediate Number of bars for the calculation of the intermediate oscillator
slow Number of bars for the calculation of the slow indicator

Visualization

Ultimate Oscillator

Example

// Output of the values for the UltimateOscillator with settings of 7,14,28
Print("The current value for the Ultimate Oscillator is " + UltimateOscillator(7, 14, 28)[0]);

Volume (VOL)

Description

This is the volume for the shares, futures, ETFs and so on that are traded within a specified time period.

Further information

http://de.wikipedia.org/wiki/Volumenanalyse

Usage

VOL()
VOL(IDataSeries inSeries)
VOL()[int barsAgo]
VOL(IDataSeries inSeries)[int barsAgo]

Return value

double

When using this method with an index (e.g. VOL()[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameter

inSeries Input data series for the indicator

Visualization

Volume (VOL)

Example

//Output of the current volume
Print("The current volume is " + VOL()[0]);

Volume Moving Average (VOLMA)

Description

The VOLMA calculation is carried out by applying an exponential moving average to the respective volume of each period, that is to say its EMA (volume).

Caution: In trading literature, the Volume Moving Average is often confused with the abbreviation for the Variable Moving Average (VMA).

Interpretation

The VOLMA indicator helps you to find and assess the relative volume of a period.

Some simple guidelines should be followed:

The volume should be above the VOLMA at a break

After a volume spike (high), an exhaustion phase will kick in. The exhaustion can lead to a complete reversal of the price movement. Generally speaking, however, this is simply a resting phase

After three successive volume spikes, it becomes much less likely that the situation will continue in the same direction

Here, you can find more general information about Moving Averages.

Further information

Volumen-Analyse.de: http://www.volumen-analyse.de

Usage

VOLMA(int period)
VOLMA(IDataSeries inSeries, int period)
VOLMA(int period)[int barsAgo]
VOLMA(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. VOLMA(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Volume Moving Average (VOLMA)

Example

//Output for the value of the Volume Moving Average (VOLMA)
Print("The current VOLMA value is " + VOLMA(14)[0]);

Volume Oscillator

Description

The Volume Oscillator makes use of the difference between the moving averages based on the trading volume, with a similar result to the MACD or to any other oscillator in which moving averages are used for calculation.

Interpretation

The Volume Oscillator is used to determine the trend strength. If developments in the price of the share are accompanied by disproportionate volume oscillator values, this should be regarded as highly relevant. In this way, the indicator can be used to filter out false signals. Values above zero mean that the shortest moving average of the volume is above the long-term moving average. IsSerieRising prices with a higher short-term volume indicate a bullish scenario.

Usage

VolumeOscillator(int fast, int slow)
VolumeOscillator(IDataSeries inSeries, int fast, int slow)
VolumeOscillator(int fast, int slow)[int barsAgo]
VolumeOscillator(IDataSeries inSeries, int fast, int slow)[int barsAgo]

Return value

double

When using this method with an index (e.g. VolumeOszillator(12,26)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

fast Number of bars for the calculation of the fast moving average

slow Number of bars for the calculation of the slow moving average

Visualization

Volume Oscillator

Example

//Output of the current value for the Volume Oscillator
Print("The current value for the Volume Oscillator is: " + VolumeOszillator(12,26)[0]);

Volume Profile

Description

The VolumeProfile indicator displays the real-time volume profile as a vertical histogram on the chart. In this histogram, every bar depicts the cumulative traded volume for a certain price level. The starting bar for the calculations is labeled with a “#”. These bars inside the histogram have various colors: green indicates executions at or above the ask, which are interpreted as buys. Red means trades at or below the bid, which are interpreted as sells. Grey signifies neutral executions. It is important to note that the Volume Profile indicator only works together with a real-time data feed. After changes have been made in the properties window, the indicator is restarted and all values that have been calculated up to this point are lost.

See: VolumeZones

Interpretation

Prices with especially high trading volume will have a more satiated accumulation and distribution at their respective levels. This leads to price resistance/support zones being formed.

Visualization

Volume Profile

Volume Rate of Change (VROC)

Description

The Volume Rate of Change (VROC) is almost exactly the same as the ROC indicator, with the exception that instead of price data, volume data (VOL) is used. A smoothing component is also applied.

Further information

http://www.shareholder24.de/boersensoftware-wiki/pages/viewpage.action?pageId=9207904

Usage

VROC(int period, int smooth)
VROC(IDataSeries inSeries, int period, int smooth)
VROC(int period, int smooth)[int barsAgo]
VROC(IDataSeries inSeries, int period, int smooth)[int barsAgo]

Return value

double

When using this method with an index (e.g. VROC(14,3)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

smooth Number of Bars included in the calculation for the smoothing

Visualization

Volume Rate of Change (VROC)

Example

//Output of the current value for the Volume ROC
Print("The current value for the Volume ROC is: " + VROC(14, 3)[0]);

VolumeArea

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

Similarly, with this indicator you can also have your own volume profiles displayed. Here you can now determine the start and end time completely freely by clicking on your desired position. There are no restrictions as to where the calculation should start and end. In the upper right corner you have the setting options with which you can switch between the profile types (for a description of these, read more under VolumeSessionPro). With a click on the little red “+” under the profile settings, you can add a further volume profile to your chart; you do so by once again determining the start and end time by left-clicking. The settings and the display of the indicator are exactly equivalent to the VolumeSessionPro: via ProfileType you select which calculation method should be used; via ValueArea you determine the percentage for what portion of the volume area should be colored with the highest activity. The most effective way of working with the VolumeArea is to place this indicator in the action bar and assign it a hot key. In this way, if necessary, the indicator can be quickly called up and you can specify the desired volume area.

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

VolumeArea

Example

to be announced

VolumeGraph

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

This indicator contains a normal volume histogram, but here, the coloring takes place based on price trends. The VolumeGraph determines short- or long-term price trends; you can set the sensitivity for this using the parameter “SlopeLength”. A high value delivers long-term trends; low values represent short-term price trends. Using the setting “Exponential”, you can select whether the calculation for trend determination should be based on an exponential (=True) or linear (=False) algorithm. This is about the fine-tuning, and no large changes should be expected with this parameter. In addition, the volume histogram also contains a moving average, for which you can enter the period using the parameter “AvgLength”.

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

VolumeGraph

Example

to be announced

VolumeKeltnerChannels

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

The VolumeKeltnerChannels are a great tool to determine very high or very low volume in comparison to past periods. Beginning with an upper Keltner channel line calculated with volume data, this line is shifted ever further upwards or downwards using special multipliers. Volume that is higher than the highest Keltner channel line can be interpreted as extremely high volume that shows that huge numbers of trades have been carried out in the current price period and that an unusually large number of traders are buying or selling positions at the current price level.

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

VolumeKeltnerChannels

Example

to be announced

VolumeRiseFall

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

The VolumeRiseFall indicator is a normal volume display as volume bars, with, however, a different coloring than normal. A volume bar is drawn in green when the volume of this bar is higher than the volume of the previous bar, meaning that rising volume is present. A volume bar is drawn in gray when the volume of this bar is lower than the volume of the previous bar, thereby showing falling volume.

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

VolumeRiseFall

Example

to be announced

VolumeSentimentLong

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

This indicator detects bullish volume activity based on the analysis of the volume of a period, the price span of a bar and the close of the bar (=VolumeSpreadAnalysis).

It screens for 3 signals (listed are the sub-criteria that must be met for the respective signal):

  • SellingClimax (dark green) 6.11..1. Lowest low since 50 periods 6.11..2. Bar with large range 6.11..3. Extremely high volume

  • DemandComingIn (lime green) 6.11..1. UpBar (current close larger than previous close) 6.11..2. Previous Bar: DownBar (close smaller than previous close) 6.11..3. Previous Bar: Bar with large range 6.11..4. Previous Bar: Above-average high volume

  • BagHolding (light green) 6.11..1. Lowest low since 50 periods 6.11..2. DownBar 6.11..3. Bar with small range 6.11..4. Above-average high volume 6.11..5. Close larger than or equal to the middle of the bar

The VolumeSentiments provide the foundation for the calculation of the volume condition; see point 5. When a bullish VolumeSentiment occurs, the bar is colored in the respective color of the signal; you can change this color in the parameter setting

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

VolumeSentimentLong

Example

to be announced

VolumeSentimentShort

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

This indicator is the counterpart to the VolumeSentimentLong and detects bearish volume activity based on the analysis of the volume of a period, the price span of a bar and the close of the bar (=VolumeSpreadAnalysis).

It screens for 3 signals (listed are the sub-criteria that must be met for the respective signal):

  • BuyingClimax (dark red) 6.12..1. Highest high since 50 periods 6.12..2. Bar with large range 6.12..3. Extremely high volume

  • SupplyComingIn (red) 6.12..1. DownBar 6.12..2. Previous Bar: UpBar 6.12..3. Previous Bar: Bar with large range 6.12..4.Previous Bar: Above-average high volume

  • EndOfRisingMarket (coral) 6.12..1. Highest high since 50 periods 6.12..2. UpBar 6.12..3. Bar with small range 6.12..4.Above-average high volume 6.12..5.Close smaller than or equal the middle of the bar

The VolumeSentiments provide the foundation for the calculation of the volume conditions; see point 5. When a bearish VolumeSentiment occurs, the bar is colored in the respective color of the signal; you can change this color in the parameter settings.

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

VolumeSentimentShort

Example

to be announced

VolumeSessionPro

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

This indicator is equivalent to the well-known VolumeProfile indicator with a display for a specific time span (session). You can determine the start time and the length of a session however you wish. For each session, the VolumeProfile is then shown. Use this indicator only in timeframes smaller than 1 day; the smaller the timeframe selected, the more detailed the display of the VolumeProfile. The price at which the most volume was traded in the respective session is shown as a red bar. The price area in which, for example, 70% of the trading activity for the respective session took place, is colored light blue. You can determine this percentage yourself as you wish under the parameter “ValueArea”. Furthermore, you have four different options for displaying the volume information:

Furthermore, you have four different options for displaying the volume information:

4.1.1. VOC (Volume on close): Loads the entire volume of a bar at the closing price of this bar – e.g. if a 5-minute bar has a volume of 280 and a range of 1.5 points with a closing price at 1534.25, all 280 volume units are counted at the closing price of 1534.24.

4.1.2. TPO (Time price opportunity): This method does not take the actual traded volume into account, but instead counts an individual volume unit for each price in the traded range of the bar – e.g. if a 5-minute bar has its high at 1534 and its low at 1532.5, then one volume unit is counted for each of the following prices: 1532.50, 1532.75, 1533.0, 1533.25, 1533.50, 1533.75, and 1534.

4.1.3. VWTPO (Volume weighted time price opportunity): This version distributes the traded volume of a bar across its price range – e.g. if a 5-minute bar exhibits a volume of 280 with a range of 1.5 points, with its high at 1534 and low at 1532.5, then 40 volume units (=280/7) are added to each of the seven prices in this range: 1532.50, 1532.75, 1533.0, 1533.25, 1533.50, 1533.75, and 1534.

4.1.4. VTPO (Volume time price opportunity): Here, the traded volume is added to each price of the range – e.g. if a 5-minute bar has 280 volume units, a range of 1.5 points with a high at 1534 and low at 1532.5, then 280 volume units are added to each of the seven prices of the range:: 1532.50, 1532.75, 1533.0, 1533.25, 1533.50, 1533.75, and 1534.

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

VolumeSessionPro

Example

to be announced

VolumeTickSpeed

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

ATTENTION! You can only use this indicator in the tick chart! The indicator measures the number of ticks that are traded during a number of seconds defined by the user. You can set the number of seconds under the parameter “Period”. A high tick speed can, therefore, be equated with high trading intensity, which can in turn often be observed at turning points in the market. With the parameter “LimitValue”, you can specify from which number of ticks during the selected period the background should be colored in order to display extreme values.

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

VolumeTickSpeed

Example

to be announced

VolumeUDR

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

The VolumeUpDownRatio is the relationship between UpVolume and DownVolume, displayed as an oscillator. Volume is classified as UpVolume when the current close of the price candle is located above the close of the prior candle; the opposite applies for DownVolume. Values above 80 are to be graded as a bearish signal; values under 20 as a bullish signal. Besides this, a moving average can be shown, which can serve as an additional signal generator.

  • Using “DrawCandleOutline”, you can have the border of your candles colored accordingly when bullish/bearish extreme values occur.

  • PriceWeightChange regulates whether you would like to have the weighted change of the market price flow into the calculation of the indicator.

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

VolumeUDR

Example

to be announced

VolumeUpDown

Description

This indicator is a variation of the volume indicator, with the slight difference that the volume bars are shown in different colors depending on whether the price movement forms an up or down bar. An up (rising) bar shows the volume in green, while a down (falling) bar shows the volume in red. A Doji, where open = close, shows the volume in blue.

Usage

VolumeUpDown()
VolumeUpDown(IDataSeries inSeries)
VolumeUpDown()[int barsAgo]
VolumeUpDown(IDataSeries inSeries)[int barsAgo]

Return value

double

When using this method with an index (e.g. VolumeUpDown()[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameter

inSeries Input data series for the indicator

Visualization

VolumeUpDown

Example

//Output of the current volume
Print("The current volume is " + VolumeUpDown()[0]);

Volume Zones

Description

This indicator draws a histogram on the left side of the chart. This histogram contains the historical volume, and inside the histogram, the length of the bars shows the cumulative volume. Traders can configure the price series (open, high, low etc.) with the help of the properties dialog box. An up bar (where the close is above the open) shows the bar in green, and falling bars are displayed in red. The indicator is only designed to be used with historical data. In order to view volume changes in real-time, it is wise to consider using the VolumeProfile.

VolumeZoneOscillator

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

The VolumeZoneOscillator divides the volume activity into UpVolume and DownVolume, similarly to the VolumeUDR. Volume is ranked as UpVolume when the current closing price is located above the prior closing price; vice versa for DownVolume. The oscillator calculated hereby outputs relative percentage values. An instrument is in a positive trend when the VolumeZoneOscillator rises above a level of 5% and vice versa in a negative trend, when it falls below -5%. Values above 40% show overbought situations, while values above 60% are an indication for an extreme exaggeration in the market. On the other hand, values smaller than -40% are deemed oversold and values smaller than -60% to be classified as enormously oversold and exaggerated.

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

VolumeZoneOscillator

Example

to be announced

Williams %R

Description

Larry Williams developed the Williams %R. It is a momentum indicator, and is the inverse of the Fast Stochastic Oscillator. Williams %R, which is also called simply %R, reflects the level of the close relative to the highest high for the look-back period. The Stochastic Oscillator, on the other hand, reflects the level of the close relative to the lowest low. %R multiplies the raw value by -100 as a means of correcting for the inversion. This means that the Fast Stochastic Oscillator and Williams %R actually produce the exact same lines, with different scaling. The Williams %R fluctuates between 0 and -100. Values between 0 to -20 are deemed overbought, and values from -80 to -100 are seen as oversold. Naturally, signals taken from the Stochastic Oscillator can also be applied to Williams %R.

Interpretation

As with the Stochastic Oscillator, Williams %R reflects the level of the close relative to the high-low range over a given period of time. Assume that the highest high equals 110, the lowest low equals 100 and the close equals 108. The high-low range is 10 (110 - 100), which is the denominator in the %R formula. The highest high less the close equals 2 (110 - 108), which is the numerator. 2 divided by 10 equals 0.20. Multiply this number by -100 to get -20 for %R. Williams %R would equal -30 if the close was 103 (0.30 x -100).

The centerline, -50, is an important level to watch. Williams %R moves between 0 and -100, which makes -50 the midpoint. Think of it as the 50 yard line in football. The offense has a higher chance of scoring when it crosses the 50 yard line. The defense has an edge as long as it prevents the offense from crossing the 50 yard line. A Williams %R cross above -50 signals that prices are trading in the upper half of their high-low range for the given look-back period. This suggests that the cup is half full. Conversely, a cross below -50 means prices are trading in the bottom half of the given look-back period. This suggests that the cup is half empty.

Low readings (below -80) indicate that the price is near its low for the given time period. High readings (above -20) indicate that the price is near its high for the given time period.

Further information

http://www.broker-test.de/finanzwissen/technische-analyse/williams-percent-r/

Usage

WilliamsR(int period)
WilliamsR(IDataSeries inSeries, int period)
WilliamsR(int period)[int barsAgo]
WilliamsR(IDataSeries inSeries, int period)[int barsAgo]

Return value

double

When using this method with an index (e.g. WilliamsR(14)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

Parameters

inSeries Input data series for the indicator

period Number of bars included in the calculations

Visualization

Williams %R

Example

WilliamsR(int period)
WilliamsR(IDataSeries inSeries, int period)
WilliamsR(int period)[int barsAgo]
WilliamsR(IDataSeries inSeries, int period)[int barsAgo]

WyckoffWave

The installation of the Technical Analysis Package is required in order to access this indicator.

Description

The WyckoffWave indicator adds the volume for each following bar until a price wave is over / finished. You can set the sensitivity of the price waves. When the volume of a wave rises to particularly high values, is it very often because a turning point in the chart has been reached. When the volume bars are colored red, we are dealing with a short wave; green volume bars indicate a long wave.

Using the parameter “MedianPeriod” you can select how sensitively the indicator should determine the individual price waves. The smaller the value, the larger the price waves that the indicator calculates.

The parameter Poles serves to fine-tune the display of the volume waves; you can select a parameter between 1-4. Changing this value usually causes only imperceptible changes.

Parameters

to be announced

Return value

to be announced

Usage

to be announced

Visualization

WyckoffWave

Example

to be announced

ZigZag

Description

The ZigZag indicator searched for extreme points in different timeframes. It finds the extreme points by using threshold values that traders themselves define. These specified threshold values determine the extent to which the market direction needs to change before the ZigZag line alters its orientation and forms a further extreme point.

Interpretation

The previous extreme values (local highs or lows) are ideally suited for either entries or stop targets.

Caution: The ZigZag is not an indicator in the common sense. Position and direction of the zigzag can change retrospectively (repainting indicator).

Further information

http://www.robotrading.de/indikatoren/zig-zag-indikator-zeigt-hoch-und-tief-punkte-im-forex-markt

Usage

//For the upper extreme value
ZigZag(DeviationType deviationType, double deviationValue, bool useHighLow).ZigZagHigh[int barsAgo]
ZigZag(IDataSeries inSeries, DeviationType deviationType, double deviationValue, bool useHighLow).ZigZagHigh[int barsAgo]

//For the lower extreme value
ZigZag(DeviationType deviationType, double deviationValue, bool useHighLow).ZigZagLow[int barsAgo]
ZigZag(IDataSeries inSeries, DeviationType deviationType, double deviationValue, bool useHighLow).ZigZagLow[int barsAgo]

Return value

double

When using this method with an index (e.g. ZigZag(...)[int barsAgo] ), the value of the indicator will be issued for the referenced bar.

A return value of 0 indicates that no high or low point has been found yet.

Parameters

inSeries Input data series for the indicator
deviationType The change in points or percent
DeviationType.Points and DeviationType.Percent
deviationValue Value of the deviation
useHighLow Defines whether the high/low of a bar will be used for extreme values or if you want to use closing prices instead

Visualization

ZigZag

Example

//Output of the market value for the last high point
Print("The last high of the ZigZag indicator was at " + ZigZag(DeviationType.Percent, 1, true).ZigZagHigh[0]);

// Output of the market value for the last low point
Print("The last low of the ZigZag indicator was at " + ZigZag(DeviationType.Percent, 1, true).ZigZagLow[0]);