Release Notes

Tradesignal Online Terminal 9.0.10


Crash can occur when loading a workspace containing a chart with persisted trades, when the corresponding instrument no longer exists (e.g. deleted from the data feed).

Crash can occur when loading a workspace containing a portfolio with persisted trades, when the corresponding instrument is not currently available.

End of bar detection incorrectly uses synchronized timezone when calculating date/time values, potentially leading to discrepancies when merging data in differing periods from differing source time zones.

Consistent sizing for bars in the optimizer charts.

Tradesignal Online Terminal 9.0.9


End key zooms a chart instead of moving the current viewport to the most recent data.

Tradesignal Online Terminal 9.0.8


The closed equity in the portfolio chart is now based on GlobalClosedEquity to align its output exactly with the equity indicators used in charts. This change may lead to subtly differing results if there is a current open investment that incurred costs.


Equilla CopyArray() function does not work correctly in some contexts; if target and destination array are the same.

Use GlobalClosedEquity for the portfolio chart instead of AllData::AllTrades::NetProfit.

Certain trade related functions (such as MarketPosition) perform sub-optimally.

Chart percent performance mode start month and day get swapped on non-English systems.

Poor performance when dragging an indicator from a chart with a very long history to a new sub-chart.

Reduced the quantity of autosave messages in the log file.

Tradesignal Online Terminal 9.0.7


Trade database workspace modification indications

Trades generated in a chart, portfolio or watchlist will no longer display the marker that the workspace has been modified (which will be reserved only for manual modifications). The user will still be prompted to save, if a workspace containing only trade database modifications is closed, or the application is shut down. Autosave of workspaces will continue to apply to trade database modifications.

Options to automatically save trade database only workspace modifications

It is now possible to enable the automatic saving of workspaces either on workspace close and/or application shutdown if the workspace contains only modifications to the trade database. If a workspace contains other types of modifications (typically made by the user), the save dialog will be presented as usual. The options to configure which actions can be saved automatically can be found under "File > Options > Advanced > Workspaces".


Chart created via the Insert ribbon bar incorrectly uses the history length from a watchlist, if it has focus.

Opening a new chart from a watchlist can partially fail, accompanied by an inappropriate error message, if the row is still in a loading state.

Persistent trades are not correctly stored in the portfolio.

Realtime executed trades that occur within the first second on an intrabar instrument can occasionally be restored to the incorrect bar when reloaded.

View in Chart should not be enabled for the order editor of a portfolio.

Timestamp shown in the "Recalculate Trades From" confirmation dialog shows UTC time instead of the time in the display timezone.

Tradesignal Online Terminal 9.0.6


Recalculate historic trades command is now active for watchlists.


Crash can occur when saving a chart containing a symbol with a visible display name containing an apostrophe or quote character.

Current price label on the value axis is drawn beneath the region used to show currency and unit.

Tradesignal Online Terminal 9.0.5


Buy & Hold indicator does not show results when waiting for first entry and the first strategy trade exits on the entry bar.

Tradesignal Online Terminal 9.0.4


Workspaces may not be restored to their last known desktop if the mapping database is large.

Rare race condition when manually reconnecting a chart with active strategies can lead to a crash.

Symbol link in the 'Watchlist with 3 Charts' workspace template is incorrectly set to a period link.

Tradesignal Online Terminal 9.0.3


Scope option for the Recalculate Trades command

The recalculate trades dialog, shown by selecting "Home > Data > Reload > Recalculate Trades", now additionally allows the recalculation to be applied to all charts and portfolios in the same workspace, or alternatively in any open workspace.


The recalculate trades command is always disabled for the portfolio.

Tradesignal Online Terminal 9.0.2


TeleTrader continuations for BRN can occasionally pick a future strip instrument instead of the future contract instrument.

Conditional next bar orders from the previous bar should be activated when opening a workspace during the following bar, even if the workspace was closed for the duration of the previous bar.

Data loading complete event is sometimes lost when clearing and reloading cached TeleTrader data (e.g. a stock split) during a scan.

Tradesignal Online Terminal 9.0.1


Switch to allow news document to scroll to new headlines

The news document now has a property that when checked, will always scroll the headline list to the top when a new headline arrives.


Zooming in with the right mouse button on the date axis can cause the viewport to snap data to the right side when future dates are shown.

Certain rare interactions with the ribbon bar could lead to red crosses appearing in place of parts of the ribbon.

Tradesignal Online Terminal 9.0.0


Tradesignal Online Terminal 9.0 workspaces will not be usable in earlier Tradesignal Online Terminal versions

A workspace created, or overwritten, by Tradesignal Online Terminal 9.0 or above, will not be able to be opened by earlier versions of Tradesignal Online Terminal (8.x and earlier). Workspaces created by earlier versions will continue to be usable by version 9.0 and later (i.e. it is fully backward compatible). If in doubt, ensure workspace backups are secured before upgrading.

Ctrl with arrow keys will now zoom

To normalize the handing of modifier keys with mouse and keyboard, the Ctrl key will now be universally used to zoom charts. The Shift key will act as a modifier to the pan or zoom operation.

Percent performance mode in seasonal charts

The default handling for percent performance in a seasonal chart has changed to calculate the performance from the seasonal start date of each contract, agnostic of the year, instead of from the start of the underlying data.



641 Intrabar Backtesting (Look-Inside-Bar)

