Introducing the new ADL canvas

In an effort to improve performance, especially for larger ADL algos, TT has completely redesigned the TT ADL canvas. The new underlying technology not only improves performance, but also provides new features that let algo developers more easily add blocks to the canvas, more quickly locate existing blocks that are not currently visible in the displayed canvas area, and more efficiently identify potential connection pathways between blocks.


  1. New search feature helps you filter blocks and fields.
  2. Always-visible Block Properties let you see a block's functionality at a glance.
  3. Highlighting potential connections lets you create a connection with a click.
  4. Bookmarks for different views of the displayed canvas area help you quickly bring portions of a large algo into view.

Additionally, the new ADL redesigned the Formula Editor to make it easier to enter formulas.

The Block Panel contains the list of blocks, organized by function, that can be dragged and dropped onto your canvas to build your algo.

The top of the Block panel contains a Search field that filters the list of available blocks based on the search string. It can also be used to locate specific block or location within your algo.

  • Show only blocks whose names contain the string.

  • Show Field blocks with the field name already specified when you add it to the canvas.

  • Show a Number block pre-populated with specified numeric value.

  • Scroll the canvas to display a named block (start with an "@").

  • Scroll the canvas to a previously-saved bookmark (start with a period ".").

Block properties

Each ADL block has a collection of settings that determine its name and characteristics that impact the block's functions. Selecting a block displays its specific settings in the Block Properties panel, similar to the following for an Instrument block.

Formula Editor

Many of the ADL blocks allow you to define formulas to calculate output values for the blocks. For such blocks, you can open the Formula Editor from their respective Block Properties panel.

The Formula Editor shows the types of values and operations you write into your formula, including:

  • Arithmetic operators (i.e. +, -, %)
  • Comparison operators (i.e. <, >=, !)
  • Logical operators (i.e. IF, AND, OR)
  • Numbers and Boolean values
  • Variables, including values form other ADL block connectors and values from a discrete event message entering the block
  • Misc symbols to define the order of operations, such as parentheses

Example Define a formula that compares the fill quantity and the quantity available at the Best Ask with specific values.

Some ADL blocks modify the generic Formula Editor to support features specify to that block's functionality. For example, the Discrete Order block uses three formulas, so lets you enter them in the same Formula Editor, as shown.


The Formula Editor includes drop-down menus that allow you to add values that update dynamically as the algo runs.

  • Insert Connector: Lets you reference the output of any other block in the algorithm. You can also type the connector in the form, [block.connector].

  • Insert Message Field: Lets you extract any of the following information embedded within a discrete event message. You can also type the connector in the form, {fieldName}.

    • limitPrice: Price of an new order
    • orderQuantity: Total order quantity
    • workingQuantity: Working quantity of an order
    • fillPrice: Price of a fill
    • fillQuantity: Quantity of a fill
    • cumQuantity: Sum of fill quantities
    • disclosedQuantity: Quantity of a disclosed order visible in the market
    • deletedQuantity: Canceled quantity of a deleted order
    • tradeQuantity: Quantity of the last trade for a specified instrument
    • tradePrice: Price of the last trade for a specified instrument
    • stopTrigger: Price at which the respective stop order is activated
    • isBuy: Whether a fill was a buy side execution
    • isQuotingOrder: Whether the message was generated by a submitted quote order (valid only for Autospreader order blocks)
    • isHedgeOrder: Whether the message was generated by a submitted hedge order (valid only for Autospreader order blocks
    • isExternalEvent: Whether the message was generated from a source outside of the algorithm
    • isTriggered: Whether a​ stop order has been triggered​
    • instrument: Instrument associated with the message
    • userFieldN: One of four empty fields that can be populated by a Value Injector and then accessed by a Value Extractor
  • "string": (Alert block only) Lets you add customized text to a message string.