MotiveWave Docs
MotiveWave.com
  • User Guide
    • Welcome
    • Quick Start Guide
      • Getting Started
      • Installation
      • Customization Options
      • Advanced Features
      • Troubleshooting and Support
      • Next Steps
    • Console Overview
      • Preferences
      • Changing the Look and Feel
      • Desktops
      • Quote Sheets
      • Backup and Restore
      • Repository
      • Email Configuration
      • Docking Framework Guide
        • Introduction
        • Stations
        • Pages
        • Layouts
        • Customization
    • Accounts Panel
      • Simulated Account
      • Commissions
    • Alerts
    • Charts
      • Settings
      • Chart Spacing
      • Bar Sizes
      • Importing Data
      • Exporting Data
      • Birds Eye View
      • Cursor Data
      • Depth Of Market
      • Chart Labels
      • News
      • Watermark
      • Scaling
      • Analyses
      • Ratios
      • Time and Price Guides
      • Percent Change Charts
      • Software Development Kit
      • Lock Studies
      • Lock Scroll
      • Study Templates
      • Linking Charts
      • Working With Chart Windows
      • Ticker Tape
      • Chart Trading
      • Data Export Groups
      • Analyses Guide
        • Introduction
        • Managing Analyses
        • Sharing Analyses
    • Components
    • Depth Of Market
    • Elliott Wave
    • Hurst Cycles
      • Introduction
      • Study Overview
      • Using the Hurst Cycle Study
    • Instruments
      • Custom Instruments
    • Option Chain
    • Order Flow
      • Introduction
      • Time Price Opportunity (TPO) Study
      • Volume Imprint
      • Depth of Market
      • Time and Sales
      • Delta Volume
      • Cumulative Delta
      • Bid/Ask Volume
      • Speed of Tape
      • DOM Power
      • Order Heatmap
      • Big Trades
      • Speed Gauges
      • Components
    • Pages
    • Preferences
      • General
      • Theme
      • Chart
      • Toolbar
      • Sounds
      • Ratios
      • Elliott Wave
      • Harmonics
      • Historical Data
      • Orders
      • Alerts
      • Email
      • Trade History
      • Buy/Sell
    • Replay Mode
    • Scanner
      • Scanner
      • Creating a Scan
      • Executing a Scan
      • Editing a Scan
      • Elliott Wave Scanner
      • Harmonic Scanner
      • Study Scanner
    • SDK Programming Guide
      • Preface
      • Change History
      • Introduction
      • Fundamental Classes
      • Overlay Example
      • Study Plot Example
      • Drawing Figures
      • Signals
      • Tick Data
      • Strategies
      • Logging
      • Internationalization
      • Deployment
      • Environment Setup
    • Shortcuts
    • Strategies & Backtest
      • Strategy Back Testing
      • Creating a Strategy Analysis
      • Strategy Analysis
      • Strategies
    • Studies
    • Time and Sales
    • Tool Bar
    • Trade Report
    • Watch List
    • Workspaces
  • Release Notes
    • Release Notes
    • What's New In Version 6.5
    • What's New in Version 6.4
    • What's New in Version 6.3
    • What's New in Version 6.1
    • What's New in Version 6.0
  • Knowledge Base
    • Getting Started
      • Add a Symbol to a Watch List
      • Create a New Page
      • Create a New Workspace
      • Free Data Sources
      • Linux Installation
      • Resize Console Panels
      • Set Up a Simulated Account
      • Does MotiveWave Come With Data?
      • Can MotiveWave Be Used on Multiple Computers?
      • Futures Symbol Table
    • Connection
      • Connection Details
      • Add a Connection to a Workspace
      • Rithmic - Connection Issues and Troubleshooting
      • Connect MotiveWave to R|Trader Pro Gateway
      • GAIN Connection
      • Indian Market Connections
      • Interactive Brokers Connection
        • Troubleshooting Interactive Brokers Connection
        • Historical Data is Slow with Interactive Brokers
      • CQG Symbology
      • TD Ameritrade Search
      • Rithmic Eurex Symbology
      • Computer Sleep Mode
      • IQFeed Data
      • Another Instance of MotiveWave Is Using License Key
    • Workspace
      • Add a Connection to a Workspace
      • Create a New Workspace
      • Create a Workspace Backup
      • Restore a Workspace Backup
      • Switch Connections in a Workspace
      • Workspaces Not Showing Up
    • Charts
      • Adjust for a Stock Split
      • Assign Trading Hours to an Instrument
      • Component and Study Visibility
      • Different Charts for the Same Instrument
      • Make Studies Stick to a Chart
      • Trend Lines Don't Line up on Different Bar Sizes
      • Use a Display Mask
      • Create Tick, Range, PnF, or Renko Chart
      • Clicking on the Tab of One Chart Changes Tab of Other Charts
      • Charts Stopped Streaming Data
      • Charts Show Incorrect Historical Data
      • Time Range Measurements Are Incorrect
      • Limited Tick Data on Charts
      • Set Start Time for Chart Bars
      • View List of Studies and Components on Chart
      • Show ETH or Extended Data
    • Trading
      • Position Average Is Changing Overnight
      • Execute Trades on Another Account
    • General
      • Change Themes
      • Define Trading Hours
      • Futures Contract Backfill
      • Reset the Console Layout
      • Set a Default Account
      • Set Up a Repository
      • Set Up Gmail for Email Alerts
      • Set Up iCloud Mail for Email Alerts
      • MotiveWave Covers Windows Taskbar
      • Limit Instruments in Quick Search
      • Can’t See My Menu Anymore
      • Trade Report Is Incorrect
    • Study
      • Component and Study Visibility
      • Order Heatmap Study Not Showing
      • Forex With Volume Related Studies
      • Add a Custom Study
      • Volume Imprint or TPO Overlap
      • Use Real Values
    • Elliott Wave
      • Elliott Wave Data Window vs Start Date
      • Elliott Wave Functionality
      • Show Multiple Elliott Wave Ratios
      • Stacked Wave Labels
    • Scan
      • What Do the Scanner Results Fair, Good, Etc. Mean?
    • SDK
      • Create a Custom Study or Strategy
    • Optimize - Backtest
      • Backtesting Limitations
    • Support
      • Access Log Files
      • Active Session Exists
      • Create a Workspace Backup
      • Find My License Key and Edition
      • Minimum System Requirements
      • MotiveWave Extensions Directory
      • Uninstall MotiveWave
      • Data Loss
      • Trendlines Shift on Nonlinear Charts
      • Slow Application Performance
    • Error Messages
      • Forex.com - Error Placing Order: 75
      • Binance - Connection Failed: Invalid API Key
      • Binance Futures - Unable to load listen keys
      • IQFeed - Error: Index 1 out of bounds for length 1
      • IQFeed - Connection Failed
      • State Error
      • Error Placing Order(s)
    • Purchase
      • Upgrade from a Lease to a Purchased License
      • Upgrade from a Lower Edition Purchased License to a Higher Edition Purchased License
      • Recently Purchased Where Is My License Key?
      • PayPal Payments
      • How Do I Cancel My Lease?
      • Are Updates to the Software Free?
    • FAQ
      • Can I Add Commentary
      • Can I Have a Simulated and a Live Trading Account
      • Can I Have More Than One Broker Account
      • Can I Save My Analysis
      • Can I Trade from the Chart
      • Can I Use MotiveWave on Multiple Computers
      • Does MotiveWave Support macOS
      • Does MotiveWave Support Multiple Computer Screens
      • How Do I Log in to MotiveWave
      • How Do I Make Point & Figure and Hybrid Renko Charts
      • How Do I Position and Size the Chart Windows on a Specific Screen
      • How Do I Save My Charts
      • How Do I Sync MotiveWave Between Two Computers
      • What Instruments Does MotiveWave Support
      • What Is Compact Mode for Chart Windows
      • Where Are the Chart Tools
  • Video Tutorials
    • Product Demos
    • Startup and Installation
    • Workspaces
    • Broker and Data Feed Connections
    • Overviews
    • General Configuration
    • Configuring Preferences
    • Charts
    • Analyses vs Alternate Analyses
    • Studies and Strategies
    • Trading
    • Alerts
    • Replay Mode
    • Scanners
    • Fibonacci
    • Harmonics
    • Elliott Wave
    • Webinars
    • Third Party Webinars
  • Studies
    • A - B
    • C - D
    • E - F
    • G - H
    • I - J
    • K - L
    • M - N
    • O - P
    • Q - R
    • S - T
    • U - V
    • W - X
    • Y - Z