Backtesting and optimization can now use lower period data to find more accurate fill prices for the historic trades generated by a strategy. To enable this feature, select the desired period for the chart, watchlist, scanner or portfolio in the property inspector under “Money Management > General > Intrabar Backtesting”. Available periods include: Tick, 1 Minute, 5 Minutes, Hourly and Daily. Backtesting will only begin at the point where there is sufficient historic data available for both the original and lower period data sets. Selecting a period of Tick will guarantee that each tick is checked for the potential fill price, although typically the amount of historic tick data available will result in the shortest back testing history. When using cumulated periods (such as hourly), the normal bar assumption algorithm will be used for price finding within the lower period. It must be noted that “this bar at market” orders will continue to be treated as “this bar on close” orders for historic bars, when using a lower period for backtesting. Picking a period that is larger than the current instrument will result in an error.

The Strategy Equity Combined Indicator has been enhanced to indicate the range of data covered by the backtest, where this is less than the amount of visible data in the chart. The property HighlightBacktestingRange can be set to False, to disable this indication.

2018 Persistent Strategy Trades

Historic trades, generated when a strategy is first added to a chart or subsequently added in realtime, will now be saved into the workspace until a user-specified action causes them to be regenerated. By default, historic trades will be regenerated any time the configuration, structure or properties of a chart or its contents change, as it did in prior versions of the application. The main default difference is that closing and reopening of a workspace will no longer regenerate historic trades. When opening a saved workspace containing historic trades, new trades will only be generated from the point of opening onward, not from the point of time when the workspace was closed. The Order Editor should be used to manually manipulate and/or regenerate historic trades.

It is also possible to configure which actions will cause an automatic full regeneration of historic trades, these options are available in the application settings under, “File > Options > Advanced > Strategy Orders”. By default all of the available actions will trigger a full regeneration of historic trades.

If a chart is opened from a watchlist or strategy, any persistent trades from the contained strategies will be forwarded to the new chart, so that results will generally concur (assuming an equivalent history length is configured).

2018 Order Editor & Manual Strategy Trades

The Order Editor, is a new document that allows Strategy Orders (and the trades they generate) to be manually manipulated after a Strategy has generated. The Order Editor also allows additional orders to be manually entered, that are not connected to a strategy. To show the Order Editor for a chart or portfolio, ensure the chart or portfolio is selected, then on the Toolbar select, “Insert > Trading > Order Editor”. All historic Strategy Orders present will be displayed grouped by the instrument selected in the drop-down menu at the top of the editor window. Any orders generated by the parent chart or portfolio in realtime will appear automatically in the Order Editor.

New orders may be added and existing orders may be modified or deleted. After any changes, the “Apply Changes” button must be pressed. Clicking on the “Recalculate” button will delete and regenerate all Strategy Orders. To delete and regenerate from a specific order onward, right-click on the order and select “Recalculate From” from the context menu. Selecting “View In Chart” from the context menu will scroll the parent chart and highlight the bar on which the Strategy Order was filled.

Important: The application will show a warning if a workspace is closed without selecting “Apply Changes” when there are pending changes. If this warning is ignored and the close operation continued, all non-applied changes will be lost. The workspace will only be actually marked as “modified” when the changes are applied.

685 Buy & Hold indicator

The Buy & Hold indicator calculates the open equity of a theoretical Buy & Hold strategy investing the initial capital. It can be used in a chart to compare the equity of a strategy in the chart against Buy & Hold. The indicator will also generate a trading statistic for Buy & Hold, that will be added to any Strategy Performance Report generated from the chart or portfolio.

2138 Value at Risk indicator

The Value at Risk (VaR) indicator calculates the Value at Risk for the strategies within a chart or portfolio for the coming period (to a defined degree of confidence), based on strategy equity changes over a prior observation period. Conditional Value at Risk is also plotted by the indicator to show the mean average of all strategy equity changes exceeding Value at Risk.

1013 Jump to trade in chart from performance report

Using the “Show in Chart” option from the toolbar, context menu or double-clicking on a trade, filled order or point in one of the performance report graphs, will now scroll to and temporarily highlight that trade in a linked chart.

1013 Jump to trade from graph in the performance report

Selecting the context menu option, “Jump to Source” when right-clicking on a trade in the Maximum Adverse Excursion, Maximum Favorable Excursion or Trade by Date graphs, will swap to and highlight the trade in the trades list of the performance report.

1490 Charts link to position managers by default

Charts containing strategies, will now automatically make their position information available to any position manager element in the same workspace. To prevent a chart from publishing its results to position managers, click the small plug item in the bottom right corner of the chart window and select “No Broker”.

2963 Automatic order routing settings for handling data feed outage

It is now possible to force either a notification, or stopping of automatic order routing if any instrument in a chart or watchlist is stale for a specified period of time. To enable this feature for a specific order routing account, set the option under, “File > Options > Order Routing > [account name] > Datafeed” to the desired action, and set the period of time that must elapse. An instrument is stale if either the connection to the upstream data source is lost, or if the upstream data source indicates that the instrument is no longer up-to-date.

3888 Commission/Lot money management property

The Commission/Lot property in the money management category of charts, portfolios, watchlists and scanners allows the commission per contract lot to be specified. This value is similar to the commission per contract, but the value entered will be internally multiplied by the lot size of the security to calculate the equivalent commission per contract.

3888 Slippage/Lot money management property

