MarketInOut Stock Screener Please enable JavaScript to view this page content properly Log In | Sign Up
List of Functions

The following table contains the complete list of functions that can be used in formula expression.

 Function Example Explanation
Stock universe
ticker(fb,aapl,msft)The ticker function allows you to run the screener only on the ticker names specified as parameters. May not include more than 100 ticker names. Use the Watch List tool to run the screener on a larger ticker list.
exch(nyse,nasdaq)You can specify one or more stock exchanges for screening. Only items from the following list can be used as parameters: nyse, nasdaq, otc, iex, tsx, tsxv, cse, lse, xetra, moex, tadawul, nse, bse, bm, ses, ise, hkse, shse, tse, asx, nzx.
[watch list name]You can specify a pre-created watchlist as a stock universe. To do this, enclose the watchlist name in square brackets. You can select multiple watchlists by specifying their names, separated by commas: [watch list 1, watch list 2, watch list 3]
[portfolio name]Likewise, the name of a pre-created trading portfolio can be used. It is also possible to narrow the selection to open positions only, for example, [portfolio name@active] or closed positions [portfolio name@closed]. You can specify several portfolios by listing their names separated by commas, for example, [portfolio name 1 @active, portfolio name 2 @closed, portfolio name 3 @all]
caps(large,mid)Sets the market capitalization condition. Only items from the following list can be used as parameters: micro, small, mid, large. The market capitalization breakdown is as follows, micro: 0 - 150M, small: 150M - 500M, mid: 500M - 5B, large: above 5B
sector(energy,basic_materials)Sets the sector condition. Only items from the following list can be used as parameters: energy, basic_materials, industrial_goods, conglomerates, consumer_goods, healthcare, financial, technology, services, utilities, real_estate.
industry(130,131,132)Sets the industry condition. An industry code or a comma-separated list of industry codes is required as parameters. Please refer to the List of Industries help topic for more details.
index(spx,nasdaq100)Sets the index membership condition. Only items from the following list can be used as parameters: dow, sp500, nasdaq, nasd100, ru1000, ru2000, ru3000, rumid, rumicro, tsx, ftse100, ftse250, ftseall, dax, asx50, asx200, asxord, hsi, sti, klci.
type(stock)Sets the instrument type condition. Only two parameters are supported, stock and fund.
options(yes)Allows specifying if a stock has options listed and tradable on a market exchange. Only two parameters are supported, yes and no.
commodity(metals,crude_oil,gas)This function narrows screening to specified commodity market instruments. Only the following items can be used as parameters: metals, crude_oil, gas, agriculture.
aggregate(indexes)This function narrows screening to financial world indexes. The only parameter indexes is supported.
Calendar functions
day(1)Returns true if the current day of month equal to the parameter value. The parameter value must be in the range of 1..31
weekday(Sun)Returns true if the current day of week equal to the parameter value. The parameter value must be in the range of Sun..Sat
month(Jan)Returns true if the current month equal to the parameter value. The parameter value must be in the range of Jan..Dec
workingday(10)Returns true if the current working day of month equal to the parameter value
workingdayleft(1)Returns true if the remaining number of working days in the current month equal to the parameter value
hour(12)Returns true if the current hour equal to the parameter value. The parameter value must be in the range of 9..15 for IEX exchange and in the range of 0..23 for Forex and crypto exchanges. Applicable for intraday periods only.
minute(30)Returns true if the current minute of hour equal to the parameter value. Applicable for intraday periods only. Items from the list below can be used as parameters. For 5-minute periods: 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55; For 15-minute periods: 0, 15, 30, 45; For 30-minute periods: 0, 30;
Aggregate functions
abs(rsi(14) - 50)Returns the absolute (positive) value of an expression
max(rsi(14), 10)Returns the maximum value of an expression for the specified number of days / bars
min(rsi(14), 10)Returns the minimum value of an expression for the specified number of days / bars
avg(rsi(14), 10)Returns the average value of an expression for the specified number of days / bars
count(rsi(14) < 30, 10)Returns the number of days / bars for which the expression is true for the specified number of days / bars
change(10)Returns the price % change over the specified number of days / bars
evalat(sma(21) - sma(7), 10) Returns the value of the expression specified as the first parameter at the day/bar specified in the second parameter. The expression in this example works the same way as historical screening "(sma(21) - sma(7))@10" but the second parameter can contain any arithmetic expression, for example: evalat(sma(21) - sma(7), min(rsi(14), 7))
Highest and lowest prices
highest(10)Returns the highest price over a specific number of days/bars
lowest(10)Returns the lowest price over a specific number of days/bars
highestbar(10)Returns the shift of the highest price over a specific number of days/bars
lowestbar(10)Returns the shift of the lowest price over a specific number of days/bars
highestvol(10)Returns the highest volume value over a specific number of days/bars
lowestvol(10)Returns the lowest volume value over a specific number of days/bars
highestvolbar(10)Returns the shift of the highest volume value over a specific number of days/bars
lowestvolbar(10)Returns the shift of the lowest volume value over a specific number of days/bars
highestclose(10)Returns the highest close price over a specific number of days/bars
lowestclose(10)Returns the lowest close price over a specific number of days/bars
highestoc(10)Returns the highest open or close price over a specific number of days/bars
lowestoc(10)Returns the lowest open or close price over a specific number of days/bars
highestclosebar(10)Returns the shift of the highest close price over a specific number of days/bars
lowestclosebar(10)Returns the shift of the lowest close price over a specific number of days/bars
highestocbar(10)Returns the shift of the highest open or close price over a specific number of days/bars
lowestocbar(10)Returns the shift of the lowest open or close price over a specific number of days/bars
Candlestick functions
wick(0)Returns the size of the "upper shadow" part of a candle. The parameter value is the shift relative to the current bar
tail(0)Returns the size of the "lower shadow" part of a candle. The parameter value is the shift relative to the current bar
body(0)Returns the size of the "real body" part of a candle. The parameter value is the shift relative to the current bar
crange(0)The range the price moved during the time frame of the candlestick (high - low). The parameter value is the shift relative to the current bar
bmid(0)The middle of the candlestick's "real body" (close + open) / 2. The parameter value is the shift relative to the current bar
tprice(0)Returns the Typical Price value for a given bar: (high + low + close) / 3. The parameter value is the shift relative to the current bar
mprice(0)Returns the Median Price value for a given bar: (high + low) / 2. The parameter value is the shift relative to the current bar
wprice(0)Returns the Weighted Price value for a given bar: (high + low + 2 * close) / 4. The parameter value is the shift relative to the current bar
Math functions
math.max(ema(50), ema(200))Returns the largest of two values passed to it as parameter
math.min(ema(50), ema(200))Returns the smallest of two values passed to it as parameter
math.sqrt(rsi(14))Calculates the square root of the parameter given to it
math.pow(rsi(14), 2)The method returns the value of the first parameter raised to the power of the second parameter
math.round(rsi(14))Rounds a floating point value to the nearest integer using normal math round rules (either up or down)
math.ceil(rsi(14))Rounds a floating point value up to the nearest integer value
math.floor(rsi(14))Rounds a floating point value down to the nearest integer value
correl(spy)Returns the correlation coefficient between the specified ticker and the ticker that is checked against the screening criteria. For example, if we want to find all stocks whose correlation coefficient with the ticker SPY is more than 0.95, the formula expression will be correl(spy) > 0.95. The correlation will be calculated for the last 21 business days by default. You can change this period by setting the second parameter, for example: correl(spy,50) > 0.95.
Time-based functions
days_since_ipo()Returns the number of days that have passed since the IPO day
days_to_earn_rep()Returns the number of days to the next earnings report date
days_since_earn_rep()Returns the number of days that have passed since the last earnings report date
minutes_since_update()Returns the number of minutes since the last stock quote update
bars()Returns the total number of bars available for a ticker
Output instructions
sortby(rsi(7), desc, 10) Instructs the Stock Screener to sort results by the specified indicator, financial metric or other parameter, using the ascending (asc) or descending (desc) order. The third parameter indicates how many stocks to select after sorting. The second and third parameters are optional. If the parameter indicating the sorting direction is not specified, then ascending order will be used. If the third parameter is not specified, then after sorting all stocks will be selected.
show(rsi(14)) Instructs the Stock Screener to add the listed columns to the results page. Columns will be added to the right of the standard columns of the stock screen and will display the corresponding values for each ticker. The indicators listed in the show function will also be plotted on charts that are opened from the stock screen and on mini charts when switching to the "Charts" view.
In this example, you can also set the column name as follows: show(rsi(14) as rsi)
draw(rsi(7), rsi(14)) Instructs the Stock Screener to draw the listed indicators on charts that are opened on the results page and on mini charts when switching to the "Charts" view.
Historical screening
hist(12/31/2019) Instructs the Stock Screener to perform historical screening. The screener will only select stocks that match the formula expression as of the specified date. The date should be indicated in a short date format: month/day/year.
Price level functions
fibo23s(1)Returns the value of the 23.6% Fibonacci retracement level. Fibonacci is applied to the first (nearest by registering date) recognized uptrend. Examples:
price cb fibo23s(1) - price crossed below the 23.6% fibo level.
price tocha fibo23s(1) - price touched above the 23.6% fibo level.
price bon_up fibo23s(1) - price bounced up from the 23.6% fibo level.
For 38.2%, 50.0%, 61.8% and 78.6% fibonacci levels, you can use the following functions: fibo38s, fibo50s, fibo62s, fibo78s.
fibo23r(1)Returns the value of the 23.6% Fibonacci retracement level. Fibonacci is applied to the first (nearest by registering date) recognized downtrend. Examples:
price ca fibo23r(1) - price crossed above the 23.6% fibo level.
price tochb fibo23r(1) - price touched below the 23.6% fibo level.
price bon_dn fibo23r(1) - price bounced down from the 23.6% fibo level.
For 38.2%, 50.0%, 61.8% and 78.6% fibonacci levels, you can use the following functions: fibo38r, fibo50r, fibo62r, fibo78r.
snr_sup(9,1)Returns the value of the first (nearest by registering date) support level of the SNR(9) indicator. Examples:
price cb snr_sup(9,1) - price crossed below the 1st support level of the SNR(9) indicator.
price tocha snr_sup(9,2) - price touched above the 2nd support level of the SNR(9) indicator.
price bon_up snr_sup(9,3) - price bounced up from the 3nd support level of the SNR(9) indicator.
You can also use snrc_sup and snroc_sup functions for accessing the support level of the SNRC(9) and SNROC(9) indicator correspondingly.
snr_res(9,1)Returns the value of the first (nearest by registering date) resistance level of the SNR(9) indicator. Examples:
price ca snr_res(9,1) - price crossed above the 1st resistance level of the SNR(9) indicator.
price tochb snr_res(9,2) - price touched below the 2nd resistance level of the SNR(9) indicator.
price bon_dn snr_res(9,3) - price bounced down from the 3nd resistance level of the SNR(9) indicator.
You can also use snrc_res and snroc_res functions for accessing the resistance level of the SNRC(9) and SNROC(9) indicator correspondingly.
snr_minsup(9,50)Returns the value of the lowest support level found using the SNR(9) indicator in the last 50 bars/days. Examples:
price cb snr_minsup(9,50) - price crossed below the value of the lowest support level found using the SNR(9) indicator in the last 50 bars/days.
You can also use the snr_minres function for accessing the lowest resistance level of the SNR(9) indicator.
Use snrc_minsup and snroc_minsup functions for accessing the lowest support level of the SNRC(9) and SNROC(9) indicator correspondingly.
snr_maxres(9,50)Returns the value of the highest resistance level found using the SNR(9) indicator in the last 50 bars/days. Examples:
price ca snr_maxres(9,50) - price crossed above the value of the highest resistance level found using the SNR(9) indicator in the last 50 bars/days.
You can also use the snr_maxsup function for accessing the highest support level of the SNR(9) indicator.
Use snrc_maxres and snroc_maxres functions for accessing the highest resistance level of the SNRC(9) and SNROC(9) indicator correspondingly.
Williams' Fractals
frasup(2,2,1)Returns the value of the first (nearest by registering date) lower fractal level of the Fractals(2,2) indicator. Examples:
price cb frasup(2,2,1) - price crossed below the 1st lower fractal level of the Fractals(2,2) indicator.
price tocha frasup(2,2,1) - price touched above the 1st lower fractal level of the Fractals(2,2) indicator.
price bon_up frasup(2,2,1) - price bounced up from the 1st lower fractal level of the Fractals(2,2) indicator.
frares(2,2,1)Returns the value of the first (nearest by registering date) upper fractal level of the Fractals(2,2) indicator. Examples:
price ca frares(2,2,1) - price crossed above the 1st upper fractal level of the Fractals(2,2) indicator.
price tochb frares(2,2,1) - price touched below the 1st upper fractal level of the Fractals(2,2) indicator.
price bon_dn frares(2,2,1) - price bounced down from the 1st upper fractal level of the Fractals(2,2) indicator.
framinsup(2,2,50)Returns the value of the lowest support fractal level found using the Fractals(2,2) indicator in the last 50 bars/days. Examples:
price cb framinsup(2,2,50) - price crossed below the lowest support fractal level found in the last 50 days.
You can also use the framinres function for accessing the lowest resistance fractal.
framaxres(2,2,50)Returns the value of the highest resistance fractal level found using the Fractals(2,2) indicator in the last 50 bars/days. Examples:
price ca framaxres(2,2,50) - price crossed above the highest resistance fractal level found in the last 50 days.
You can also use the framaxsup function for accessing the highest support fractal.
framinsupbar(2,2,50)Returns the shift of the lowest support fractal found using the Fractals(2,2) indicator in the last 50 bars/days. Examples:
framinsupbar(2,2,50) < 5 - the 50-day lowest support fractal was registered over the last 5 days.
You can also use the framinresbar function for accessing the shift of the lowest resistance fractal.
framaxresbar(2,2,50)Returns the shift of the highest resistance fractal found using the Fractals(2,2) indicator in the last 50 bars/days. Examples:
framaxresbar(2,2,50) < 5 - the 50-day highest resistance fractal was registered over the last 5 days.
You can also use the framaxsupbar function for accessing the shift of the highest support fractal.
Backtesting aids
posprice Formula expression can be used as a criteria for closing a position in the Strategy Backtest tool. This can be done by ticking the "Set by a formula expression" option and assigning the corresponding formula expression.