Powered by GitBook
On this page
  • Absolute Price Oscillator
  • Acceleration Bands
  • Accumulation/Distribution Line
  • Accumulative Swing Index (ASI)
  • Acceleration Oscillator
  • Accelerator Decelerator Oscillator
  • Adaptive Smoothing Indicator
  • AGGZ
  • Alligator
  • Aroon
  • Aroon Oscillator
  • ATR Channel
  • ATR Trailing Stops
  • Auto Trend Line
  • Average Directional Index (ADX)
  • Average True Range (ATR)
  • Awesome Oscillator
  • Bears Power
  • Better Volume
  • Bid/Ask Spread
  • Bid/Ask Volume
  • Big Trades
  • Bollinger Bands®
  • Bollinger Bands® %B
  • Bollinger Bands® ATR
  • Bollinger Bands Fibonacci Ratios
  • Bollinger Band Width
  • Buff Averages
  • Bulls Power
  1. Studies

A - B

PreviousThird Party WebinarsNextC - D

Last updated 5 months ago

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

How to access the studies in MotiveWave:

Go to the top menu, choose Study>Study Group>Study Name

or Go to the top menu, choose Study>All Studies> Start typing in the study name until you see it appear in the list> Click on the study name> Click OK.

Absolute Price Oscillator

The Absolute Price Oscillator (APO) plots the difference between two moving averages as a real value. The user may change the input (close), method (SMA) and period lengths. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Absolute Price Oscillator