The Slippage/Lot property in the money management category of charts, portfolios, watchlists and scanners allows the slippage per contract lot to be specified. This value is similar to the commission per contract, but the value entered will be internally multiplied by the lot size of the security to calculate the equivalent slippage per contract.

3884 Instrument specific slippage property

The instrument assets now contain an additional “Slippage/Lot” property that allows a specific slippage value for this instrument to be set that will be used in preference to any Slippage/Lot value set in the properties of a chart, portfolio, watchlist or scanner. The property can be set to an absolute value (per Lot), a percentage value (followed by a % character), or left blank (to use the chart default value).

3884 Slippage Source property for charts, portfolio, etc.

The Slippage Source property in the money management settings can be set to one of:
  • None - Do not apply slippage to the backtest
  • Settings - Use the slippage values from the Money Management settings.
  • Settings & Assets - (Default) Use the slippage value if set in the instrument assets or from the Money Management properties otherwise.

3940 Per Lot calculation mode for automatic stop functions

The calculation mode property for automatic trading stops and limits has a new option “Lot”. This mode is similar in behavior to the “Contract” mode, but will first multiply the entered stop value by the lot size of the security, in order to determine the per contract stop amount. The corresponding Equilla functions SetStopLot() and SetStopMode(ModeLot) are also available.


2671 Conditionally optimize strategies

It is now possible to generate optimizer results where the strategies in the chart are selectively enabled and disabled in the same way as other parameters are varied. In this way, it is possible to compare the performance of different strategies in the same optimization results. To vary the strategy, add the “Active” property of each strategy in the optimization wizard, and select both “True” and “False” as possible values. After the optimization is complete, all permutations of activations of the selected strategies will be included in the result set.

A new column has been added called “Active Count” that contains the number of chart objects that were explicitly active during that run. Adding a filter on this column where the value equals one, is a simple way to compare the results of exactly one of the selected strategies being active at a time.

A second new column called “Active Items” is available that contains the name of all of the chart items that were made explicitly active on that result row. Grouping the results by this column, provides a simple way to visualize the results from specific strategies, or combinations of strategies.

3670 Disable irrelevant chart objects from being optimized

Chart objects that have no effect on optimization results, may now be selectively disabled in the optimizer wizard in order to improve the optimization time of the chart. In the optimizer wizard, select the “Active” property of those chart objects that should be disabled, and select “False” as the only possible value for this property. Please note, disabling chart objects should only be done on items that have no effect on the strategies in the chart (for example, display only indicators), indicators that set global variables or form inputs into strategies should not be disabled.

Please note: Applying a result row containing disabled indicators to a chart, will disable the indicator in the chart (which would then have to be re-enabled in the chart’s properties).

3669 Optimize Point & Figure, Renko, Kagi & Three Line Break box/brick size and reversal values

Brick/box size and reversal chart type properties may now be selected for parameter variation in the optimizer wizard.

3708 Hide optimizer results graph

The optimizer now has a property called “Show Graph” that can be used to toggle the visibility of the graph to the left of the optimizer results grid.

1144 Include/Exclude recent chart/portfolio changes in new optimizer run

The optimizer has a new property “Include recent chart/portfolio changes” that determines if any changes to the original source document will be included when a new optimizer run is started. The default value is to include recent changes.

3343 More efficient optimizer work scheduling

The optimizer will now use its allocated thread in a more optimal way to minimize the case where a single long running job may remain after all other jobs are complete.


1178 P&F Trends Indicator

This indicator will draw all major 45-degree trendlines into a Point and Figure chart and additionally draw appropriate inner trendlines.

2968 P&F Vertical Count Indicator

This indicator will draw all non-invalidated vertical count markers into a Point and Figure chart.

2967 P&F Horizontal Count Indicator

This indicator will draw all non-invalidated horizontal count markers into a Point and Figure chart.

604 P&F Volume Profile Indicator

The indicator will draw a Price Volume Profile with each column representing the volume for a horizontal row of boxes. The “Period” input is the number of recent P&F columns to include in the calculation.

3165 Point & Figure property to force fixed box size recalculation after replacing the instrument

Point and Figure charts have a new property called “Recalculate Boxsize” which can be set to “Never” or “After Instrument Replace”. This property will be enabled when the Box Size Mode is set to “Fixed Price” or “Fixed Points”. If the property is set to “After Instrument Replace” and the instrument in the chart is replaced, the box size will be recalculated to a suitable value to fit the price range of the new instrument. If the property is set to “Never” the Box Size will keep its automatic or manually set value irrespective of other changes to the chart.

3165 New default settings for Point & Figure charts

New Point & Figure Charts will now be created using a fixed box size calculated appropriately for the selected instrument, they will default to using the Close calculation method and have alternate coloring based on consecutive bars. These values may be changed to the previous defaults using the property inspector as normal.

604 Equilla: BoxesDiff() function

Calculates the number of boxes between two prices on a point and figure chart.

3365 P&F Equilla Functions

The following user functions have been added to the Equilla, to make it simpler for strategy and indicator authors to work with P&F charts:
  • PF_AddBoxes - Returns the box value after adding a number of boxes to the input box value.
  • PF_BoxesDiff - Returns the number of boxes difference between two box values.
  • PF_ColumnHeight - Returns the number of boxes in the current column.
  • PF_IsOColumn - Returns true if the current column is an O column.
  • PF_IsXColumn - Returns true if the current column is an X column.
  • PF_NearestHorizontalTarget - Returns the nearest horizontal price targets in either direction (if there are any).
  • PF_NearestVerticalTarget - Returns the nearest vertical price targets in either direction (if there are any).
  • PF_TakeHorizontalCount - Returns the horizontal count for the current column (irrespective of which pattern may have been detected).
  • PF_TakeVerticalCount - Returns the vertical count for the current column (irrespective of which pattern may have been detected).
  • PF_Trend - Returns the direction and value of the current major trend.
