Each building block in ADL can be thought of as a processing unit: it takes in a number of inputs, processes the inputs according to its unique functions, and then outputs the results. As such, every block has input and output ports, with the inputs located on the left side of the block and the outputs on the right side.
Example Every block has its own inputs and outputs.
The user can connect one block's output port to another block's input port, ultimately articulating the overall logic of the strategy. However, connections are allowed only between two compatible port types. To be specific, there are five different types of input/output ports in ADL and connections are limited to ports of the same type.
The ports are distinguished according to the type of information that flows through each:
Numeric port: Inputs/outputs a rational number. Numeric ports are colored in red.
Example Add Block has numeric input and output ports.
True/False port: Inputs/outputs either a True or a False (also called Boolean values). True/False ports are colored in green.
Example And Block has True/False input and output ports.
Instrument port: Inputs/outputs the name of an instrument. Instrument ports are colored in blue.
Example Instrument Block has an instrument output port.
Variable port: This port can turn into any one of the three aforementioned types. When the user feeds one type of input (ex. Numeric input) into one of the Variable input ports located on a block, all other Variable ports on that block will automatically be unified in type (ex. all other Variable ports will shift into Numeric ports). Variable ports are colored in yellow.
Example If-Then-Else Block has variable input and output ports.
Discrete Event Message port: Inputs/outputs a special type of information called a discrete event message that is generated by several designated blocks whenever a significant market event (e.g., fill) occurs. Specifically, discrete event messages are generated whenever the user's algorithm submits or receives a message from an exchange server. The messages range from add requests to fill confirmations. Discrete event message ports are colored in white or black.
Example Branch Block has discrete input and output ports.
Note An input port can receive only a single feed, whereas an output port can link to multiple inputs.