No trading signals are calculated for this indicator.

Calculation

//input = price, user defined, default is Midpoint //method = moving average (ma), user defined, default is SMA //period = user defined, default is 10 //period2 = user defined, default is 30 //index = current bar number

MA1 = ma(method, index, period, input); 
MA2 = ma(method, index, period2, input); 
Plot: diff = MA1-MA2;

Acceleration Bands

Acceleration Bands were developed by Price Headley. These bands serve as a trading envelope using an instrument’s typical volatility over a standard setting of 20 bars. The user may change the input (close), period length, and multiplier factor. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using the Acceleration Bands

No trading signals are calculated for this indicator.

Calculation

//input = price, user defined, default is close //period = user defined, default is 20 //factor = user defined, default is .001 //sma = simple moving average

H = getHigh(index);
L = getLow(index);
ub = (H*(1+2*((((H-L)/((H+L)/2))*1000)*factor)));
lb = (L*(1-2*((((H-L)/((H+L)/2))*1000)*factor)));
Plot1: top = sma(index, period, UB);
Plot3: bottom = sma(index, period, LB);
Plot2: middle = sma(index, period, input);

Accumulation/Distribution Line

The Accumulation/Distribution Line improves on the On Balance Volume indicator by focusing on the range of a bar vs its closing price, instead of using its previous close. Volume is added to the total when the close is above the midpoint for the bar and subtracted when below. No user input is required for this indicator. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using the Accumulation/Distribution Line

No trading signals are calculated for this indicator

Calculation

//index = current bar number

// Calculate the OBV
prev = ifNull(0, ADL[index-1]);
adl = prev + getVolume(index)*mfm(index);

Accumulative Swing Index (ASI)

This index is calculated using its high and low prices at opening and closing times: ASI = preciousASI + currentSI;

where: SI = 50×(C-Cy + 0.5x(C-O) + 0.25×(Cy-Oy))/R.

C = current close price, Cy = previous close price,

O = current open price, Oy = previous open price,

R = the highest range value, selected from the subtraction of the current high/low prices and the current/previous closing prices

How to trade using ASI

No trading signals are calculated for this indicator. However, when the ASI moves above the 0 line ( ASI is positive), it signals a potential buy trend. Conversely, when the ASI drops below the 0 line (ASI is negative), it suggests an opportunity for a sell trend. In case the ASI approaches closely to the 0 line, the market might be in an uncertain condition and the ASI should be used in conjunction with other indicators.

Acceleration Oscillator

Building on his Awesome Oscillator, Bill Williams authored the Acceleration Oscillator (ACO). The ACO measures the acceleration and deceleration of the current driving force. This indicator will change direction before any changes in the driving force, which, if it turns, will change its direction before the price. The ACO is the difference between the Awesome Oscillator and its 5-period SMA. The user may change input (midpoint), method (SMA) and period lengths. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Acceleration Oscillator

No trading signals are calculated for this indicator.

Calculation

//input = price, user defined, default is Midpoint //method = moving average (ma), user defined, default is SMA //slowPeriod = user defined, default is 34 //fastPeriod = user defined, default is 5 //accelPeriod = user defined, default is 5 //index = current bar number

slowMA = ma(method, index, slowPeriod, input);
fastMA = ma(method, index, fastPeriod, input);
// Awesome oscillator is the difference between the fast and slow moving averages
ao = fastMA - slowMA;
// Moving average of the Awesome Oscillator value
aoMA = ma(method, index, accelPeriod, AO);
// Acceleration Oscillator is the difference between the Awesome Oscillator value and its  moving average
PlotHist: ACO = ao - aoMA;

Accelerator Decelerator Oscillator

The Accelerator Decelerator Oscillator by Bill Williams manipulates multiple moving averages of the midpoint price and displays the result with movable guides on a bi-color histogram. The user may change the input (midpoint), method (SMA) and period lengths. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Accelerator Decelerator Oscillator

Adjust the top and bottom guides to control the quantity and quality of the trading signals. If the ado peaks above the top guide a sell signal will be generated. Conversely, if the ado troughs below the bottom guide a buy signal will be given.

Calculation

//input = price, user defined, default is midpoint price //method = user defined, default is SMA //period1 = user defined, default = 5 //period2 = user defined, default = 34 //period3 = user defined, default = 5 //ma = moving average, index = current bar number //MT = more than, LT = less than

