[Loop] ブロックは、空白の離散イベント メッセージのユーザー指定数を1つずつ生成して出力し、ループを必須とする設計を促進しています。
例 [Generator] ブロックが [Loop] ブロックの入力ポートを通じて離散イベント メッセージを送信する際、[Loop] ブロックは 3つの繰り返しループを開始します (時間入力ポートを通じて指定)。各繰り返しに対し、[Loop] ブロックはインデックス ポートを通じてループ カウンターを出力し、ループ出力ポートを通じて空白の離散イベント メッセージを送信します。最後の繰り返しは、[Loop] ブロックは [Exit] 出力ポートを通じて空の離散イベント メッセージを送信します。
注 [Loop] ブロックは、離散イベント メッセージが生成され出力される前に、インデックス ポートを通じてカウンターを出力します。
[Loop] ブロックでは、「動作」ブロック (注文の発注など、具体的な動作を行うブロック) は、ループを実行中に操作を実行できないようになっています。
例 [Loop] ブロックが注文価格の減少に失敗します。
この例では、[Loop] ブロックは、3回検索を行うように設計されていて、各反復で、1価格増分ずつ、[Order] ブロックの価格入力が減少されます。一見、[Order] ブロックは、子注文をマーケットで下に移動させる 3つの変更要求を生成するかのように見えます。しかし [Loop] ブロックは、[Order] ブロックがループ中に、いかなる操作であっても実行することを許可していません。ループが完了後、[Order] ブロックは最終結果の価格入力を使って操作を実行できます。
アルゴリズムが開始されたときに、以下のイベントの順番が起こります。
タイミングの問題を解決する1つの方法として、[Order] ブロックではなく、[Discrete Order] ブロックを使用し、[Loop] ブロックのループ ポートを通じて離散イベント メッセージを [Discrete Order] ブロックの [msg] ポートに送信することです。ループ出力を使用すると、ダウンストリーム操作を使って、次のループの繰り返しを開始する前に注文を送信することができます。以下の例に示しています。
例 [Loop] ブロックを使用して、マーケットで買注文のスタックを作成します
ブロックをカスタマイズするには、[Block Properties] を更新します。
プロパティ | 説明 |
---|---|
Name (名前) | ADL キャンバスのブロックの下に表示される名前。 |