- Fundamental Concepts
- ADL Learning Guide
- Basic Blocks
- Trading Blocks
- Discrete Blocks
- Round Block
- Display To Decimal Block
- Formula Block
- Average Block
- Stopwatch Block
- Clock Block
- Note Block
- Random Number Block
- Pause Block
- Log Block
- IsNumber Block
- Once True Always True Block
- Not Block
- Loop Block
- Exit Block
- Risk Block
- Workup State Block
- Alert Block
- Math Block
- Actor Blocks
- TT Analytics Block
- Sniper Algo
- Order of Discrete Event Message Propagation
- Grouped Blocks and Library Functionality
- Rules Of Virtualization
- Jump Blocks
- Safety And Preventive Design With Visual Feedback
- Flip For Sell Orders Functionality
- Dynamic Data ExchangeLink
- Leave Orders On Pause Or Cancel
- Creating and Launching Order Ticket Algorithms (OTAs)
- Breakpoint Functionality
- Algorithm Behavior At Market Close and Disconnect
- Exporting Block Output Values
The Loop Block simply generates and outputs a user-specified number of empty discrete event messages, one after another, in order to facilitate designs which require loops.
- The user must specify the total number of discrete event messages to be generated as .
- When a discrete event message, , triggers the Loop Block, the block will update its output to "1" and then output its first discrete event message .
- The Loop Block will increment its by 1, and then generate its second discrete event message . This step will repeat until is greater than .
- After the last message is generated, the Loop Block will generate and output another discrete event message to indicate that the loop sequence has been completed.
Note:The will always update first before the actual message is generated and output.
Details on Timing
It is important to note that the Loop Block does not allow any “actor” block (i.e., a block that can take tangible actions such as placing an order) to take an action while it is performing the loop. For a list of actor blocks, refer to Actor Blocks.
Example: Loop Block Timing
In this example, the Loop Block is designed to loop up to three times, and at each iteration it decrements the price input of the Order Block by one price increment. At a glance, it might seem that the Order Block will generate three change requests to incrementally move its child orders down the market. However, the Loop Block does not allow the Order Block to take any actions during the loop. It is only after the loop has completed that the Order Block can take an action using the final resulting price input.
The following sequence of events occurs when this algorithm is started:
- The Order Block joins the best bid price with a 1-lot child order.
- The Generator Block generates and pushes a discrete event message downstream, triggering the Loop Block.
- The Loop Block loops up to three times, and at each iteration it decrements the price input of the Order Block by one price increment. However, the Order Block cannot take any action during this step.
- After the loop completes, the Order Block changes its child order based on the final resulting price input.