ma1 = series.ma(method, index, period1, input);
ma2 = ma(method, index, period2, input);
ao = ma1 - ma2;
PlotHist: ado = ao - ma(method, index, period3, ao);
//Signals
prevAdo = ado[index-1];
highSell = ado for last sell signal, reset to max_negative at each  buy signal;
lowBuy = ado for last buy signal, reset to max_positive at each sell signal;
sell = (ado MT topGuide) AND (prevAdo MT ado) AND (ado MT highSell);
buy = (ado LT bottGuide AND prevAdo LT ado) AND (ado LT lowBuy);

Adaptive Smoothing Indicator

The Adaptive Smoothing Indicator, or Tilson T3, combines a series of moving averages with a user-defined volume factor. The user may change the input (close), method (EMA), period length and factor. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Adaptive Smoothing Indicator

The Adaptive Smoothing Indicator or Tilson T3 may be used in conjunction with other indicators as a trend indicator. No trading signals are given.

Calculation

//input = price, user defined, default is closing price //period = user input, default 40 //volFac = volume factor, user defined, default .5 //ema = expotintial moving average //index = current bar number

ema1=ma(method, index, period, input);
ema2=ma(method, index, period, ema1);
gd1=(ema1 * (1 + volFac)) - (ema2 * volFac);
ema3=ma(method, index, period, gd1);
ema4=ma(method, index, period, ema3);
gd2=(ema3 * (1 + volFac)) - (ema4 * volFac);
ema5=ma(method, index, period, gd2);
ema6=ma(method, index, period, ema5);
Plot: T3=(ema5 * (1 + volFac)) - (ema6 * volFac);

AGGZ

AggZ was authored by David Varadi. It combines trend-following measures for long-term forecasting and mean-reversion for short-term trends.

The formula for calculating this indicator is as follows:

AggZ= (-1x( 10-day Zscore)+(200-day Zscore))/2;

where Zscore = (close-sma (closing prices over last n periods))/(standard deviation(closing prices over last n periods)).

How to trade using AggZ

A buy signal is generated when the price rises above 0. Conversely, a sell signal is given when the price drops below 0.

Alligator

The Alligator was authored by Bill Williams. It is a combination of balance lines (Moving Averages) that use fractal geometry and non-linear dynamics. They consist of 3 lines: Jaw, Teeth and Lips. Typically a smoothed moving average (SMMA) is used with periods/shifts of (13/8, 8/5, 5/3) for the lines respectively. The user may change input (midpoint), method (SMMA), period and shift lengths. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Alligator

No trading signals are calculated for this indicator.

Calculation

//input = price, user defined, default is Midpoint //method = moving average (ma), user defined, default is SMMA //jawPeriod = user defined, default is 13 //jawShift = user defined, default is 8 //teethPeriod = user defined, default is 8 //teethShift = user defined, default is 5 //lipsPeriod = user defined, default is 5 //lipsShift = user defined, default is 3 //index = current bar number

Plot1: jaw = ma(method, index + jawShift, input, jawPeriod);
Plot2: teeth = ma(method, index + teethShift, input, teethPeriod);
Plot3: lips = ma(method, index + lipsShift, input, lipsPeriod);

Aroon

The Aroon was authored by Tushar Chande in 1995. Aroon may be used to determine if an instrument is trending and how strong the trend is. The indicator system consists of two lines Aroon(up) and Aroon(down). The user may change the period length. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Aroon

No trading signals are calculated for this indicator

Calculation

//period = user defined, default = 25 //MOE = more or equal, LOE = less or equal //index = current bar number

high_ind = 0;
low_ind = 0;
highest = NEGATIVE_INFINITY;
lowest = POSITIVE_INFINITY;
// Find the periods for the highest high and lowest low
n = period;
for(i = index-period+1; i LOE index; i++)
    bhigh = getHigh(i),
    blow = getLow(i);
    if (bhigh MOE highest)
        highest = bhigh;
        high_ind = n;
    endIf
    if (blow LOE lowest)
        lowest = blow;
        low_ind = n;
    endIf
    n--;
endFor
high_ind--;
low_ind--;
Plot1: up = ((period - high_ind)/period) * 100;
Plot2: down = ((period - low_ind)/period) * 100;

Aroon Oscillator

The Aroon Oscillator is a variant of the Aroon study that combines the two lines: Aroon(up) with Aroon(down) by subtracting them (up-down) to produce a single line that oscillates between -100 and 100. The user may change the period length. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Aroon Oscillator

No trading signals are calculated for this indicator

Calculation

//period = user defined, default = 25 //MOE = more or equal, LOE = less or equal //index = current bar number

