離散ブロック

ADL

Value Bucket ブロック

[Value Bucket] ブロックを使って、必要に応じて数値の複数のペアを保存できます。各ペアは、特定の組み合わせを指定するのにユーザーが使用できる KEY と、ユーザーにとって興味のある実際の数値である VALUE で成り立っています。入力離散イベント メッセージによりトリガーされると、[Value Bucket] ブロックは KEY の数式を評価して、エントリのキー部分を定義し、[VALUE] にこの数式を使って関連値を定義します。[Value Bucket Keys] は固有である必要があります。メッセージによりエントリが既存のキーを使用しなければならない場合、ブロックの Mode プロパティ を使って以下の方法のうち1つで矛盾を解決できます。

  • キーの既存のエントリに値を追加します。
  • 既存の値を、新規の値と既存の値の平均で置換えます。
  • 既存の値を新規の値で置換えます。

[Value Bucket] ブロックは以下の方法で作動します。

  1. [store] ポートを通じて受信した離散イベント メッセージが、[Value Bucket] ブロックをトリガーします。

  2. トリガーした場合、[Value Bucket] ブロックは内部ハッシュ表 (ハッシュ表については内部データ集合 を参照してください) に、KEY と VALUE で構成された新規のエントリを追加します。

  3. 新規エントリを追加した後、[Value Bucket] ブロックは入力メッセージを見て、内部ハッシュ表内を検索し、キー値が内部 [lookup] ポートに一致するエントリを指定します。

  4. 正確なエントリを検出すると、[val] 出力ポートを通じてエントリの値を出力します。

  5. その後、[out] ポートを通じて元のメッセージをそのまま渡します。

  6. オプションで、離散イベント メッセージが [reset] ポートをトリガーすると、 値を [NaN] (Not A Number) にリセットするように、また内部ハッシュ表を空にするように、 [Value Bucket] ブロックを設定することもできます。

[Value Bucket] ブロックが [MsgInfo Extractor] ブロックからの離散イベント メッセージによりトリガーされると、内部数式を使って [KEY] に取引価格を使用し、[VALUE] に取引枚数を使用し、[Value Bucket] ブロックの新規エントリにこれらを追加します。また [Value Bucket] ブロックが [tradePrice] の KEY を含むエントリを検出するのに使用する、[lookup] ポートを通じて [tradePrice] も受信します。このエントリの [VALUE] は [val] ポートを通じて出力されます。これは、[Out]out] ポートを通じて、ダウンストリーム ロジックに、元の離散イベント メッセージも渡します。

この例は、[Value Bucket] バケットを使って、取引が発生するたびに、価格や数量を保存します。取引が発生すると、始値よりも低い取引値ですべての取引に対して内部集合から該当する数量も出力します。出力は、しきい値を超えた場合に、ダウンストリーム ロジックを使用して応答します。[Bucket] はまた各取引に受信メッセージを出力し、幾つかのダウンストリーム ロジックにより処理されます。

[Value Bucket] ブロックは、[Fields Formula Editor] を使用して [storeKey] 欄と [storeVal] 欄に対して取引値と取引枚数を指定します。

内部データ集合

[Value Bucket] ブロックの内部ハッシュ表は、KEY と VALUE の 2列の単純なテーブルとして観念化できます。以下の例では、指定の限月で取引が発生するたびに、離散イベント メッセージにより [Value Bucket] ブロックがトリガーされると推定します。トリガーされると、[Value Bucket] は KEY として取引価格を、た各新規エントリの VALUE として取引枚数を抽出して使用します。ユーザーは、このような表を作成して、取引セッション中に異なった価格で実行出来高を維持して使用できます。

  1. 以下の説明で示すとおり、[Value Bucket] ブロックは、内部ハッシュ表にすでに3つのエントリをもっています。

  2. 新規の注文 3枚が 1290 25 の価格で発生するとします。この情報を含む離散イベント メッセージが、[Value Bucket] ブロックをトリガーします。トリガーされると、ブロックは取引価格と取引枚数を使って、新規エントリを抽出して、内部ハッシュ表に追加します。

  3. ユーザーが 1289 50 で #bars 入力を指定するとします。ブロックは内部ハッシュ表中で検索を行い、KEY 値が入力 #bars 値に一致するエントリを指定します。その後、7 として該当するエントリの値を出力します。

ブロック プロパティ

ブロックをカスタマイズするには、[Block Properties] を更新します。

プロパティ 説明
Name (名前) ADL キャンバスのブロックの下に表示される名前。
モード

時折、ハッシュ表の 2つのエントリが同じキーになる場合があります。この場合、ユーザーが選択した3つの方法のうち1つを通じて、[Value Bucket] が矛盾を解決します。

  • Sum: 2つの矛盾するエントリの値の合計で、1つのエントリに統合します。
  • Average: 2つの矛盾するエントリの値の合計をとり、1つのエントリに統合します。
  • Last: 最近のエントリを保持して古いエントリを破棄します。
数式

エントリのキーと値ペアの値計算に使用される数式。

編集リンクにより [Fields Formula Editor] が起動されます。