You can get the value of the price at which the position was opened using the "posprice" literal.
posbar You can get the index of the day/bar at which the position was opened using the "posbar" literal. It is typically used in data arrays: open, high, low, close, v. For example, low[posbar] will give the low price of the day/bar at which the position was opened.
evalat You can get the value of the indicator or expression at the moment the position was opened using the "posbar" literal and the "evalat" function. For example, evalat(rsi(14), posbar) will give the value of the RSI(14) indicator recorded on the day the position was opened.
posage You can get the number of days/bars elapsed since the position was opened.
stopat(psar(0.02,0.2)) Instructs the trading simulator to move the stop loss level to the specified value. As a parameter, you can specify an indicator, function, or other formula expression that returns a numerical value. For example: stopat(psar(0.02,0.2)), stopat(ema(7)), stopat(lowest(21)). If the expression for closing a position has already been set, then the function must be added using the "or" operator. For example: rsi(14) < 60 or stopat(psar(0.02,0.2)). Please note that the "stopat" function is applied with a one day/bar delay. That is, stop loss is calculated on the current day/bar but will be applied on the next day/bar.
takeat(bbub(20,2)) Instructs the trading simulator to move the take profit level to the specified value. As a parameter, you can specify an indicator, function, or other formula expression that returns a numerical value. For example: takeat(bbub(20,2)), takeat(1.5 * ema(50)), takeat(highest(21)). If the expression for closing a position has already been set, then the function must be added using the "or" operator. For example: rsi(14) > 75 or takeat(bbub(20,2)). Please note that the "takeat" function is applied with a one day/bar delay. That is, take profit is calculated on the current day/bar but will be applied on the next day/bar.
if(price > 1.05 * posprice, stopat(low[0])) The IF function can be useful in the formula for closing a position in combination with the STOPAT or TAKEAT instructions. In this formula, the stop loss will be set at the day's low level, but only if the position's profit is more than 5%. If the expression for closing a position has already been set, then the function must be added using the "or" operator. For example: rsi(14) < 60 or if(price > 1.05 * posprice, stopat(low[0]))
 

 Content
 Overview
 Data
 Stock Screener
      Quick Start
      Screener Parameters
      How to Screen Watch List
      Technical Criteria
 Formula Screener
      Formula Examples
      Technical Indicators
      Technical Events
      List of Functions
      Fundamental Indicators
      List of Industries
 Strategy Backtest
      New Strategy
      How It Works
      Testing Model
      Position Maintenance
      How to Backtest Watch List
 Charts
 Portfolio Tracker
 Trade Alert
 Price Alert
 Stock Correlation



Disclaimer - Privacy Policy - Cookie Use Policy - FAQ - Contact Us
Copyright ©2008-2022 MarketInOut.com. All rights reserved.