Release Notes



Missing conversion factor in calculation of Dark Spread indicator and formula symbol template.



Missing conversion factor in calculation of Clean Dark Spread indicator and formula symbol template.



Unhandled exception when applying a template that contains less instruments than the target chart.

Some instruments may use the initial history length after applying a template with a customized history length.



Submitting a formula symbol input property change using the tab key can result in an unhandled exception.



Allow the user to override the maximum sample limit of Monte Carlo optimizations

The maximum value that can be input for samples can be overridden in tse.ini by setting the following value:


(max. value = 2147483646, min. value = 100, default = 1000000).


Boxsize of a Point & Figure Chart is changed after reopening a saved workspace if the box size was changed from default and the option to "recalculate the boxsize on instrument replace" is active.

Text editor undo, redo and toggle comment commands do not scroll the caret into view.

Monte Carlo optimization can stop with an argument out of range error when using exactly three optimization threads.

Ref indicator raises an unhandled exception when referencing either equity output in the Portfolio (Classic).

Loading a specific MarketProfile chart can lead to an unhandled exception.

The simplified ribbon is set back to classic ribbon after the application is restarted.

A hidden sidebar category (such as functions) is visible again after restarting the application.



Change default setting for "generate last bar trade alert on full evaluation" property to True.

The period cannot be changed for a spread if using only the indicator in a chart.

BackBuffer variable is 0 if there are no series variables in use, even when the first bar is not the first data point.

Poor performance of text editor when showing the insight window and then moving the caret.

Permanently removing items from a huge portfolio takes very long.



Tool can be inserted after order routing is started if auto reset tool drawing is disabled.

Property inspector titles for watchlist and scanner general groups are missing.

Equilla back reference operator can access the wrong bar in a 210 minute chart where the source timezone differs significantly from the local timezone.

Inputs of formula symbols do not accept changed values in property inspector.



Back color of notice messages in the options pages is the same color as the background.

Filtering optimizer results with a numeric user-defined statistic does not work in German language.

Opening a TeleTrader instrument in a new chart with the same symbol and exchange as an already open instrument (e.g. G 2020H) changes the existing instrument's meta data.

Entering a TeleTrader symbol on the command line that has multiple alternatives with the same symbol, exchange and type (e.g. G 2020H), should prefer a result with an ISIN.

Selecting a security from the predefined TeleTrader symbol list (e.g. G 2020H) can open the incorrect instrument when multiple securities have identical symbols and exchanges.

Selecting the non-first TeleTrader search result where the top results have the identical symbol and exchange (e.g. G 2020H), incorrectly returns the first result.



Replacing a symbol in charts with symbol linking from the symbol list does not work.

TradeableTimestamps does not generate timestamps for historic data of the underlying in a compressed chart type.



Pop-up concerning newer code in the chart is behind the toolbox, if the toolbox is collapsed.

Some German language hyperlinks in the options are truncated.



Replacing a symbol in symbol linked chart from a watchlist does not work.

Starting a scanner replaces every symbol with "TSe_Dummy_Instrument_Name".



Setup now only asks for administrator elevation the first time it is required, rather than when the setup is started.


Watchlists with many frequently updating symbols refresh the ribbon too frequently.

Dialog for saving property defaults is shown behind the toolbox, if the toolbox is being shown while in collapsed mode.

Date scale range for a "zoomed in" chart is changed after reloading the workspace.



Watchlist containing formula symbols fails to load completely.

Some exotic double to string conversions use the local system locale instead of the application locale.

Optimizer displays on an English system running in German language a point as decimal separator if application language is also set to German.



Deleting a tool can trigger a full evaluation of a chart if a realtime update occurs at an inopportune moment.

Various performance issues when performing a full evaluation on a chart/portfolio.



Rename old style portfolios to Portfolio (Classic) and hide the ability to create new instances

With the introduction of the new Portfolio tool (see below), the old tool has been renamed to Portfolio (Classic). Workspaces containing the Portfolio (Classic) will continue to function exactly as before. By default, the ribbon will only offer the ability to create the new style Portfolios. In order to create new instances of the Portfolio (Classic), the option must first be enabled by checking File > Options > Toolbar Ribbon > Show the deprecated Portfolio (Classic) tool in the ribbon.

Ignore non overlapped data points in spread indicators and formula symbols

The spread indicators and formula symbols will now skip calculation on bars where the is no corresponding bar for the other leg, rather than using the prior price. Two new indicators have been added: Spread Diff (Classic) and Spread Quot (Classic) that use the prior calculation method if it is needed.



Scheduled optimization

Optimizers in a workspace, can now be scheduled to optimize at specific times and days. To set up a new scheduled optimization, select Home > Table > Start Optimizer > Schedule Optimization and enter the days and time when the optimizer should start. All currently scheduled items can be viewed, edited and/or removed by selecting the Scheduled Jobs button to the right above the ribbon (next to the connection state and clock). All schedules associated with a workspace can also be managed under File > Print > Print and scan schedule

Automatically apply top optimization result to chart/portfolio

To automatically apply the top filtered and sorted result from an optimization run when it completes, simply set the option in the properties, Optimizer > Automatically Apply Top Result to true. This option will be respected when using scheduled optimization.

Group available inputs in sizable optimizer wizard

Optimizable inputs are now visually grouped by their corresponding strategy, indicator or money management items, and can be activated or deactivated by selecting the group as a whole. The optimizer wizard is also sizable to allow better overview of large numbers or inputs. The default inputs selected for a new optimization will no longer include indicator inputs (although these can still be added in the wizard).

Calculate in-sample or out-of-sample width by desired number of samples

The optimizer wizard now provides a method to calculate the in- or out-of-sample width, by entering the corresponding sample size and the desired number of samples. For example, to have a single out of sample sample with a width of 100 bars, enter 100 bars in the out of sample field, then click on the Calc in-sample link and enter the number 1, the in-sample value will then be set to the remaining bars in the selected data history.