The following functions return true if their respective pattern is detected on the current column:
  • PF_Signal_Ascending_TripleTopBreakout
  • PF_Signal_BearishCatapult
  • PF_Signal_BearishFulcrum_1Box
  • PF_Signal_BearishSemiCatapult_1Box
  • PF_Signal_BearTrap
  • PF_Signal_BullishCatapult
  • PF_Signal_BullishFulcrum_1Box
  • PF_Signal_BullishSemiCatapult_1Box
  • PF_Signal_BullTrap
  • PF_Signal_Descending_TripleBottomBreakdown
  • PF_Signal_DoubleBottom
  • PF_Signal_DoubleBottomBreakdown
  • PF_Signal_DoubleTop
  • PF_Signal_DoubleTopBreakout
  • PF_Signal_HighPole
  • PF_Signal_LongTailDownReversal
  • PF_Signal_LowPole
  • PF_Signal_QuadrupleBottom
  • PF_Signal_QuadrupleBottomBreakdown
  • PF_Signal_QuadrupleTop
  • PF_Signal_QuadrupleTopBreakout
  • PF_Signal_SpreadTripleBottom
  • PF_Signal_SpreadTripleBottomBreakdown
  • PF_Signal_SpreadTripleTop
  • PF_Signal_SpreadTripleTopBreakout
  • PF_Signal_TriangleBreakdown
  • PF_Signal_TriangleBreakout
  • PF_Signal_TripleBottom
  • PF_Signal_TripleBottomBreakdown
  • PF_Signal_TripleTop
  • PF_Signal_TripleTopBreakout

P&F mode for chart Full Grid

The default Full Grid mode for a new chart will now change to box grid mode when the chart is set to Point & Figure (P&F); in the same way as Graph Paper mode does. A new grid mode called “Full Grid (simple)” has been added that will render the full grid view without any special handling for P&F.

648 Color point and figure boxes based on year change

Point and figure charts can now change the box color based on yearly time transitions, in addition to the existing options to change based on column, hour, day, week and month. To change the box coloring to yearly, first select the instrument in the chart and then select “P&F > Color Change > Yearly” in the property inspector.

4188 Setting P&F logarithmic boxsize automatically sets value scale to logarithmic

If a sub chart only contains a point and figure root element, and its box size mode is changed to logarithmic, the price scale of the sub chart will be automatically changed to logartihmic. Additionally, the value scale of such a sub chart will also automatically change away from logarithmic, if the box size mode is changed to something other than logartihmic.


3554 Import a list of user-defined holidays from another symbol

The holiday tab on the assets dialog for an instrument now has an additional “Import” button. When clicked, a dialog will be shown that presents a list of all other symbols for which custom holidays have been added. Selecting on of these symbols will import all custom holidays from the chosen symbol into the holidays list for the current instrument.

3500 Expiry date for spreads used in seasonal charts

If a spread instrument is used in a seasonal chart and that spread contains at least one expiring item, the seasonal chart will now use the date of expiry of the earliest found expiring item to determine how the spread data should be aligned in the chart.

3194 Wider zooming out in a chart

When zooming out in a chart, instead of stopping when the full date time range is visible, the operation will now continue until either the user stops, or 50% of the horizontal space is occupied by future data. The new handling allows boxed chart types (Point & Figure, etc.), to be correctly zoomed out to show all available data horizontally and vertically.

2481 Show contract year in the legend of a seasonal chart

The legend of a seasonal chart can now be modified to show the actual year of each preceding contract, instead of just the offset from the current contract (the default). To display contract year in the legend, select “Instrument > Seasonal > Legend Mode > Show Years” in the property inspector.

2810 Spread Diff V Indicator

This indicator will draw plot the spread difference between two parent symbols, it will additionally provide a volume value output that a child indicator (such as Volume or Price Volume Profile) may use to process volume data. The volume value can be configured via an input to be the Maximum, Minimum, Mean or Summation of the volumes of the two parent symbols.

2810 Spread Quot V Indicator

This indicator will draw plot the spread quotient between two parent symbols, it will additionally provide a volume value output that a child indicator (such as Volume or Price Volume Profile) may use to process volume data. The volume value can be configured via an input to be the Maximum, Minimum, Mean or Summation of the volumes of the two parent symbols.

3773 Reduced width for the chart value scale

The value scale for the chart has had some unnecessary space removed to make it somewhat more compact.

3772 Display name basis for chart object identifier

Chart objects are now identified by their display name (with uniqueness postfix). In earlier versions, the instruments symbol was used. The symbol remains the fall back if no display name is found.

3772 Simplified default chart legend

The default chart legend for instruments and indicators has been changed to the short format. Medium and Long formats have been updated slightly to reflect incrementally more information.

3772 Property to toggle Percent and Net Change for indicator legend

A new chart legend property has been added, found in the inspector under: “Chart > Legend > Indicator Change”. This property may be used to enable indicator legends to display net and percent change values in the same way as their parent object is configured. By default showing net and percent change for indicators is disabled.