high_ind = 0;
low_ind = 0;
highest = Double.NEGATIVE_INFINITY;
lowest = Double.POSITIVE_INFINITY;
// Find the periods for the highest high and lowest low
n = period;
for(i = index-period+1; i LOE index; i++)
    bhigh = getHigh(i),
    blow = getLow(i);
    if (bhigh MOE highest)
        highest = bhigh;
        high_ind = n;
    endIf
    if (blow LOE lowest)
        lowest = blow;
        low_ind = n;
    enfIf
      n--;
endFor
high_ind--;
low_ind--;
up = ((period - high_ind)/period) * 100;
down = ((period - low_ind)/period) * 100;
Plot: ao = up - down;

ATR Channel

The ATR Channel plots an upper and lower channel based on the close, plus or minus, the Average True Range times a user-defined factor. The user may change the period length, shift number and multiplier factor. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using the ATR Channel

No trading signals are calculated for this indicator.

Calculation

//period = user defined, default is 14 //shift = user defined, default is 0 //multiplier = user defined, default is 2.5 //sma = simple moving average //LT = less than

 //Calculate top and middle lines 
for(int i = period; i LT size(); i++) 
      atr = sma(i,  period, "TrueRange");
      close = getClose(i);
      top = round(close + (atr*mult));
      bottom = round(close - (atr*mult));
      Plot1: plot(i+shift, top);
      Plot2: plot(i+shift, bottom);
endFor    

ATR Trailing Stops

ATR Trailing Stops (ATRTS) identifies exit points for long and short positions. First, an exponential moving average (EMA) of the input is taken to determine the current trend. Then, the Average True Range (ATR) is calculated and multiplied by a user-defined factor. If the EMA is increasing (uptrend), the ATR product is subtracted from the price or, if the EMA is decreasing (downtrend), it is added to the price, and along with a few details the ATRTS is formed. The user may change the position (long), input (close), method (EMA), period lengths, percent factor and show entry option(see trading signals below). This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using ATR Trailing Stops

ATR Trailing Stops are designed to aid in exit decisions. For long positions, if the price is less than the ATRTS a sell signal is generated. Conversely for short positions, if the price is more than the ATRTS a buy-to-cover signal will be given. The user may also choose to show entry signals, however they should only be used with a trend filter.

Calculation

//position = pos, user defined, default is long //input = price, user defined, default is close //method = moving average (ma), user defined, default is EMA //period1 = maP, user defined, default is 63 //period2 = artP, user defined, default is 21 //factor = fac, user defined, default is 3 //show entrys = showE, user defined, default is false //index = current bar number, prev = previous //LOE = less or equal, MOE = more or equal //shortP = short position, longP = long position //index = current bar number

longP = pos == "Long";
shortP = pos == "Short";
atrts = 0, atr = 0;
ma = ma(method, maP, input);
prevP = price[index-1];
prevA = ifNull(price, atrts[index]); //current atrts is plotted at index+1
upTrend = price moreThan ma;
dnTrend = price LOE ma;
atr = atr(index, atrP);
if (upTrend)
    atrts = price - fac * atr;
    if (atrts lessThan prevA) atrts = prevA;
endIf
if (dnTrend)
    atrts = price + fac * atr;
    if (atrts moreThan prevA) atrts = prevA;
endIf
Plot: atrts[index+1];
//Signals
sell = false, buy = false;
if (atrts != 0)
    if (longP AND upTrend)
        sell = price lessThan atrts;   //sell to exit
        buy = prevP lessThan atrts AND price moreThan atrts AND showE;  //buy (enter)
    endIf
    if (shortP AND dnTrend)
        sell = prevP moreThan atrts AND price lessThan atrts  AND showE;   //sell short (enter)
        buy = price moreThan atrts;  //buy to cover
    endIf
endIf

Auto Trend Line

The Auto Trend Line automatically draws trend lines based on swing high and swing low points. Swing points are determined as the highest high (or lowest low) over the range (index – high_period, index + high_period). Trend lines are drawn by connecting two consecutive points that have a positive slope for low points and a negative slope for high points. The user may change the period lengths. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Auto Trend Line

No trading signals are calculated for this indicator.

Calculation

//period1 = user defined, default is 8 //period2 = user defined, default is 8 //period3 = user defined, default is 20 //multiple lines = user defined, default is true //historical lines = user defined, default is false

Code may be available on request.

Average Directional Index (ADX)

The Average Directional Index (ADX) was authored by J. Welles Wilder in 1978. ADX is an indicator of trend strength in a series of prices. It is composed of two other indicators, the positive directional indicator (+DI) and the negative directional indicator (-DI). The ADX combines and smooths these indicators. The user may change only the period length. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Average Directional Index (ADX)

The Average Directional Index (ADX) may be used in conjunction with other studies. No signals are calculated for this indicator.

Calculation

//period = user defined, default is 14 //index = current bar number //smma = smoothed moving average //abs = absolute value

