高度観念

高度観念

外部イベントの処理

Order ブロック、Discrete Order ブロック、Single Order Container ブロックは、ADL での注文の管理に使用されます。これらのブロックのプロパティの1つは、「When Ext Mod Occurs」といいます。このプロパティは、管理している注文が外部で変更された際のブロックの動作を決定づけます。値には3つの可能性があります。

  • 管理の停止 (Stop Managing)
  • 切り離し (Detach)
  • 無視 (Ignore)

管理の停止 (Stop Managing)

「管理の停止」(Stop Managing) オプションが選択され、注文が外部で変更されると、ブロックは入力ポートへのその後の変更を無視しますが、出力ポートを通じて注文へのすべての更新をパブリッシュし続けます。言い換えると、このブロックの入力に対するすべての変更は受け入れられませんが、注文と約定のイベントが発生する際に離散イベントがブロックから生成されます。注文はブロックにより管理されなくなります。

切り離し (Detach)

「切り離し」(Detatch) オプションが選択され、注文が外部で変更されると、ブロックは入力ポートへのその後の変更を無視し、出力ポートを通じて注文へのすべての更新をパブリッシュしなくなります。言い換えると、このブロックの入力に対するすべての変更は受け入れられず、注文と約定のイベントが発生する際に離散イベントはブロックから生成されません。つまり注文はブロックにより管理されなくなり、実質的に休止状態となります。

無視 (Ignore)

「無視」(Ignore) オプションが選択され注文が外部で変更されると、ブロックは入力に提供された値を使って子注文への全ての変更を上書きし、さらに注文と約定イベントが発生する際に、出力ポートを通じて離散イベントが生成され続けます。言い換えると、注文はブロックにより管理され続け、すべての外部からの変更の試みは上書き変更されます。ただし外部の変更を取得して受け入れることはできます。Order ブロックの場合、これを以下のように実行できます。

アルゴのスニペットにて、Generator0 ブロックは起動時に離散イベントを発信します。これは ValueInjector1 ブロックに渡されます。このブロックは次に、InitialQty ブロック (5) の値を離散メッセージの orderQuantity 欄に注入します。MsgInfoExtractor0 ブロックは離散メッセージから orderQuantity 欄の値を抽出します。この値は次に Order ブロックに入力され、これは GE-Sep24 限月に対し 96.785 で5枚の取引所固有注文を送信します。Order ブロックは「Ignore」と同様に「When Ext Mod Occurs」で設定されます。

ユーザーが取引所固有注文の枚数を外部で変更する際、Order ブロックは「Chg OK」ポートから離散メッセージを発信します。MsgInfoExtractor0 ブロックは次に離散メッセージから orderQuantity 欄の更新値を抽出します。この値は Order ブロックに再び入力されます。Order ブロックは,引所固有注文の現在の枚数を「枚数」入力ポートの値と比較します。2つが等しい場合、Order ブロックはそれ以上の操作を実行しません。これゆえ、ユーザーの外部の変更が受け付けられます。

同様に、OMA の場合これを以下のように達成できます。

アルゴのこのスニペットにて、ExistingOrder0 ブロックは OMA が起動されると Sequence0 ブロックに離散メッセージを発信します。Sequence0 ブロックはまず、このメッセージを MsgInfoExtractor1 ブロックに転送します。これは次に orderQuantity 欄の値を抽出します。この値は次に、採用された注文の最初の枚数で SingleOrderContainer0 ブロックに入力されます。Sequence0 ブロックは採用される注文を含んだメッセージを SingleOrderContainer0 ブロックに転送し、注文の管理を引き受けます。

ユーザーが注文の枚数を外部で変更すると、SingleOrderContainer0 ブロックは離散メッセージを発信します。MsgInfoExtractor1 ブロックは次に離散メッセージから orderQuantity 欄の新規の値を抽出します。この値は次に SingleOrderContainer0 ブロックに再び入力されます。SingleOrderContainer0 ブロックは、注文の現在の枚数と「枚数」入力ポートの値とを比較します。2つの値が等しい場合、Single Order Container ブロックはそれ以上の操作を実行しません。これゆえ、ユーザーの外部の変更が受け付けられます。