4025 Keyboard support for panning the chart one column at a time

Holding Shift when panning with the keyboard or using the mouse wheel, will now pan the chart one column (candle, bar, etc) at a time. When zooming with the mouse wheel or keyboard (with Ctrl pressed), holding Shift will also zoom one column at a time.

3260 Increase maximum continuation rollover days before expiration

The continuation wizard now allows a continuation to roll up to 99 days before expiration (up from 31).

3858 Candlestick chart’s wick using the candlestick body color

Candlestick and Candle Volume charts may now be configured to show the wick with the same color as the body. To enable this behavior, set the “Border Color” property to “None” and ensure the “Show Frame” is set to “True” (the default).

3206 Percent performance in seasonal charts

A seasonal chart placed into percent performance mode will now generate the performance curve for each of the shown contracts based on the specified starting point agnostic of the specified year. The default chart generated from the seasonal chart wizard will be a percent performance chart unless the “Show percent performance” box is unchecked.

4148 Percent performance for the Seasonal Average and Seasonal Average Symbol indicators

The seasonal average indicator has a new property called “PercentPerf” that may be set to “True” to change the calculation to be the percent performance from the charts seasonal start point (as specified in the chart’s properties).

4393 Spreads in seasonal charts

Spreads (and other formula symbols) with a defined expiry date, may now be dragged and dropped onto a chart in seasonal mode, and will automatically be shown as a color pooled line chart. The seasonal chart wizard now has a “Finish” button on each page that allows an empty seasonal chart to be created where only drag and drop of symbols is required.

4457 Workspace-wide target cursor highlighting

Holding Ctrl when using the target cursor in a chart, will cause other charts in the same workspace to scroll to and highlight an appropriate date/time. This behavior can be configured in “File > Options > Advanced > Workspaces”, to apply instead to local or global symbol linked charts, or to be disabled.

677 Volume-weighted average price (VWAP) indicator

This indicator plots the VWAP value for the parent security and its period.


2463 Publish Charts to Microsoft Office documents

Publish to Office allows charts from saved workspaces to be added via Drag & Drop to Word, Excel and PowerPoint documents. Charts added to office documents may be automatically updated to reflect new prices and/or other changes to the charts, either by a single button press, or by setting an automatic update schedule.

To add a chart to an Office document, on the toolbar select “File > Publish to Office > Click here to add a new office document…”. A wizard will be started that will allow either a new or an existing office document to be selected and opened, and charts from any open workspaces to be dragged and dropped into it.

To update the charts in a saved Office document, select the document under “File > Publish to Office > Document” and press the Update Charts button.

To set a schedule for when a document should be automatically updated, select the document under “File > Publish to Office > Document”, then click “Click here to schedule and automatic update…”, then enter a time and on which days the update should occur. Please note, Tradesignal must be running and be connected to the appropriate data feeds for scheduled updates to occur.

2582 One-click reload of updates to shared workspaces

Users will now be offered the option to reload an open shared workspace if another user saves changes to it. When another user saves changes to a workspace that is in a package that has been marked as “Shared” under “File > Options > Folders > Packages”, a notification will be displayed indicating the workspaces have been modified. If the workspace is currently open, the notification will be modal and contain a Reload button, which will reload the open workspace with all changes present.

To disable the dialog presenting the option to reload workspaces, uncheck the option, “File > Options > Folders > Packages > Ask to reload shared workspaces after modification by another user”.

Please note: If a workspace is reloaded, all unsaved changes will be lost.

2582 Descriptive alerts of changes in shared packages

The alert messages that get generated when a change occurs to content in a shared package will now say exactly which file has changed and the type of change (added, deleted, modified, etc.). To be informed of changes to package content by other users, check the “Shared” box for the package under, “File > Options > Folders > Packages”, or right-click on the package in the toolbox and ensure the “Shared (keep synchronized)” option is checked.

572 Alert email with workspace screenshot

Alerts generated by a chart and sent via email will now contain a screenshot of the workspace at the time the alert was generated. This feature can enabled/disabled by toggling the checkbox at “File > Options > Alerts > Email alerts > Add a screenshot to chart alerts”. The maximum number of screenshots that can be attached to a batch email can be set under “File > Options > Alerts > Email alerts > Max screenshots per email”. The size of the generated screenshot can be set at “File > Options > Alerts > Email alerts”.

573 Prevent specific charts, watchlist and portfolios from sending email alerts

Each chart, watchlist and portfolio now has a new property (e.g. “Properties > Chart > Alerts > Allow Email Alerts”), that can be used to selectively enable or disable the forwarding of an alert to the specified email recipient. Email alerts for a given alert type will need to be enabled in the options under, “File > Options > Alerts > Alert Settings”, for this new property to be used.

573 Send email alerts from specific charts, watchlists and portfolios to different recipients

Each chart, watchlist and portfolio now has a new property (e.g. “Properties > Chart > Alerts > Email Address”), that can be used to send all email alerts from that document to a specific email address, that may be different from the standard recipient set in the options. This property should be left empty to use the default recipient’s address set in the options under, “File > Options > Alerts > Email Alerts > Recipient”.


4075 Formula symbols as first-class instruments

Formula symbols now behave as first-class instruments, in that they may be freely inserted, replaced, deleted, traded or have templates applied to them in the same way as an exchange provided symbol.

