25

## Formula 101 – #10 Special Context Functions

Quote formulas has a very special ability in extending itself under different *context*. For example, if you are using quote formula within quote window, you are able to use the column names as if they are predefined functions.

We are going to cover the most common context functions in this tutorial.

**Quote Window Context Functions**

Quote window formula columns can be labelled. By default, NeoTicker simply name them Formula1, Formula2, etc. You can, however, give your formula columns more descriptive names, and then, use those names in the other formula columns within the same quote window.

Here is a good example why you will want to use column names in your formulas.

Say, you like to rank your symbols with RSI, and then combining that with other conditions to filter the symbols. It is then very convenient to name the formula column containing your RSI indicator calculation as something like *MyRSI*, and then refer to the value in other formula columns using exactly that name.

Another reason why we would like to use column names in our formula is the ability to *change component* (more formally, that is called *abstraction*) in a sophisticated quote window. Following our example, if we have the intention of trying multiple indicators, then we can name the column that hold our bullish/bearish ranking with a generic name like *BullScore*. Then the rest of the quote window formula columns and alerts can be written with this name without worrying about what exactly we put into that column.

A rule of thumb about naming the formula columns is not using the indicator name *as is*, or naming the formula column with a predefined *quote field* name. That way, you will confuse yourself and making it very hard for yourself to understand how the calculated results are generated.

Here is an example based on Tutorial 8.

First we define the column MyOsc using Stochastics SlowK indicator,

Then we modify the original Pullback column to use the MyOsc column instead of directly calculating the slowk indicator value within the formula,

Now we are able to change the MyOsc column to other oscillator and still be able to utilize the pullback column formula and its coloring rules without modification,

**Dynamic Grid Context Functions**

Due to the fact that Dynamic Grid are designed to operate on a cell-by-cell level, it works pretty much like a spreadsheet. Thus the context functions in the dynamic grid are designed to make it works like a spreadsheet.

We have extended the Dynamic Grid formulas to be able to reference other cells through the following functions,

`cell (r, c)`

returns the value currently stored in the cell that is located at the absolute position of the *r-th* row, and *c-th* column.

For example, the formula `cell (1, 1)`

returns the value stored in the cell at the upper left hand corner.

`rcell (r, c)`

returns the value currently stored in the cell that is located at the relative position of *r* rows from the cell containing the formula being evaluated, and *c* columns from the current cell. For example, `rcell (-1, 0)`

is the cell directly above the current cell.

`rownum`

returns the row number of the current cell. The first row is row 1.

`colnum`

returns the column number of the current cell. the first column is column 1.

`cellbylabel (cell_label)`

returns the value of the cell in the dynamic grid that has the label you have provided in the *cell label*. Remember that the *cell label* does not require the special double-quote, the name is recognized automatically.

By combining these functions, you will be able to combine values from various cells easily.

Here is an example.

We are interested to watch 3 moving average levels across multiple symbols. Since we have not decided exactly which moving average to use, and would like to experiment with different periods, we are going to build some flexibility into the dynamic table.

First we would like to setup each column to have its first row containing the period for the moving average.

Then, the remaining cells in the same column will reference to this first cell in the column as the moving average period parameter,

Of course, you can also use the *cellbylabel* function to archieve the same goal,

The resulting dynamic table will look like this,

Now, when you want to use 25 period instead of 20 period for the middle column, all you have to do is to replace the value 20 with 25 in the top cell. Then all the moving averages in that column are recalculated automatically.

**Summary**

We have covered all the basic topics related to quote window formulas. If you need extra information, you will need to refer to the Help file for more comprehensive reference to the various functions that are available.

In the rest of the Formula 101 tutorials, we will work on a few case studies utilizing quote formulas.

I will also start a new series called *Formula 201* that focus on writing indicators with the formula language.

**Exercise**

1. In the example on Dynamic Grid Context Functions, the function *cell* is used to reference to an exact position in the grid. When we need to insert a column, for example, the formula will be affected and we may not get the correct values we need since the row and column positions have changed. Is there a way to make the call to the *cell* function more generic?

**Answers for Previous Exercise**

There is no exercise from previous tutorial.

**Interact:**Add a Comment | Trackback Link | Permalink

**Share:**digg | del.icio.us | Technorati | StumbleUpon