Unify similar parameters in the optimizer wizard

The optimizer wizard can now unify the same parameters from different instances of the same indicator or strategy, so that the parameter ranges need only be specified once, all instances of the parameter will then use the same values (although independent of one another). To activate the parameter unification, check the box Unify similar parameters. An additional result column will be added containing a combined summary of the unified values.

Allow Walk Forward optimization when using strategies that include dynamic inline instruments

The optimizer wizard will now allow walk-forward optimization to be used if any of the strategies contain dynamic inline instruments. A warning will be displayed to indicate that results could be unexpected if the inline instruments vary the available data points during optimization.

Only a single script at a time can be active when optimizing the Active property

When optimizing the Active property of several scripts for both true and false values, only a single script can have the true value during a given run. This feature allows the optimization of a strategy component without generating additional unnecessary combinations that consume significant time.

Prevent input combinations generated from deactivated strategies from being evaluated

This optimization to optimizing the Active property means significant unnecessary steps are pre-filtered from the optimization, making optimizing both the strategy to use and its best parameters in a single run more realistic.

Monte Carlo Strategy Optimization

The optimizer wizard now allows the selection of either Monte Carlo or Walk Forward Monte Carlo as the optimization method. Selecting either of these modes will also require the selected of the number of simulations to run (per symbol in the case of symbol list optimization). The Monte Carlo optimizer will not repeat combinations it has already simulated.

Default optimizer settings for a strategy or indicator

Strategies (and indicators) can now indicate which of their inputs should be optimized by default, and also the optimizer min/max and step size values for integer and decimal inputs. The Optimize keyword can be placed before an input to indicate it should be used in optimization. A forth argument may be optionally specified to numeric inputs to set the optimizer step size. A fifth and six parameter may be optionally specified to set the optimization minimum and maximum values respectively, if they differ from the input’s default min/max values.

Add choice of bar, range bar, line or point chart styles to optimizer chart

The optimizer results document now allows the chart style for the displayed results to be selected from either bar, range bar, line or point. If the selected result set represents a range of data values, the bar and line styles will instead show range bar or point styles respectively.

Increase maximum threads in the optimizer to 100

The maximum number of threads that can be set for the optimizer has been increased to 100. It is not recommended to use more threads than the number of available processor cores minus one. Please note: The more threads configured will result in more parallel processing of optimization steps (and therefore faster nest step processing), but the optimizer start and stop/pause phases can become significantly longer.


Replace symbol in chart based on visual order

Replacing symbols in a chart (via double click or navigation buttons in the scanner, watchlist, portfolio or symbol lists, or via the command line) will now always replace the visibly first instrument (and then visibly second and so on). This new behavior allows the exact instrument to be selected by moving it toward the top of the chart window.

Replace symbol in chart via targeted drag and drop

Dragging an instrument or symbol onto a chart will now either replace the item onto which the symbol was dropped or add the item to the chart if dropped onto empty space. Holding the control key while dropping the symbol will force it to be added to the chart.

Replace specific symbol in chart from command line

The command line will present options for replacing a specific symbol in the chart where more than one exists.

Ribbon commands for inserting a new spread, continuation or combined symbol directly into a chart or list

The Symbol Search button, now offers a drop down menu that allows spreads, continuations and combined symbols to be created instead of normal symbols from the data feed.

Allow changing display units to 7 or 8 decimal places

The number of decimal places that can be selected for an instrument, have been increased to a maximum of eight.

Set the display units for multiple selected items in a watchlist, scanner or portfolio

The property inspector allows the display unit of all selected items in a watchlist, scanner or portfolio to be changed in one action. Please note: The scanner will still need to be run on further time for changes to display units to be visible.

Condensed currency picker for watchlist, scanner and portfolio multi-select currency property

The currency picker shown when changing the currency of multiple items in the watchlist, scanner or portfolio, will now use the new condensed format.

Add Recalculate Trades From Bar to charts context menu

Showing the context menu for a bar in a chart will now allow all trades from that point to be recalculated for all instruments in the chart, by selected the option Recalculate Trades From Bar.

Application news feed