This new behavior overcomes the two major limitations of the older mechanism where it was not possible to update a chart with items from a watchlist that contained a mix of formula and non-formula symbols, and that it was not possible to apply a template to a chart containing a formula symbol.

Formula symbols will only support a subset of Equilla commands, specifically those that do not involve sharing (globals) or persisting data, extension interfaces and non-price output mechanisms (print, alert, etc.). The formula editor will generate an error if non-supported commands are used.

The display name of the formula symbol will typically be overridden using the Equilla meta property: LongName().

The expiry date of a formula symbol may be defined using the Equilla meta property: OutputExpiryDate(). By default a symbol will use the earliest expiry date it finds among its embedded symbols.

Formula symbols added to the symbol sidebar can be accessed by their name from the command line or as inline instruments in indicators, strategies or other formula symbols. The first symbol matching the selected name will be selected, so use unique names wherever possible. When accessing a formula symbol from the command line or inline instrument, any inputs defined in the formula symbol may be additionally provided in one of the following ways:
  • symbolName - Unique name of a symbol in the symbol sidebar
  • inputValueN - The value to set the corresponding input to, in the order defined in the formula symbol. Use the plus (+) character in place of spaces. Use URI hex encoding for other characters ("%xx" where xx is the hex code of the character).
Alternatively to override only specific inputs _in any order_, use the following format:
  • symbolName - Unique name of a symbol in the symbol sidebar
  • inputNameN - The name of the input as specified in the formula symbol inputs block.
  • inputValueN - The value to set the corresponding input to. Use the plus (+) character in place of spaces. Use URI hex encoding for other characters ("%xx" where xx is the hex code of the character).
By way of an example, first code for a formula symbol called RSI:
// Formula symbol named RSI that requires a symbol code and optional period.
    Symbol( "", InputTypeSymbol ),
    Period( 14, 1 );

    inst( Symbol );

DrawLine( RSI( inst, Period ), "RSI" ) );
And now using that formula symbol in an indicator, that compares our RSI value against the dax RSI:
    Period( 10, 1 );

    rsiDAX( "RSI?.DAX&" + CStr( Period ) );

DrawLine( rsiDAX, "DAXRSI" );
DrawLine( RSI( Close, Period ), "RSI" );
Please note: This new behavior will only apply when a formula symbol is newly added to a workspace, items in existing saved workspaces (created prior to version 9) cannot be migrated.

Formula symbols created prior to this version will appear differently in a symbol list (greyed out), and will continue to operate in the old way if used.

4221 Templated Formula Symbol Wizard

The editor for creating and editing formula symbols has been enhanced to support Formula Symbol templates, in addition to its function to directly edit the Equilla source code of a formula symbol. A drop down menu at the top of the dialog will allow a user to pick from which preexisting symbol template they would like to create a symbol from, or just to enter the Equilla code directly.

If an existing formula symbol template is selected, the dialog will present the fields specified in the template that the user must fill in (with symbol, currency or unit information), in order to generate the new formula symbol.

A formula symbol generated from a template can be edited using the template so long as the source code does not get modified. If the source code does get modified, the dialog will only allow the source code to be edited from that point onward.

The following formula symbol templates have been added as standard:
  • 01 Spread Diff Template
  • 02 Spread Diff Bars Template
  • 03 Spread Quot Template
  • 04 Spread Quot Bars Template
  • 05 Spark Spread Template
  • 06 Clean Spark Spread Template
  • 07 Dark Spread Template
  • 08 Clean Dark Spread Template
  • 09 Climate Spread Template
  • 10 Crack 3-2-1 Spread Template
  • 11 Crush 1-1-1 Spread Template
  • 12 Custom Session Symbol Template

4221 Formula Symbol Templates

The Formula Symbol Wizard uses predefined Formula Templates that it finds on the local system. Formula Templates are nothing more than normal indicators that:

  1. Use the category tag SymbolTemplate, e.g.: Meta: Categories(“SymbolTemplate”);
  2. Use one or more field selectors in place of symbol definitions.

The template must specify field selectors in one of the following formats:
  • {{symbol:<FieldName>}} - Presents a symbol picker field with the label
  • {{currency:<FieldName>}} - Presents a currency picker field with the label
  • {{unit:<FieldName>}} - Presents a trading unit picker field with the label
When the Formula Symbol Wizard encounters these field selector it will generate an appropriate field picker for the user to select the symbol, unit or currency they desire.

Normally each field found in the template will be presented as a vertical list of data entry fields, preceded by the specified FieldName label. If a currency of unit field has the same FieldName as a symbol field in the same template, these pickers will be generated on the same row as the symbol entry box.

A formula template for a spread between two symbols could look as follows:
    Categories( "SymbolTemplate" ), // Defines this indicator as a Symbol Template
    LongName( "%i1 - %i2" ); // Displays the display name of the first and second inline instruments in the script

    LegA( "{{symbol:Leg A}}" ), // Defines a symbol picker called "Leg A"
    LegB( "{{symbol:Leg B}}" );
// Defines a symbol picker called "Leg B"

DrawLine( Close of LegA - Close of LegB, "SPD" );
By default, indicators in the SymbolTemplate category will be hidden in the indicator sidebar, to show them, check the option under “File > Options > Advanced > Templates > Show formula symbol templates in the toolbox”.


2869 New Workspace Backstage Page

The backstage New button has been replaced with a page that offers the ability to create a new blank workspace, as well as several workspace templates that when opened will ask some questions to automatically fill in various lists and charts.