// Calculate the +DM, -DM and TR
pDM = getPositiveDM(index);
nDM = getNegativeDM(index);
tr = getTrueRange(index);
// Calculate the Average +DM, -DM and TR
PDMa = smma(index, period, PDM);
NDMa = smma(index, period, NDM);
TRa = smma(index, period, TR);
// Determine the +DI, -DI and DX
Plot1: PDI = PDMa / TRa * 100;
Plot2: NDI = NDMa / TRa * 100;
DX = Math.abs((PDMa - NDMa)) / (PDMa + NDMa) * 100;
// Calculate the Average DX
Plot3: ADX = smma(index, period, DX);

Average True Range (ATR)

The Average True Range (ATR) is a popular volatility indicator and it was authored by Welles Wilder in 1978. It computes the average price range over a specific period (high – low extending to the previous bars close). Though the ATR is typically calculated using 14-day period, users can change the period length. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Average True Range

Average True Range is used to identify market volatility for market conditions and risk management. A high value of ATR suggests high volatility, which shows that the prices are moving quickly. Meanwhile, a low ATR value indicates low volatility, and therefore, a steady market condition.

Sudden changes in the ATR can also provide insights into potential breakouts or reversals. A spike in ATR value might indicate price breakouts while a consistently low ATR might imply a potential reversal.

The ATR is not a trend indicator because it is not directional and should be used in conjunction with other studies. No signals are calculated for this indicator.

Calculation

//period = user defined, default is 14 //index = current bar number /prev = previous, abs = absolute value

//atr = max((high-low),abs(high-prevClose),abs(low-prevClose)) for the period.
Plot: atr(index, period);

Awesome Oscillator

The Awesome Oscillator (AO) was authored by Bill Williams. This oscillator subtracts a 34 period simple moving average (SMA) from a 5 period SMA. It illustrates what’s happening to the market driving force at the present moment. The AO is displayed as a bi-colored histogram. The user may change the input (midpoint), method (SMA) and period lengths. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Awesome Oscillator

No trading signals are calculated for this indicator.

Calculation

//input =price, user defined, default is midpoint //method = moving average (ma), user defined, default is SMA //slowPeriod = user defined, default is 34 //fastPeriod = user defined, default is 5 //index = current bar number

slowMA = ma(method, index, slowPeriod, input);
fastMA = ma(method, index, fastPeriod, input);
PlotHist: ao = fastMA - slowMA;

Bears Power

Bears Power was authored by Alexander Elder. Bears Power is the difference between the current low and the 13-period exponential moving average. The user may change the input (midpoint), method (EMA) and period length. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Bears Power

No trading signals are calculated for this indicator.

Calculation

//input = price, user defined, default is Midpoint //method = moving average (ma), user defined, default is EMA //period = user defined, default is 10 //index = current bar number

low = getLow(index);
ma = ma(method, index, period, input); 
Plot: bp = low - ma;    

Better Volume

Better Volume combines bid/ask volume and range to identify volume climax, high volume churn and low volume bars. The user may change the period lengths, show the all points option and show the labels option. This indicator’s definition is further expressed in the code given in the calculation below.

How To Trade Using Better Volume

Better Volume may be used in conjuction with other studys. No trading signals are given for this indicator.

Calculation

//Look Back = user defined, default is 20 //Average Period = user defined, default is 100 //Use 2 Bars = user selection, default is true //Paint Price Bars = user selection, default is true

Code may be available on request.

Bid/Ask Spread

Bid/Ask Spread displays the bid and ask prices as two separate lines that visually represent the spread between the two. The user may change the input (open, close, high, low). This indicator’s definition is further expressed in the code given in the calculation below.

How To Trade Using Bid/Ask Spread

No trading signals are calculated for this indicator.

Calculation

//input = price, user defined, default is close //index = current bar number

switch(input) 
    case HIGH:
      ASK = getAskHigh(index));
      BID = getBidHigh(index));
      break;
    case LOW:
      ASK = getAskLow(index));
      BID = getBidLow(index));
      break;
    case OPEN:
      ASK = getAskOpen(index));
      BID = getBidOpen(index));
      break;
    default:
      ASK = series.getAskClose(index));
      BID = getBidClose(index));
      break;
    end

Bid/Ask Volume

Displays the Bid Volume vs the Ask Volume on a separate plot. Optionally, up/down markers can be displayed where the ask volume crosses the bid volume. Signals are generated where these markers occur and may be used to send emails or popup alerts.

Big Trades

The Big Trades indicator provides notable market movements by monitoring significant buy or sell orders. These large trades are usually created by major market investors or institutional traders. In the chart, the sizes of the signals (circles) are varied based on the volumes of the orders. The indicator will display past trades that meet or exceed a chosen minimum size. If the aggregate is enabled, MotiveWave will combine multiple trades that occur at the same price and within a time period, into bigger trades.