The help sidebar now contains a node with recent application related articles (from

Timespan Current Week

The option to show the current weeks data in a chart has been added to the Home > Chart > Time Span menu.

Set tick bar periods from the command line

The command line period setting format has been expanded to support tick and volume bar periods: nt (n is the number of ticks), nkt (n is the number of thousand ticks), nv (n is the number of shares/volume), nkv (n is the number of thousand shares/volume). The same new formats can also be used when specifying a symbol on the command line or when requesting inline instruments in an indicator or strategy, e.g. .GDAXI 25t.

Drag and drop from a symbol list into a grouped list

If a watchlist, scanner or portfolio is showing groups, dropping a symbol from a symbol list or elsewhere will, now add that symbol directly into the group on which it was dropped.

Command line suggestions include partial indicator and strategy name matches

The command line will now show a number of possible indicator and strategy results if what is typed on the command line partially matches the start of their name.

Toggle all items on and off in post to forum pane

Click on the header of the check box column to toggle all check boxes on or off.

Option to display Fibonacci retracements and extension labels above the line

The Fibonacci retracements and extension tools now have options in the Label property to display the labels either below or above the various lines.

Query windows session sign-out with unsaved workspace changes

Windows will now be informed that there are unsaved changes when a sign-out/shutdown operation is initiated (typically causing windows to inform the user of the unsaved changes and asking to continue of cancel). The option to toggle this behavior can be found under File > Settings > Advanced > Performance.

Minimize subcharts

Subcharts may be minimized by clicking the minimize button, next to the maximize button in the top right of a subchart pane. If there are one or more minimized subcharts, a restore button will be visible in the top-most visible subchart (for each block of subcharts with their own date scale), that may be clicked on to obtain a menu of subcharts that can be restored. Clicking on an item in the restore menu will restore the subchart at its original location. The restore menu also has an option to restore all minimized subcharts.

Option to fit grid columns to page width when printing a single grid item

The Print Preview and Publish PDF panes in the backstage view, now offer an option when only a single workspace item is being printed, to resize it so that it will horizontally fit on a single page. This feature is of particular use when printing wide grid-based items like watchlists with many columns. To enable this behavior, check the box Compress to one page width and ensure only a single item is selected to be printed in the Items to print list.

Persist Renko percentage brick sizes when swapping instruments

If a brick size is set to be percentage based, it will now keep the set value when the instrument is replaced by another. An absolute brick size will continue to update to a suitable value for the new high/low range on instrument replace.

Select appropriate instrument when going to alert source

Double-clicking on a strategy, indicator or tool alert will now try to select an instrument in the originating chart, scanner, watchlist or portfolio, connected with that alert.

Option to automatically add a list of strategies and indicators when a strategy is added to a chart

When the first strategy is added to a chart, the list of indicators and strategies specified in the options under “File > Options > Advanced > Indicators & Strategies > Automatically insert the following items when a strategy is added to a chart” will be added to the chart. By default, Strategy Equity Portfolio and Strategy Drawdown Portfolio will be added.

Option to automatically add a list of strategies and indicators when a strategy is added to a portfolio

When the first strategy is added to a portfolio, the list of indicators and strategies specified in the options under “File > Options > Advanced > Indicators & Strategies > Automatically insert the following items when a strategy is added to a portfolio” will be added to the portfolio. By default, the Portfolio Leave Exit strategy, Strategy Equity Portfolio and Strategy Drawdown Portfolio will be added.

Rolling Forward Symbol Wizard

The Rolling Forward Symbol Wizard allows Rolling Forward instruments to be created to a user-defined specification. Rolling Forward symbols are different to Continuation symbols in that, on rollover, the history of the instrument is replaced completely with the history of the new contract, whereas in Continuation Symbols the history is created by stitching together parts of the history of each contract as they rollover. To show the Rolling Forward Symbol Wizard, either select New Symbol > New Rolling Forward Symbol in the Symbol Lists toolbox, or select Home > Data > Symbol Search > Add Rolling Forward Symbol.

Custom colors for workspace tabs

The color of the title tab of a workspace can now be set, to visually differentiate workspaces. To change the workspace tab color, right click on the workspace tab and select Tab Color to show the color picker dialog. Select the desired color (or choose no color) and click OK. Finally, save the workspace.

Industry Sector field in the Watchlist and Scanner

A new field called Industry Sector is available for selection in the Add/Remove Columns dialog for the Watchlist and Scanner. The field will show the industry sector name of a given instrument (if supported by the instrument’s security type and data feed).

Help contains information on standard Equilla user functions

The library help in the help sidebar now contains a section called User Function Library that lists all of the standard user functions shipped with the application.

Dialog to add additional timeseries fields

The field dropdown menu for an instrument in the property inspector will now provide the option Add Field… if the data feed supports more timeseries fields than are displayed in the initial field dropdown menu. The Add timeseries field dialog allows a field to be browsed for, or searched by keyword. The dialog will maintain a list of the most recently requested fields.

Client-side activation of additional timeseries fields

Opening a workspace containing fields currently not subscribed on a system, will now automatically activate them.

Display feed name in feed drop down menus

Dialogs that allow the choice of which feed to use, now show the feed short code and the feed name in their drop down menus.

Improved Equilla editor

Numerous fixes and improvements to handling and selection.

Improved panoramic scrollbar handling of extremely zoomed in charts

The panoramic scrollbar will now slow the scrolling process when the view port is only showing a small portion of the available data, so that it is easier to control further zooming. The zoom handles on the scrollbar thumb have been moved slightly to the outside, so that it is easier to grab the thumb to scroll rather than zoom when the thumb is at its smallest size.

Python module editor

The python module editor allows python packages and modules to be created, modified or viewed. The python module editor comprises of a package tree display on the left side, and a tabbed view of open python module files on the right hand side. MOst standard text editor commands are supported, including Python syntax highlighting. Right-click shortcuts to open python modules either from the python module editor or an Equilla editor are available.

Prompt for missing symbol properties when inserting an indicator/strategy

When adding an indicator or strategy, that has an empty symbol or symbol list input, to a chart or portfolio, an appropriate editor will be shown to select which symbol or list of symbols to use for that input.

Button to abort long running chart/portfolio full evaluation

If a portfolio or chart is running for an excessive amount of time while performing a full reevaluation of the historic data, a label will be displayed indicating the percent completion. If the chart or portfolio is visible when the label is displayed, a button will additionally be shown, given the user th opportunity to abort the evaluation. If an evaluation is aborted, the chart or portfolio will remain in an aborted state until the evaluation is restarted. Repeated evaluation aborting is useful, for example, if multiple property changes are required on a portfolio that takes some time to fully evaluate.


Synchronize stop line values for identically named items in the same workspace

Stop lines in the same, or different charts in the same workspace, can have their values synchronized when one is changed. To enable this behavior, ensure the setting File > Options > Advanced > Chart > Sync value of stop lines with the same name in the same workspace is checked (unchecked by default) and set the Alert Name property of each line to exactly the same, non-empty name (case sensitive).

Replace tools on child objects when the root instrument is replaced

Tools on chart objects will now also be saved and replaced when the symbol is replaced of one of their ancestors. The tools will be restored when the same combination of ancestor symbols is once more present.

Option to keep specific tools when symbol is replaced

Tools may now be set so that do not get replaced when a root symbol is replaced, and will instead stay visible in the chart irrespective of which symbols are present. To set a tool so that it is not saved and replaced along with its ancestor symbols, in the property inspector set the property Permanent to True. This feature may be useful when, for example, a guide line is being used to keep a fixed point in time visible, or a text tool is being used like a note book.

Triangle Tool

Draws a filled triangle.

Triangle Pattern Tool

Draws a shaded triangle projection based on four marked points.

ABCD Pattern Tool

Draws the ABCD pattern based on four marked points.

XABCD Pattern Tool

Draws either the XABCD or Cypher pattern based on five marked points.

Elliot Wave 5 line Tool

Draws either an Elliot impulse wave, Elliot Triangle Wave or Elliot Triple Combo Wave based on six marked points. If a rule conforming impulse wave can be plotted when drawing the tool, it will attempt to do so, otherwise it will infer points based on a local highs/lows approach. Any points can be repositioned after the tool is drawn.

Elliot Wave 3 line Tool

Draws either an Elliot correction wave or Elliot Double Combo Wave based on four marked points. If a rule conforming correction wave can be plotted when drawing the tool, it will attempt to do so, otherwise it will infer points based on a local highs/lows approach. Any points can be repositioned after the tool is drawn.


Strategy Equity Portfolio indicator

The Strategy Equity Portfolio indicator plots the open and closed equity curves for all items in a chart in much the same way as Strategy Equity Combined indicator does. It requires no parent, so it will not accidentally be removed if the first item from the chart gets deleted. Its other main advantage is that it will appear in a Portfolio regardless of what is selected.

Strategy Drawdown Portfolio indicator

The Strategy Drawdown Portfolio indicator plots the current and max strategy drawdown in a chart in much the same way as the Strategy Drawdown indicator does. It requires no parent, so it will not accidentally be removed if the first item from the chart gets deleted. Its other main advantage is that it will appear in a Portfolio regardless of what is selected.

Strategy Portfolio Report indicator

The strategy portfolio report indicator behaves much like the Strategy Report indicator but allows only the all data statistic set of a portfolio to be viewed in the grid without the need to attach the indicator to a specific symbol.

Ref indicator

The Ref indicator allows access to the data from another workspace series from within the current chart (or other document). This indicator can be used, for example, to access the Strategy Equity values from a portfolio and compare them to a benchmark of some type within another chart.

Strategy Equity Workspace indicator

The Strategy Equity Workspace indicator plots the combined open and closed equity for all charts and portfolios in the current workspaces.

Tool Alerts indicator

The Tool Alerts indicator adds a window to the chart that shows a ticker of the most recent tool alerts that have occurred since the indicator was added (or modified). This indicator is mainly included as a demonstration of intercepting tool alerts from Equilla.

Trend Lines indicator

The Trend Lines indicator plots trendlines onto a chart based on high and low swings of a specified strength. The indicator only works on charts with a fixed bar width.

Trend Channels indicator

The Trend Channels indicator plots trend channels based on high and low swings of a specified strength. The indicator only works on charts with a fixed bar width.

Monthly Perf Grid indicator

Shows a grid of the monthly performance (over the prior month) of the parent instrument, years are displayed as rows, and months as columns.

Renko Shadows indicator

Draws shadows on a Renko chart, showing the price movement away from the current trend.

Periodic Change indicator

Shows either the percent or absolute price change of a parent item over a defined calendar period (Day, Week, Month or Year).

Price Volume Profile Viewport indicator that plots the profile for visible bars

The Price Volume Profile Viewport indicator calculates the profile based on the data currently visible in the chart’s viewport. If a chart is scrolled, zoomed, or new data causes the visible data range to change, the profile will be recalculated.

P&F Volume Profile Viewport indicator that plots the profile for visible columns

The P&F Volume Profile Viewport indicator calculates the profile based on the columns currently visible in the chart’s viewport. If a chart is scrolled, zoomed, or new data causes the visible data range to change, the profile will be recalculated.

Price Volume Profile Intrabar indicator

Plots the intrabar volume profile for each bar in the chart when the chart is extremely zoomed in. The intrabar volume levels are generated using a lower period specified in the properties. The profiles will only be plotted if twenty or less bars are visible in the chart.

Seasonal Projection indicator option to show min/max range

The seasonal projection indicator will now display the min/max range over the selected period in addition to the average value. A new mode: Original, also allows the unnormalized price values to be plotted.

Ignore non overlapped data points in spread indicators and formula symbols

The spread indicators and formula symbols will now skip calculation on bars where the is no corresponding bar for the other leg, rather than using the prior price. Two new indicators have been added: Spread Diff (Classic) and Spread Quot (Classic) that use the prior calculation method if it is needed.

Portfolio Allocation indicator to visualize allocation by Sector/Group/Category

The Portfolio Allocation indicator can be added to a portfolio or chart to show how the portfolio is invested in a specific group or instruments. The indicator allows grouping by industry sector (for stocks), instrument type (Stock, Bond, etc.) or by using the group labels defined in a portfolio (groups can be set by right-clicking in the list of securities and selecting “Set Group” for each grouping).

Portfolio Leave Exit strategy

This strategy will exit a position in a security in a Portfolio when the security is removed from the current portfolio. The strategy may be configured to use a this bar market, this bar close or next bar market order to exit the position.

Add this bar close mode to Timed Exit (Bars) strategy

The Timed Exit (Bars) strategy now allows the choice of this bar close orders to be generated to exit a position, in addition to the previously available next bar market order mode.

Target Return Portfolio strategy

Target Return Portfolio is a relative return based portfolio trading strategy. The strategy will calculate the lowest risk portfolio for the specified annual target return rate (based on the ‘Efficient Frontier’ concept).

Dogs of the Dow strategy

The Dogs of the Dow strategy will once per year find the index members (typically from the DJI index) with the highest dividend yield and invest equally in each.

Price To Book Momentum Portfolio strategy

The Price To Book Momentum Portfolio strategy invests equally in the securities with the lowest price to book ratio, adjusted for strong relative momentum.

Top Dogs Portfolio strategy

Generic implementation of the Dogs of the Dow trading system, once per year find the best performers and invest equally in each. Uses lowest Rate of Change as the performance measure.

Sector Alloc Portfolio strategy

Invests capital according to weight given to each market sector.

Group Alloc Portfolio strategy

Invests capital according to weight given to each portfolio group. Use the Set Group option in a portfolio to define the individual groups.

Clenow Momentum Portfolio trading strategy

The Clenow Momentum Portfolio strategy is a momentum-based portfolio trading strategy (created for the S&P 500). The strategy will buy symbols that show an upward trend in an upward market, represented by a benchmark symbol (typically the S&P 500 index). Positions are sized using risk parity allocation. All trades happen on a specific day of the week and positions are rebalanced on a fixed interval.

Kahler’s Volatility Indicator

The Kahler’s Volatility indicator plots a measure for volatility derived from the expected return of a straddle strategy.

Percentile Indicator

The Percentile indicator plots the value at the boundary of the specified percentile.

Strategy Symbol Ranking indicator

The Strategy Symbol Ranking indicator lists the symbols in the portfolio ranked according to a strategy statistic.

Strategy Periodic Returns indicator

The Strategy Periodic Returns indicator plots the percent or absolute gain over a given calendar period.

Strategy Monthly Returns Grid indicator

The Strategy Monthly Returns Grid indicator plots a heatmap of the monthly strategy returns.

Buy & Hold Benchmark indicator

The Buy & Hold Benchmark indicator calculates the open equity of a theoretical Buy & Hold strategy on a specified benchmark symbol, investing the initial capital. It can be used in a chart or portfolio to compare the equity of a strategy against a benchmark Buy & Hold.

Percent Performance Periodic indicator

The Percent Performance Periodic indicator plots the percent change over the current calendar period.


New Portfolio

The new portfolio, is a type of chart that splits the view between a list of instruments on the left side, and the chart, subcharts and tools from the selected item in the list on the right side. All items in the left list are always active and contribute to each evaluation, just like in the normal chart or portfolio. Checking items in the left list allow operations such as add, remove, edit or property changes to be applied to all the items. Drawing tools, or repositioning items will only be applied to the selected instrument. If a change is not applicable to some checked items (for example, because it has been individually modified to no longer be similar), these items will be deemphasized in the list.

All instruments added to a chart will always add a new item to the list on the left, and only the selected item and its child strategies, indicators and tools will be shown on the right. And indicators that have no visible parent objects will be visible irrespective of the selected item, in this way it is possible to add benchmarks or global statistics once instead of one time for each instrument.

Portfolios have another unique property, in that they will never reevaluate executed trades automatically, the Order Editor or the Home > Data > Reload > Reload Trades command must be used to regenerate executed historic trades.

Maintain portfolio trade history after instrument change

Portfolios will maintain their trade history even if one of the portfolio items is removed, this means that the trade history for a portfolio that changes over time will remain intact and be visible in the performance report. Selected the property, Chart > Show removed items, will allow these items to be visualized in the chart.

tip: To backtest portfolio changes over time, enter the initial portfolio to generate the history. Next, enter the changed portfolio and select a bar from which this new portfolio takes effect, then pick Recalculate Trades From Bar from the bar’s context menu. Continue updating the instruments and recalculating trades for each portfolio change until the portfolio is in its most recent form.

Virtual symbol lists to manage leaver and joiner data

If a folder on disk is specified to container leaver/joiner files under “File > Options > Folders > XXX”, a new top-level symbol lists folder structure will be shown in the symbol lists sidebar, that will allow portfolios to be created or updated based on the Leaver/Joiner lists placed into the folder.

Correlation Matrix

The Correlation Matrix document is a type of scanner that calculates the results of a chosen correlation-type function for each item in a symbol list against each other item in the same (or different) symbol list. Any indicator that takes two data inputs can be selected for the correlation function, and any predefined or user-defined symbol list may be selected for either the row or column list. Either list may contain formula, combined or continuation symbols in addition to normal symbols. After changes are made to the composition of the Correlation Matrix, select Home > Table > Start Scan to begin calculation.

Multiple indicators (or the same indicator multiple times with different inputs) can be added to the Correlation Matrix.

The correlation document provides a comprehensive set of conditional formatting tools, accessed via Home > Table > Columns > Conditional Formatting.

Correlation Matrix documents, like other scanners, can be scheduled via Home > Table > Start Scan > New Schedule. Scheduled scans can be managed by clicking on the Scheduled Jobs button, to the right above the ribbon (next to the connection status and clock).

Hourly candles with a minute-based offset

It is now possible to display 60 minute candles, some minutes offset from the natural clock hour. To create hourly candles with a minute-based offset, select File > Data > Period > Other…, change the period to 1 Hour and finally set the number of minutes offset from the natural hour the bar should close on. The Change Period dialog shown from the context menu for an item in a chart, watchlist, portfolio or scanner can be used to specify an offset individually. Some typical uses of this feature include aligning the first hourly candle to the start of the days trading (set the minute offset to 30 if the trading day starts at 8:30, so the first bar will be drawn aligned at 9:30), or to offset hourly candles to generate signals some minutes before the clock hour.

Option to use only closed bars when scanning

To use only closed bars when scanning securities, set the option, “Market Scanner > Only Closed Bars” to True (default is false). This option is useful in daily periods to ensure the scan uses the data from the close of the prior session for all instruments. When using indicators with lower period inline data, it will most likely be necessary to increase the Scanner’s history length, to ensure there is sufficient intra-day data to span back to the prior session.

Override automatic trade recalculation

The Chart and Portfolio now have a new property to define how automatic recalculation of trades should be handled on an individual basis. The new property Money Management > Recalculate Trades can be set to Default, to use the settings defined in File > Options > Advanced > Strategy Orders, or set to Manual, to only allow manual recalculation of trades, using commands such as Home > Data > Reload > Recalculate Trades.

Find all references of a user function

The Equilla editor and debugger now provide a new context menu option when the caret is over a user function, to find all other uses of this function in all Equilla scripts know to the application. All references will be displayed in the output window and may be double-clicked to open the appropriate script and highlight the appropriate like of Equilla code.

Open Equity based periodic returns in the Performance Report

The Periodic Returns tables in the Performance Report now contain a new column: % Gain, that shows the return for the period relative to prior periods (and ultimately the initial capital), as if all positions were implicitly closed at the end of the period. The old column Period Return has been renamed to Realised Return.

Sortino Ratio in the performance report

The performance report now contains the Sortino Ratio in the same section as the Sharpe Ratio.

Sortino Ratio as a trading statistic

The Sortino Ratio may be queried from Equilla or used for optimization.

Sharpe Ratio as trading statistic

The Sharpe Ratio may be queried from Equilla or used for optimization.

Include drawing tool name in alert emails

Tool alert emails will now contain the the text entered in the tool’s name field.

Seasonal chart wizard for non-future contract instruments

The Seasonal Chart Wizard has been enhanced to alternatively allow selection of a single instrument instead of a future/forward contract series. This new option will then create a seasonal chart based on the single instrument, using the Seasonal Projection indicator to overlay historic years and the seasonal average.

Option to regenerate missing trades from last save point when opening a workspace

Checking the option “File > Options > Advanced > Strategy Orders > Generate orders from the last save point, when a workspace is opened.” will force all missing trades from the last save point forwards to be generated, when loading a workspace.


Workspace reference instruments

A workspace reference instrument is a new type of instrument that references another data series item in the same workspace. Reference instruments allow, for example, the output from one chart or portfolio in the workspace, to be used as input into another chart. To simplify the creation of reference instruments, the property inspector symbol search dialog (used by indicators such as Relative Performance Benchmark) now allows selection to of relevant items in the same workspace.

Reference symbols may also be used directly as inline instruments in Equilla scripts.

Reference instrument symbol format:
  • document - Display name of the document
  • element - Display name of the instrument, indicator or strategy
  • field - Name of the indicator or strategy field (not required for a reference to an instrument)
  • guid - Unique identifier of the instrument, indicator or strategy
Asterisk, backslash, forward slash and question mark characters in a document, element or field name, must be escaped with a backslash.

Workspace reference symbol lists

A workspace reference symbol list is a new type of symbol list that references other data series in the same workspace. Reference symbols lists are used exclusively in association with the List() function in an Equilla instruments block to provide a filtered list of reference symbols for processing in the Equilla code.

Reference instrument symbol list format:
RefList( "<element>[/<field>]" )
  • element - Display name of the instrument, indicator or strategy to search for, replace all or parts of the name with * for a wildcard substring, or ? for a single wildcard character.
  • field - Name of the indicator or strategy field to search for (not required for references to other instruments), replace all or parts of the name with * for a wildcard substring, or ? for a single wildcard character.
Asterisk, backslash, forward slash and question mark characters in an element or field name, must be escaped with a backslash.

Please note: Specifying a field will force a search for indicators and strategies, otherwise symbols will be searched.

Equilla code to access all Closed Equity series in the current workspace:
    equities( RefList( "*Equity*/Closed Equity" ) );

    equitySum, index;

equitySum = 0;
For index = 0 To Len( equities ) - 1 Begin
    equitySum = equitySum + equities( index );

DrawLine( equitySum, "Sum Closed Equity" );

Portfolio/chart inline instrument lists

To access all symbols or indicators in a chart or portfolio from a single indicator or strategy, without the need to have an input data series, the SelfList() function may be used:
SelfList( "<element>[/<field>]" );
  • element - Name of the instrument, indicator or strategy to search for, replace all or parts of the name with * for a wildcard substring, or ? for a single wildcard character.
  • field - Optional name of the indicator or strategy field to search for (not required for references to other instruments), replace all or parts of the name with * for a wildcard substring, or ? for a single wildcard character.
Using a SelfList in a script will force the evaluation of the script to begin only when data is available for all symbols that script references. If one symbol has no data at all this, will be the script will not evaluate.

Please note: Specifying a field will force a search for indicators and strategies, otherwise symbols will be searched.

Asterisk, backslash, forward slash and question mark characters in an element or field name, must be escaped with a backslash.

To access all symbols in a portfolio:
    symbols( SelfList( "*" ) );

For value1 = 0 To Len( symbols ) - 1 Begin
    If ( AverageFC( Close, 10 ) > Close ) of symbols( value1 ) Then
        Buy Next Bar Market Trading symbols( value1 );
To access all indicator outputs in a chart:
    indicatorFields( SelfList( "*/*" ) );

For value1 = 0 To Len( symbols ) - 1 Begin
    Print( indicatorFields( value1 ) );

Tradeable timestamps instruments

A tradeable timestamps instrument is a special type of inline instrument that contains a single bar for each bar of any other item in the same chart (or portfolio) that has a trading strategy running on it. These types of instruments contain no price data of their own, but provide a mechanism to have a root level object that can display global information about trading activities within a chart.

Tradeable timestamp instrument constant:
For example, to provide a plot of the global close equity, irrespective of how many instruments and strategies are in the chart, the following indicator could be added to the chart:
    timestamps( TradeableTimestamps );

DrawLine( GlobalClosedEquity of timestamps );

Equilla HistoryLength function

The HistoryLength function returns the maximum number of bars to be loaded, as specified in the properties. The TotalBars function returns the number of bars that were actually loaded.

Tool Alerts API

The Tool Alerts API is an Equilla extension object that can be used to intercept and react to alerts generated from tools in the same chart. The API consists of two objects, EquillaExt.ToolAlert: which will contain details of an alert, and EquillaExt.ToolAlertListener: which is used to listen for new alerts. A simple example that prints the name of the tool that generated an alert, is as follows:
    toolAlert( "EquillaExt.ToolAlert" ),
    toolAlertListener( "EquillaExt.ToolAlertListener" );

Once toolAlertListener.Reset();

While toolAlertListener.GetNextAlert( toolAlert ) Begin
    Print( Now, toolAlert.ToolName );

Function to obtain current document title from Equilla

The new function
will return the name of the current document if it has been set. If the default title for a document is being used, an empty string will be returned.

Regenerate trades parameter for RequestEvaluationFull() function

The RequestEvaluationFull() function now has an optional parameter: discardTrades. Setting this to false (the default) will schedule a full evaluation of the indicator or strategy as before. Setting the parameter to true, will schedule a full evaluation, and clear persisted historic trades when that evaluation begins.

Optionally query the group of any portfolio item with the PortfolioGroup function in a portfolio or portfolio (classic)

The PortfolioGroup method has an optional parameter that specifies which portfolio item should accessed to return the group name. This parameters is only supported in portfolios and portfolio (classic).
Once If PortfolioGroup <> PortfolioGroup( PortfolioItemNumber ) Then
    RaiseRuntimeError( "Something has gone wrong!" );

Once Print( "My group: ", PortfolioGroup );
For value1 = 1 To PortfolioSize Begin
    Print( value1, PortfolioGroup( value1 ) );

Equilla extension API text output interface

Equilla extension modules can implement the ISupportTextOutput interface to obtain a IEquillaTextOutputChannel object that has the following methods:
  • Print(text) - Writes the text to the output window
  • Log(text) - Writes the text to the application log file

Optimize keyword

The Optimize keyword indicates an input should be optimized by default. The following example shows two of the strategies inputs being used for optimization with additional optimization specific arguments:
    Optimize Period( 20, {min} 1, {max} 200, {opti stepsize} 2, {opti min} 2, {opti max} 30 ),
    Optimize StdDevs( 2.0, {min} 1.0, {max} 3.0, {opti stepsize} 0.2 ),
    Visuals( Active, Inactive ) = InActive;

    avg, upperBand, lowerBand;

BollingerBands( Close, Period, StdDevs, avg, upperBand, lowerBand );

Buy Next Bar at upperBand Stop;
Short Next Bar at lowerBand Stop;

If Visuals = Active Then Begin
    DrawLine( avg, "Mid Line", StyleDot );
    DrawArea( upperBand, lowerBand, "Upper Band", "Lower Band" );

DateAdd function supports Interval_SessionDay

The DateAdd function now supports the Interval_SessionDay period, allowing a number of in-session days to be added to the specified date.

DateDiff function supports Interval_Year, Interval_Quarter, Interval_Month and Interval_WeekOfYear

The DateDiff function now supports the Interval_Year, Interval_Quarter, Interval_Month and Interval_WeekOfYear periods. Week numbers follow the ISO8601 standard.

DatePart function supports Interval_Quarter and Interval_WeekOfYear

The DatePart function now supports the Interval_Quarter and Interval_WeekOfYear periods. Week numbers follow the ISO8601 standard.

Meta DataOptions to set evaluation start point when all inputs have data available

Setting the meta DataOptions flag DataAlignStart, will force the first evaluated bar of the indicator or strategy to be moved to the bar where there is non-invalid data for all input instruments (and then further shifted for the BackBuffer as normal).
// Start plotting only when we have data available for Data1, Data2 and Data3
    DataOptions( DataAlignStart );
DrawLine( ( Close of Data1 + Close of Data2 + Close of Data3 ) / 3 );

IndustrySector instrument property

Returns the value of the industry sector of the selected instrument (if supported by the instrument type and data feed), one of:
  • SectorUndefined
  • SectorEnergy
  • SectorMaterials
  • SectorIndustrials
  • SectorConsumerDiscretionary
  • SectorConsumerStaples
  • SectorHealthCare
  • SectorFinancials
  • SectorInformationTechnology
  • SectorCommunicationsServices
  • SectorUtilities
  • SectorRealEstate

IndustrySectorName function

Returns the localized name of the industry sector value passed as an argument, e.g.
Print( IndustrySectorName( IndustrySector of Data1 ) );

FeedName instrument property

Returns the name of the upstream feed from which the instrument is delivered. Synthetic instruments will return FeedUndefined. This field is generally used to provide specific support in an indicator or strategy (e.g. where symbol or field names differ). A selection of constants for common feeds are available:
  • FeedUndefined
  • FeedBloomberg
  • FeedRefinitivEikon
  • FeedRefinitivDatastream
  • FeedRefinitivElektron
  • FeedTrayportJoule
  • FeedTrayportTradingGateway
  • FeedTrayportJouleDirect
  • FeedMorningstarCommodities
  • FeedQuandl
  • FeedCSV
  • FeedTeleTrader
For example, code to always request the last field of a parent symbol, given the difference in naming between Eikon and other platforms:
    lastPrice( SymbolName + " " + IFs( FeedName of Data1 = FeedRefinitivEikon, "TRD_PRC1", "LAST" ) );

DrawLine( Close of lastPrice );

IsFeedAvailable() function to check if a named feed is available

The IsFeedAvailable() function takes a feed name (see constants above) and returns true if that feed is available on the current system. It does not check if the feed is up, only that it is configured to be available. This function can be used, for example, in instrument blocks to select different symbols based on which feeds are available on the system:
// Request Siemens symbol if we are on a Bloomberg system, otherwise assume Refinitiv
    symbol( IFs( IsFeedAvailable( FeedBloomberg ), "SIE GY Equity", "SIEGn.DE" ) );

DrawLine( Close of symbol );

GetKeyIndexArray function to create and access key/value data via arrays

The GetKeyIndexArray() function may be used to simulate an associative array using two or more normal arrays. The function requires one array to store keys and one or more arrays to store values. The arrays must not be resized or reordered outside of this functions, although elements in the value arrays can be read and written freely.
    keys[], values[];


// Get the index for a given key (this can resize and reorder both arrays if the keys does not yet exist)
index = GetKeyIndexArray( "MyKey", keys, values );

// Write values under the index
values[index] = Close;

// Read values without going via an index variable.
Print( values[GetKeyIndexArray( "MyKey", keys, values )] );

ToolSetFillColor() function

The ToolSetFillColor() function is used to change the current fill color of a rectangle tool drawn using DrawRectangle().

ToolSetFillExtent() function to set how much of a rectangle tool should be filled

The ToolSetFillExtent() function is used to change how much of a rectangle gets filled. Partially filling a rectangle with a transparent border is a great way to create histograms.
ToolSetFillExtent( extent, align );
  • extent - What percentage of the rectangle to fill
  • align - the edge to fill from

ToolSetColor() and ToolGetColor() for rectangles

The ToolSetColor() and ToolGetColor() functions now get and set the border color of a rectangle tool.

ToolSetLabel() for rectangle tools

The ToolSetLabel() function can now be used to set the label for a rectangle tool, which by default will be centered on the tool, two new constants have been added: ToolLabelAlignTop and ToolLabelAlignBottom that may be used with ToolLabelTextAlignLeft and ToolLabelTextAlignRight to position the label within the rectangle. Setting the flag ToolLabelAlignFar will position the label outside the rectangle.

Add color parameter to ToolSetLabel()

A forth, optional, parameter has been added to the ToolSetLabel() function, that allows the color of the label to be specifically set.

ToolDisableInspection flag to disable target cursor inspection

Tools drawn from Equilla may now have the ToolDisableInspection flag set to prevent their data values being displayed in the target cursor.

API evaluate a script when a chart is scrolled or zoomed

An Equilla script may request that it be evaluated when a user zooms or scrolls a chart, or a data change causes the bars visible in the chart viewport to change, by using either of the functions FirstVisibleBar() or LastVisibleBar(), to determine which bars are currently inside the chart’s viewport. The standard library function IsViewportChanged() may be called on each evaluation to determine if the viewport did change since the last evaluation.
If IsViewportChanged Then
If CurrentBar = FirstVisibleBar Or CurrentBar = LastVisibleBar Then
    DrawSymbol( High, "Vis" );

FitQuantityToCapital() function

The FitQuantityToCapital() function returns the closest quantity to a desired target that can by purchased with the available capital including fees.
adjustedQuantity = FitQuantityToCapital( targetQuantity, price, availableCapital );
  • targetQuantity - desired quantity to purchase
  • price - purchase price
  • availableCapital - funds to purchase with

Percentile() standard library function

The Percentile function returns the value at the boundary of the specified percentile using the interpolation method.

PercentileNearestRank() standard library function

The PercentileNearestRank function returns the value at the boundary of the specified percentile using the nearest rank method.

PercentileNearestRankArray() standard library function

The PercentileNearestRankArray function returns the value at the boundary of the specified percentile in an array, using the nearest rank method.

KVOLA() standard library function

The KVOLA function returns the Kahler’s volatility value: a measure for volatility derived from the expected return of a straddle strategy.

ReserveCapital() standard library function

The ReserveCapital() function calculates the amount of capital required to buy the specified quantity of shares and returns the total funds reduced by that amount.

ReleaseCapital() standard library function

The ReleaseCapital() function calculates the amount of capital acquired when selling the specified quantity of shares and returns the total funds increased by that amount.

Python inline instrument data arrays

Data from inline instruments declared in an Equilla instrument block, may now be accessed specifically from a Python block using the lowercase syntax:
  • variable - name of the inline instrument variable
  • field - name of the data series to access, one of: open, high, low, close, openinterest, volume, datetime.
The method always returns a 2 dimensional array containing the data rows in the first dimension and the symbols in the second dimension. The variable is specifically designed to be passed to a Pandas DataFrame. The number of data rows is equivalent to the set BackBuffer.

Accessing single symbols:
    BackBuffer( 100 );
    symbol1( "symbolName1" ),
    symbol2( "symbolName2" );

PyExec print(equilla.symbol1.close) print(equilla.symbol1.datetime) print( End;
Accessing symbol lists:
    BackBuffer( 100 );
    symbols( List( "symbolChain" ) );

PyExec print( equilla.symbols.datetime ) print( equilla.symbols.high ) End;

Python method to schedule incremental evaluation

The method equillaRequestEvaluationIncremental() may be used from Python code within a PyExec block to schedule an incremental evaluation of the script.

Python strategy signal API

Signals generated by the strategy engine (such as placing and execution of orders) can now be subscribed to from within a Python block in an Equilla Script. This feature, which is also available from the Equilla extension API, is often used to forward order events to third-party applications or order routing systems. To subscribe to strategy signals, simply provide a reference to a method that will be invoked when a list of signals is generated:
Once PyExec prices = [] def strategySignalCallback(signalList): for signal in signalList: if signal.orderType == EQUILLA_LONG_ENTRY_PLACED: prices.append(str(signal.orderPrice))
subscription = equillaStrategySignals.subscribe(strategySignalCallback)

Print( PyEval '; '.join(prices) End );
Please note: the equilla object will not be available to code executed as part of the callback.

Access 2d Equilla array from Python

Two dimensional Equilla array variables can now be accessed from embedded python code as normal python list of lists.

Map 1-based Equilla arrays to 0-based Python arrays

Calling the Python function equillaArraySetOneBasedIndexing(true) will ignore the 0th element of an Equilla array (or 2d array) when accessed from Python and remap all other elements into the range 0 to N-1. This behavior allows the typical use of Equilla arrays to remain 1 to N in the Equilla part, and 0 to N-1 in the Python part.

Smart base indent of embedded Python code

If all lines of embedded Python code share a common base indent, this indent will be treated as the start of the Python line. This behavior allows for more structured looking code when more significant mixing of Python and Equilla is required.

Python print() to output window

The Python print command will now display its output into the main Output window, in a similar way to using the Equilla Print() command.

NumPy, Pandas and SciPy modules for embedded Python

NumPy, Pandas, SciPy and their dependent modules: python-dateutil, pytz and six, are now available when using the embedded Python version. If using a standalone Python installation, instead of the embedded Python version, NumPy, Pandas, et al. will need to be separately installed into that installation as usual (e.g. via PIP).