2869 Open Workspace Backstage Page

The backstage Open button and Recent Page have been replaced with a single unified page available by selecting “File > Open” form the toolbar. The Open page contains a list of all packages on the left side, and the workspaces in the selected package on the right side. A special folder called “Recent” is listed above the packages, selecting it will display recently accessed workspaces. Clicking on a workspace will open it. To access the old open dialog, click the link “Browse all file types…” at the bottom of the Open page. To open multiple workspaces in a package at once, check the box “Select multiple workspaces”, then click each workspace to open to mark them, and finally click the link “Open selected workspace(s)” at the bottom of the page.

2869 Option to display Open Workspace Backstage Page on start

If no other option is set to load previous open, or specific workspaces, and there are no workspaces to recover, then the Open Workspace backstage page will now be shown if the user has some saved workspaces, otherwise the New Workspace backstage page will be shown. To disable the automatic showing of the backstage view, uncheck the option, “File > Options > Personalize > On Startup > Show backstage open (or new) panel if no workspaces are loaded”.

884 Reference guides and Improved Tooltips for Indicators and Strategies

The help library has been expanded to include support for guides to the standard set of indicators and strategies. This reference library may be accessed in multiple ways, either:
  • Directly from sidebar by selecting “Help > Indicators & Strategies” and then drilling down to the desired article.
  • Right-clicking on an indicator or strategy in the sidebar and selecting “Show Help”.
  • Right-clicking on an indicator or strategy in a chart and selecting “Show Help”.
Hovering over an indicator or strategy in the sidebar will now also show a localized synopsis of that item.

Hovering over an input for an indicator or strategy in the property inspector (for example the “Period” input for Bollinger Bands), will now show a synopsis for that input.

Please note: Building the complete reference library for all indicators an strategies is a task that will continue over successive versions of Tradesignal. If an indicator or strategy is not mentioned under “Help > Indicators & Strategies”, then the article for that item has not yet been completed.

3277 Container-based workspace format

A new workspace file format has been implemented, that contains all the existing workspace content in addition to the optimizer and performance report databases in a single, compressed, file on disk. Previously, the optimizer and performance report databases were separate files stored alongside the workspace file.

3079 Theming support for all dialogs

All dialogs have now been updated to support the dark and light application themes. Some wizards, such as new symbol, new strategy and new indicator have had their first step replaced with a simple context menu choice, to speed creation of common elements.

4084 Pick from existing symbol lists when adding a symbol in the combined symbol dialog

Adding or editing a symbol in the combined symbol dialog, now allows the symbol to either be searched for, or picked from the list of pre- or user-defined symbols.


2943 Equilla: Trendline Labels

Trendlines drawn from Equilla via the DrawTrendline() function can now have a textual label attached to them using the new function:
ToolSetLabel( tool_id, text, [font_size], [flags] )
Flags will allow some of the normal text augmentation flags (bold, italic or underline), in addition to the following flags to control how the text is anchored to the trendline (default is Mid/Near):
  • ToolLabelAlignStart - text is anchored before the start of the line
  • ToolLabelAlignMid - text is centered to the near-side of the line
  • ToolLabelAlignEnd - text is anchored after the end of the line
  • ToolLabelAlignNear - adjusts the text to the near-side of the line
  • ToolLabelAlignFar - adjusts the text to the far-side of the line
  • ToolLabelTextAlignLeft - Left aligns multi-line text
  • ToolLabelTextAlignCenter - center aligns multi-line text
  • ToolLabelTextAlignRight - Right aligns multi-line text
The following flag can additionally be set to force the labels to be drawn even if part of the line is outside of the chart’s view port:
  • ToolLabelDrawIfOutsideViewport - Adjusts the label’s position so that it is always in the view port if part of the line is also in the view port

2969 Equilla: Trendline Cap Shapes

Trendlines drawn from Equilla via the DrawTrendline() function can now have their ends decorated with additional symbols, by setting the following flags for the tool using the ToolSetFlags() function:
  • ToolCapStartFlat - line begins with a T shape marker
  • ToolCapStartFlatDynamic - line begins with a T shape marker that can gain an arrow when the line exceeds the view port boundary
  • ToolCapStartArrow - line begins with a filled arrow head
  • ToolCapStartArrowOpen - line begins with an open arrow head
  • ToolCapEndFlat - line ends with a T shape marker
  • ToolCapStartFlatDynamic - line end with a T shape marker that can gain an arrow when the line exceeds the view port boundary
  • ToolCapEndArrow - line ends with a filled arrow head
  • ToolCapEndArrowOpen - line ends with an open arrow head
The following flag can additionally be set to force the cap shapes to be drawn even if the end is outside of the chart’s view port:
  • ToolCapDrawIfOutsideViewport - draws a cap just before either end of the line leaves the viewpoint

2138 ValueAtRisk_VarianceCovariance Equilla functions

The Value at Risk (VaR) indicator calculates the Value at Risk for the strategies within a chart or portfolio for the coming period (to a defined degree of confidence), based on strategy equity changes over a prior observation period. Conditional Value at Risk is also plotted by the indicator to show the mean average of all strategy equity changes exceeding Value at Risk. Equilla functions have been added to use the VaR values in custom strategies and indicators:
  • ValueAtRisk_VarianceCovariance() - Returns as output parameters, both the VaR value and the conditional VaR.
  • ValueAtRisk_Value() - Returns the VaR value.
  • ValueAtRisk_ConditionalValue() - Returns the conditional VaR value.