How to trade using Big Trades

If there is a steady accumulation of large buy orders, traders might expect a potential upward trend (breakout). Conversely, an accumulation of large sell orders might signal a possible downward trend (breakdown).

Bollinger Bands®

Bollinger Bands® is a popular tool developed by John Bollinger in the 1980s. Bollinger Bands® can be used to measure the high or low price relative to previous trades, therefore, providing insights into market volatility, price trends, overbought/oversold conditions and potential reversals.

There are three components in a Bollinger Bands chart. The user may change the input (close), period lengths, shift and standard deviation factors. The center line is typically a 20-period Simple Moving Average (SMA) that signifies trend movement. The Upper and Lower Bands (Top and Bottom Period in MotiveWave) are plotted by adding or subtracting two standard deviations from the middle band (Top and Bottom Std Dev - commonly set at 2). These two bands demonstrate the volatility levels and possible overbought/oversold conditions.

How To Trade Using Bollinger Bands®

The Bollinger Bands® is used to gauge trend movement, by examining the middle band. An upward middle band implies an uptrend while a downward middle line indicates the price is decreasing.

The width between the Upper and Lower Bands demonstrates the market's volatility. If the bands' distance is wide, it suggests high volatility and the price is moving dramatically. A higher volatility means higher risks, therefore, traders should be careful in decision-making. Conversely, if the two bands come close together, it is called a "squeeze" and it indicates low volatility and the price has been more steady but this might be a sign of consolidation. When the market is less volatile, traders should consider entering the trade, since a breakout in price might happen.

The Upper and Lower Bands can also act as overbought and oversold thresholds. When the price reaches the Upper Band, it implies an overbought condition and traders should consider selling. In contrast, when the price drops under the lower band, it suggests an oversold condition and a signal to buy. The events of the price touching the Upper or Lower Band might signify potential reversals and breakouts. If the price bounces off but stays around the Upper or Lower Band, it can signal a potential bearish or bullish reversal. If the price breaks through the Upper or Lower Band and keeps its direction, it suggests a breakout, and a new trend might occur.

The Bollinger Bands® might be used in conjunction with other analyses, such as RSI or MACD for signal validation.

Calculation

This indicator’s definition is further expressed in the code given in the calculation below:

//input = price, user defined, default is close //Top Period = user defined, default is 20 //Bottom Period = user defined, default is 20 //Shift = user selection, default is 0 //Standard Deviation Top = factor, user defined, default is 2 //Standard Deviation Bottom = factor, user defined, default is 2 //LT = less than, MT = more than //LOR= less or equal, MOR= more or equal

end = series.size()-1;
    if (topShift LT 0) end -= topShift; //Calculate future values
     //Calculate top and middle lines
     for(int i = topPeriod; i LOR= end; i++) 
      stdDev = std(i, topPeriod, input);
      ma = sma(i, topPeriod, input);
      Plot2: plot(i+topShift, ma);
      Plot1: plot(i+topShift, ma + stdDev*topStd);
     endFor    
     //Calculate bottom line
    end = latest;
    if (bottomShift LT 0) end -= bottomShift; //Calculate future values
    for(int i = bottomPeriod; i LOR= end; i++) 
      stdDev = std(i, bottomPeriod, input);
      ma = sma(i, bottomPeriod, input);
      if (stdDev == null OR ma == null) continue;
      Plot3: plot(i+bottomShift, ma - stdDev*bottomStd);
    endFor    

Bollinger Bands® %B

Bollinger Bands® was authored by John Bollinger in the 1980s. The Percent B (PB) plots the instrument’s price relative to the upper and lower Bollinger Bands®. The PB can be used to identify overbought and oversold conditions. The user may change the input (close), period length and standard deviation factor. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Bollinger Bands® %B

No trading signals are calculated for this indicator.

Calculation

//input = price, user defined, default is close //period = user defined, default is 20 //stdDev = standard deviation factor, user defined, default is 2 //sma = simple moving average, index = current bar number

ma = sma(index, period, input);
dev = std(index, period, input) * stdDev;
upperBand = ma + dev;
lowerBand = ma - dev;
Plot: PB = (price - lowerBand) / upperBand - lowerBand);    

Bollinger Bands® ATR

From his Standard Error Bands, the Bollinger Bands® ATR, was authored by Jon Anderson in Stocks and Commodities Mag. 09/1996. This indicator uses the quotient of the Average True Range, and Bollinger Bands® difference, to plot its path. The user may change the input (close), period lengths and Standard Deviation factor. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Bollinger Bands® ATR

Bollinger Bands® ATR may be used in conjunction with other indicators. No trading signals are given.

Calculation

//input = price user defined, default is close //atrPeriod = user defined, default is 22 //bPeriod = user defined, default is 55 //noStd = number of standard deviations = user defined, default is 2 //atr = average true range, bb = bollinger bands //top= bb[0], bottom=bb[1] //index = current bar number

