離散イベント メッセージの伝達の順序
変数が更新される粒状順序を理解することは、ADL で高度なプログラミング技術を取得するのに最も重要な要素の1つです。
ブロックが離散イベント メッセージのパルスを出力すると、アルゴリズムは一時的に、取引所サーバーからの連続メッセージのチャネルを停止します。離散イベント メッセージのパルスがアルゴリズム中に伝達されている間、連続メッセージ チャネルは、閉じられたままとなります。効果では、この動作は、マーケット データのストリーミングにチャネルする [Instrument Field] ブロックとして、ブロックの出力を「フリーズ」します。この静的状態では、離散的イベント メッセージのパルスはユーザーにより指定された経路を移動して、経路に存在するすべてのブロックの出力値の更新を行います。この伝達が完了すると、アルゴリズムはすべての取引所サーバーからの連続メッセージのチャネルを再開します。
このような伝達はミリ秒で実行され、練習では見えることはありません。ただしこのメカニズムでは、ADL を使ってユーザーは、離散イベント時に正確に存在するマーケット データを取得して使用できます。以下の ADL は、離散イベント メッセージが伝達される際にブロックが更新される正確な順番を制御しています。
Pass-through ブロック
伝達中に、離散イベント メッセージが Pass-Through ブロックを入力し (離散イベント メッセージを変更せずに受信または受け渡しする際、以下の順番で操作が起こります。
- Pass-through ブロックの連続出力値自体が、まず更新されます。
- Pass-through ブロックの連続出力値を使用するすべての「ダウンストリーム」ブロックが、更新されます。
- 離散イベント メッセージはパススルー ブロックを終了します。
- 離散イベント メッセージは、末端点に到達するまでに、指定の道筋を通じて伝達されます (次の黒点を参照)。
例 「パススルー」ブロックを入力する際の更新の順番。この例では、離散イベント メッセージが、既存のパススルー ブロックより前に、パススルー ブロックからの 「ダウンストリーム」に接続されているブロックをまず更新します。
- 離散イベント メッセージがブロックに入力します。
- 連続出力値は、[Add] ブロックの入力ポートに伝達を行います。
- 離散イベント メッセージの出力ポートがブロックを終了し、道筋で伝達を行い続けます。
Termination ブロック
離散イベント メッセージは、できるだけ遠くに道筋に沿って伝達を行いますが、以下のブロックの1つに入ると、終了します。
- Termination ブロック: Single Order Container ブロック、State ブロック、Value Accumulator ブロック、Discrete Order ブロック、Stopwatch ブロック、Pause ブロック、Alert ブロック、「リセット」入力ポート
- それ以上を超過する離散の道筋をもたないパススルー ブロック
例 終了点