Equilla: InstrumentDefinition function

The InstrumentDefinition function will return the exact specification of whichever parent or inline instrument is specified:
    parentSpec( InstrumentDefintion of Data1 );
This function is most commonly used to obtain access to the parent instrument data when processing a calculated chart type, such as Renko or Point & Figure.
    rawParentInst( InstrumentDefinition of Data1 );

If BarType = BarTypePointAndFigure Then
    Print( Close of rawParentInst )
    Print( Close of Data1 );

3342 Non-visible indicator output data fields

A formula symbol may now output additional data series that are not visible in a chart (for example a volume series). This is achieved by using the DrawLine() function and setting the line width to zero. The resulting chart will not show a line, but the data may be used in child indicators. The following example shows how a hypothetical spread symbol can have a volume series attached to it, which would appear when you add the Volume indicator to the spread in a chart (or indeed the Price Volume Profile indicator):
DrawLine( Close of 'symbol1' - Close of 'symbol2', "Spread" );
DrawLine( MaxItems( Volume of 'symbol1', Volume of 'symbol2' ), "SpreadVol", Default, 0, Default, Default, TypeVolume );

3940 ModeLot parameter for SetStopMode() Equilla function

This mode is similar in behavior to ModeContract, but will first multiply the entered stop value by the lot size of the security, in order to determine the per contract stop amount.

3940 SetStopLot() Equilla function

This mode is similar in behavior to SetStopContract(), but will first multiply the entered stop value by the lot size of the security, in order to determine the per contract stop amount.

3960 Equilla multi-time fame iteration API

This API allows an Equilla script to visit each of the bars in a lower period instrument that fit within the current bar of a higher period instrument.
offsetStart = BarOffsetStart( DataKey [ , ReferenceSession, ReferenceSessionTimezone [ , MinuteOffset ] ] ) of LowerPeriodInst
offsetEnd = BarOffsetEnd( DataKey [ , ReferenceSession, ReferenceSessionTimezone [ , MinuteOffset ] ] ) of LowerPeriodInst
  • DataKey - Unique identifier of the reference instrument, as returned from DataKey of Data1.
  • ReferenceSession - The reference session in the format returned from the BuildSession() function.
  • ReferenceSessionTimezone - Timezone of the reference session in Olson format.
  • MinuteOffset - Number of minutes to shift input data with reference to the reference bar.
  • LowerPeriodInst - The instrument that the return value is an offset for.
For example, to print each bar in the 1 minute period each time the higher period bar is evaluated:
Variables: index;
For index = BarOffsetStart( DataKey of Data1 ) of 'Data1 1m' DownTo BarOffsetEnd( DataKey of Data1 ) of 'Data1 1m' Begin
    Print( DateTime of Data1, DateTime[index] of 'Data1 1m', Close[index] of 'Data1 1m' );

3960 Equilla DataKey function

DataKey returns a unique identifier for a specific instrument in use in the current Equilla script. E.g.
Print( "Key:", DataKey of Data1 );

3960 Equilla BuildSession function

Helper function for generating session strings. It returns a string in the Tradesignal enhanced session format. Can be concatenated with other calls to BuildSession to create more advanced sessions.
BuildSession( StartTime, EndTime, StartDay, EndDay )
  • StartTime - The time the session starts on each specified day
  • EndTime - The time the session ends on each specified day
  • StartDay - The inclusive weekday on which this session range begins
  • EndDay - The inclusive weekday on which this session range ends
A standard 10am-5pm sessions for all weekdays would be defined thus:
session = BuildSession( 1000, 1700, Monday, Friday );

4241 Equilla Once keyword

The Once keyword will ensure that the following statement or block will be executed only one time per full evaluation of the Equilla script. The Once keyword is superior to constructs such as “If CurrentBar = 1 Then”, because it is syntactically cleaner and will catch cases where the first bar may be evaluated multiple times.

Once firstClose = Close;

DrawLine( Close - firstClose );

Once Begin
    Print( "Evaluation started: ", Now );
    Print( "Initial Close: ", firstClose );

4147 Equilla SeasonalStartDate property

This value may be used by an Equilla script to obtain the currently configured seasonal start date, if the chart is in seasonal mode. The Seasonal Average indicator shows how this property may be used.

4342 Equilla Python API

Equilla scripts my execute Python code declared within a PyExec block (PyExec <python code> End). Python code may access local and global Equilla variables (lowercased) via the global “equilla” object (PyExec myPyVar = equilla.myequillavariable End). Data may be returned to the Equilla script using a PyEval block (myEquillaVariable = PyEval 2 * 20 + 2 End). Example of use:
    Period( 10, 1, 100 );

    Power( 2 );

Once PyExec # This python code will only be execute once per full evaluation (Once keyword). # Imports, classes and functions should go here. import sys from math import pow, sqrt def my_avg(prices): return sum(prices) / len(prices) End;

PyExec # This python code will be run each bar. lineVal = pow(equilla.close[0], equilla.power) + 23 paths = ', '.join(sys.path) closeArray = equilla.close End;

DrawLine( PyEval lineVal End );
DrawLine( PyEval sqrt(lineVal) + equilla.period End + High );
DrawLine( PyEval my_avg(equilla.high) End + High );

Once Print( "[" + PyEval paths End + "]" );