atr = atr(index, artPeriod);
bb[] = bollingerBands(index, bPeriod, noStd, noStd, input);
bbDiff = bb[0] - bb[1];
Plot: artDev = atr / bbDiff;

Bollinger Bands Fibonacci Ratios

How To Trade Using Bollinger Bands® Fib Ratios

No trading signals are calculated for this indicator.

Calculation

//input = price, user defined, default is close //period = user defined, default is 20 //fibRatio1 = fibonacci ratio1, default is 1.618 //fibRatio2 = fibonacci ratio2, default is 2.618 //fibRatio3 = fibonacci ratio3, default is 4.236 //smma = smoothed simple moving average //sma = simple moving average //index = current bar number

TR = getTrueRange(index)
ATR = smma(index, period, TR);
sma = sma(index, period, input);
r1 = ATR*fibRatio1;
r2 = ATR*fibRatio2;
r3 = ATR*fibRatio3;
Plot1: fibTop3 = sma + r3;
Plot2: fibTop2 = sma + r2;
Plot3: fibTop3 = sma + r1;
Plot4: middle = sma;
Plot5: fibBott1 = sma - r1;
Plot6: fibBott2 = sma - r2;
Plot7: figBott3 = sma - r3;

Bollinger Band Width

Bollinger Bands® was authored by John Bollinger in the 1980s. The Bollinger Band Width (BBW) plots the distance between the upper and lower Bollinger Bands®. This graph line represents the contraction and expansion of the bands based on recent volatility. A high BB width often indicates a slowing trend, while a low width indicates a forming trend. The user may change the input (close), period length and standard deviation factor. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Bollinger Band Width

No trading signals are calculated for this indicator.

Calculation

//input = price, user defined, default is close //period = user defined, default is 20 //stdDev = standard deviation factor, user defined, default is 2 //std = standard deviation //index = current bar number

dev = std(index, period, input) * stdDev;
Plot: BBW = 2 * dev;    

Buff Averages

Buff Averages by Buff Dormeier displays two moving averages based on price and volume. When the two averages cross trading signals are given. The user may change the input (close) and period lengths. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Buff Averages

Trading signals are generated when the fastBuff and the slowBuff cross. If the fastBuff crosses above (upward movement) a buy signal is generated. Conversely, if the fastBuff crosses below (downward movement) a sell signal is given.

Calculation

//input = price (user defined, default is close) //fastPeriod = user defined, default = 5 //slowPeriod = user defined, default = 20 //num = numerator //den = denomator, index = current bar number

priceVol = input * volume;
num = sum(index, fastPeriod, priceVol);
den = sum(index, fastPeriod, volume);
Plot1: fastBuff = num / den;
num = sum(index, slowPeriod, priceVol);
den = sum(index, slowPeriod, volume);
Plot2: slowBuff = num / den;
//Signals
buy = crossedAbove(fastBuff, slowBuff);
sell = crossedBelow(fastBuff, slowBuff);

Bulls Power

Bulls Power was authored by Alexander Elder. Bulls Power is the difference between the current high and the 13-period exponential moving average. The user may change the input (midpoint), method (EMA) and period length. This indicator’s definition is further expressed in the condensed code given in the calculation below.

How To Trade Using Bulls Power

No trading signals are calculated for this indicator.

Calculation

//input = price, user defined, default is Midpoint //method = moving average (ma), user defined, default is EMA //period = user defined, default is 10 //index = current bar number

high = getHigh(index);
ma = ma(method, index, period, input); 
Plot: bp = high - ma;    

An improvement of the , the Accumulative Swing Index (ASI) was created by J.Welles Wilder in 1978. The ASI is mostly used for futures trading predictions, where it measures the strength and direction of the security’s price. It follows the candlestick chart's price movements, plotting a cumulative sum of the Swing Index (SI) values for each candle. Compared to SI, which shows a short-term trend indicator, the ASI provides better predictions in the long term.

For details on how to use this study, see our .

Bollinger Bands® Fibonacci Ratios are based on the same principles as the standard Bollinger Bands®. The baseline is a simple moving average. Bands are calculated using Welles Wilders smoothed average true range (ATR). Each band is a Fibonacci ratio of the ATR away from the baseline. The user may change the input (close), period length and Fibonacci ratios. This indicator’s definition is further expressed in the condensed code given in the calculation below. .

Click here for more information.
Click here for more information.
See also
Volume and Order Flow Analysis Guide
Click here for more information.
Click here for more information about Bollinger Bands.
See also Fibonacci Number
Click here for more information about Bollinger Bands.
Average Directional Index (ADX)
See also Awesome Oscillator
Risk Disclosure and Performance Disclaimer Statement
See also OnBalance Volume Indicator