Trade
Overview
TT Platform
Description
Task
Browser Access
Description
Task
Videos
TT Desktop
Description
Task
Videos
Reference
Workspace Windows
Description
Task
Videos
Widgets
Description
Task
Preferences
Description
Viewing Market Data
Time and Sales
Task
Reference
Description
Depth
Description
Task
Reference
Market Grid
Description
Task
Videos
Reference
Product Grid
Description
Task
Reference
Spread Matrix
Description
Task
Videos
Reference
Position in Queue (PIQ)
Basic Order Entry
TT Order Types
Description
Task
Videos
Reference
Case Studies
TT Premium Order Types
Description
Task
Reference
Order Ticket
Description
Task
Use Cases
Reference
MD Trader®
Description
Task
Videos
Reference
Order Profiles
Description
Task
Reference
Routing Rules
Description
Task
Blocktrader
Description
Task
Videos
Reference
Trading Crypto on TT
Description
Task
Videos
Reference
Trading on B3
Order Management
Order Book
Description
Task
Reference
Floating Order Book
Description
Task
Reference
Fills
Description
Task
Reference
Positions
Description
Task
Reference
Orders and Fills
Description
Task
Reference
Audit Trail
Description
Task
Reference
Audit Query
Description
Task
Reference
Account List
Description
Task
Videos
Reference
Position Manager
Description
Task
Reference
Alert Manager and Alert Viewer
Description
Task
Videos
Reference
Account & User Restrictions
Description
Task
Reference
Balances
Description
Task
Reference
TT® OMS
Care Orders
Description
Task
Videos
Reference
Lock and Release
Description
Task
Bulking
Description
Task
Videos
Stitching and Splitting
Description
Task
Combining
Description
Task
Order Passing
Description
Task
Use Cases
Order Exceptions
Description
Task
Options
Options Risk
Description
Task
Videos
Reference
QuikStrike
Description
Task
TT Uncovered 3.0
Description
Task
TT Uncovered 2.0
Description
Task
Volatility Calculator
Description
Task
Expiration Manager
Description
Task
Watchlist
Description
Task
Videos
Reference
Options Risk Matrix
Description
Task
Videos
Reference
Options on TT
Description
Videos
Strategy Creation
Description
Task
Use Cases
Reference
Counterparty Manager
Description
Task
RFQ with Counterparties
Description
Task
RFQ Viewer
Description
Task
Videos
Reference
Electronic Eye
Description
Task
Videos
Reference
Vol Curve Manager
Description
Task
Use Cases
Videos
Reference
Options Trade Monitor
Description
Task
Videos
Reference
Options Chain
Description
Task
Use Cases
Videos
Reference
Spread Trading
Autospreader
Description
Task
Use Cases
Videos
Reference
Autospreader Rules
Description
Task
Videos
Reference
Hedge Manager
Description
Task
Videos
Reference
Trading in Yield
Description
Task
Use Cases
Reference
Aggregator
Description
Task
Videos
Reference
Algo Trading
Algo Dashboard
Description
Task
Videos
Reference
Template Manager
Description
Task
Order Management Algos (OMAs)
Autotrader
Description
Task
Reference
Videos
Excel integration with TT
Description
Task
Videos
Reference
Market-Making Algos
Analytics
Charts
Description
Technical Indicators
Task
Videos
Reference
Trader Analytics
Description
Task
Reference
ADL
ADL Overview
Introduction to ADL
Description
Task
Videos
Reference
ADL Basic Concepts
Description
Task
Reference
Building your first algo
Lessons
Advanced concepts
Description
Task
Case Studies
Jump blocks
Group blocks
Virtualized blocks
Library blocks
Trading Blocks
Discrete blocks
Arithmetic blocks
Basic blocks
Logic blocks
Miscellaneous blocks
Setup
Setup Overview
Getting Started
Description
Task
Videos
Reference
Supported Order Types and TIFs
Company Administration
Connections
Description
Task
Videos
Reference
Accounts
Description
Task
Videos
Use Cases
Reference
Users
Description
Task
Videos
Reference
Company
Description
Task
Reference
Order Tag Defaults
Description
Task
Account Administrators
Description
Task
TT Premium Services
Description
Task
TT Access
Description
Task
Advanced Features
Description
Risk Management
Risk Administration
Description
Task
Risk Limits
Description
Task
Videos
Reference
Pre-Trade Portfolio Risk
Description
Task
Reference
Order Cross Prevention
Description
Task
Videos
KRM Limits
Description
Task
TT® OMS
TT OMS Administration
Description
Task
Use Cases
Reference
Exchanges: Americas
FMX
Description
Task
NFI
Task
Nodal
Description
Task
MX
Description
Task
MIAX_FUT_NY
Description
Task
MIAX_FUT_CH
Description
Task
MexDer
Description
Task
ICE
Description
Task
Goldman Sachs Commodity Blocks (GSCB)
Description
Task
Referece
FMX_USTF
Description
Task
B3
Description
Task
Fenics
Description
Task
EBS Market
Description
Task
EBS Direct
Description
Task
Dealerweb
Description
Task
CME
Description
Task
CFE
Description
Task
Cboe FX
Description
Task
Reference
CBOE
Description
Task
Exchanges: EMEA
GFO-X
Description
Task
WSE
Description
Task
Nord Pool
Description
Task
Reference
NASDAQ_NED
Description
Task
MEFF
Description
Task
LSE
Description
Task
LME NTP
Description
Task
LME
Description
Task
JSE
Description
Task
ICE_L
Description
Task
ATHEX
Description
Task
Euronext
Description
Task
Eurex
Description
Task
Videos
Eris
Description
Task
EPEX SPOT
Description
Task
Reference
EEX
Description
Task
DGCX
Description
Task
BIST
Description
Task
Exchanges: Asia/Pacific
ABX
Description
Task
ASX
Description
Task
FEX
Description
Task
HKEx
Description
Task
JPX
Description
Task
NSE
Description
Task
NZX
Description
Task
SGX
Description
Task
SGX GIFT
Description
Task
TAIFEX
Description
Task
TFEX
Description
Task
TFX
Description
Task
CoinFLEX
Task
Coinbase
Description
Task
FIX Support
FIX Ruleset
Description
Task
FIX Sessions
Description
Task
Secondary Accounts
Description
Task
Monitor
TT Mobile
TT Backtesting
APIs
TT REST API 2.0
Getting Started
API Reference
TT REST API 2.0 (UAT)
Getting Started
API Reference
TT .NET SDK
Getting started with TT .NET SDK
Creating the application framework
Working with instruments
Subscribing for market data
More about prices
An in-depth look at the Price class
Working with orders and fills
Handling trade subscriptions
Working with trade subscriptions
Working with Algos
Algo Server
TT Order Types
TT Premium Order Types
Advanced Concepts and Options
Appendix
TT CORE SDK
Getting Started with TT Core SDK
Creating Application Framework
Working With Instruments
Subscribing for Market Data
Working with Orders and Fills
Creating a TT Application Server
Appendix
TT Trade Surveillance
Overview
Using TT Trade Surveillance
Cluster View
Core Models
Market Abuse Models
Cross Product Models
Spoofing Models
Improperly Matched Trade Models
Market Rate Models
Trading Behaviors Models
Miscellaneous Models
Configurable Models
Reports
Reference
TT FIX Services
TT FIX General
Getting Started
FIX Message Structure
Session messages
TT FIX Order Routing
Overview
TT FIX message conversations
Supported application messages
TT FIX Market Data
Overview
TT FIX message conversations
Supported application messages
TT FIX Drop Copy Out
Overview
TT FIX Message Conversations
Supported application messages
Compliance Feed messages
TT FIX Drop Copy In
Overview
Supported application messages
TT FIX Gateway
Getting Started
FIX Message Structure
Components
Session messages
Price Gateway Messages
Order Gateway Messages
TT FIX Recovery
Overview
FIX Recovery Methods
Supported application messages
Compliance Feed Messages
MiFID II Support

Branch ブロック

受信する離散イベント メッセージがトリガーした場合、[Branch] ブロックは、[Branch] ブロックの [Boolean] 数式に基づいて、アルゴリズムの異なった部分にメッセージを発信します。数式が [TRUE] に評価した場合、ブロックは離散イベント メッセージを 「yes」 の出力ポートに送信しますが、それ以外は、「no」出力ポートを通じてメッセージを送信します。

[Branch] ブロックは、受信する既存の注文の離散イベント メッセージに注目し、メッセージがヘッジ注文を示している場合は、[yes] ポートを通じてメッセージを送信します。それ以外は [no] ポートを通じて送信します。

[Branch] ブロックは以下の数式を使用します。

[Branch] ブロックと [State] ブロックは両方とも類似していますが、基本的に異なっています。[State] ブロックは、内部 [Boolean] ステートメントの1つが出力メッセージに 「TRUE」に変換するまで待機している間、[Branch] ブロックはすぐに受信メッセージを 「yes」 または 「no」出力ポートのいずれかに向けます。

ブロック プロパティ

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

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

使用するブランチ (出力ポート) の決定に使用する数式。

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

数式は、[Boolean] 値を評価する必要があります。

Demultiplexer ブロック

[Demultiplexer] ブロックは、[Single Order Container] から離散イベント メッセージを取り込み、メッセージが約定か変更、削除の確認のいずれであるかを評価します。評価の後、ブロックは適切な出力を通じて、メッセージを変えずに向けます (約定の確認の場合、元のメッセージは、約定の出力ポートを通じて、メッセージとしての出力となります)。

[Demultiplexer] ブロックは [Single Order Container] ブロックから離散イベント メッセージを受信し、受信するメッセージのタイプを決定し、該当する出力ポートにそのままメッセージを送信します。離散イベント メッセージは 「Add OK」 または約定メッセージを示している場合、ブロックはダウンストリーム ロジックにメッセージを送信します。

[Single Order Container] のみが必須の入力離散イベント メッセージを提供できます。

ブロック プロパティ

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

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

露出する出力メッセージ ポート:

  • Add Requested: 取引所に送信される新注文要求
  • Added: 新注文の確認
  • Change Requested: 取引所に送信される注文変更要求
  • Changed: 注文変更の確認
  • Delete Requested: 取引所に送信される注文変更要求
  • Deleted: 注文削除の確認
  • Filled: 約定の確認

Discrete Min/Max ブロック

[Discrete Min] ブロックと [Discrete Max] ブロックは、内部数値集合の最大値と最小値をそれぞれ出力します。ブロックの1つが離散イベント メッセージを受信するたびに、値の内部集合にユーザー定義の数値を追加し、その集合に最小値または最大値のいずれかを出力します。

ブロックは、以下のとおり離散イベント メッセージを処理します。

  1. 離散イベント メッセージは [Discrete Min/Max] ブロックをトリガーします。
  2. ブロックがトリガーされると、[Discrete Min/Max] ブロックは、ユーザーが [Block Properties] の数式で使用して指定した数値を取得します。ユーザーは入力メッセージ内に含まれる数値を抽出したり、メッセージに関連性のない値を取得する可能性があります。
  3. 抽出値は、ブロックのデータ集合に追加されます。
  4. ブロックは、集合間で最大値と最小値を決定します。結果はブロックの数値出力ポートを通じて送信されます。
  5. 評価の後、離散イベント メッセージの出力ポートを通じて元のメッセージをそのまま渡します。

例えば、[Discrete Max] ブロックは、[Time and Sales] ブロックから受信する各離散イベント メッセージから、取引枚数の値を保存します。取引が発生すると、[Discrete Max] ブロックは値を保存します [5, 10, 5, 25, 50, 10]。[Discrete Max] ブロックは、8枚の注文枚数で [Time and Sales] ブロックからの次のメッセージを受信する場合、ブロックに保存された最大値を示す、50枚の値を出力します。同じ値の [Discrete Min] ブロックは 5 を返します。

また離散イベント メッセージが リセットポートをトリガーすると、 出力を [NaN] (Not A Number) にリセットするように、また内部データ集合を削除するように、 [Discrete Min/Max] ブロックを設定することができます。

5秒の間隔で最小取引枚数と最大取引枚数を出力します。

[Discrete Min] と [Discrete Max] ブロックは、[Formula Editor] にて以下の数式を定義します。

ブロック プロパティ

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

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

ブロックの値の計算に使用される数式。

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

Funnel ブロック

[Funnel] ブロックは複数の離散イベント メッセージ入力ポート (in1, in2, in3) を受け入れ、出力ポートを通じて一度に1つづつそのまま渡します。[Funnel] ブロックは、複数のブロックと、通常は1つの入力離散イベント メッセージにのみ接続できるブロックに接続することができます。

[Funnel] ブロックを使って、別の [Order] ブロックが [Value Accumulator] ブロックをトリガーできるようにします。2つの [Order] ブロックから離散イベント メッセージを受信し、一度に1つづつダウンストリームに送信します。

ADL は通常、1つの離散入力に複数の接続を許可していません。例えば、以下の説明では、ユーザーは 2つの異なった限月から 1つの [Value Accumulator] ブロックに生成された、取引枚数の蓄積を試みます。ただし、試行した接続は ADL により拒否されます。

ただし [Funnel] ブロックを使って、複数の接続を [Value Accumulator] に作成できます。しかし、2 つの各限月により生成された別々の離散イベント メッセージは、絶対に [Funnel] ブロックを同時に通過することはありません。両方の限月を同時に取引する場合でも、該当する離散イベント メッセージが生成され、1つずつ連続的に出力されます。

この例は、両方の [Order] ブロックから1つの [Value Accumulator] ブロックに、約定を[Funnel] ブロックが、2つの異なった銘柄の複合の約定を注ぎ込むことで、[Funnel] ブロックを使って 2つの異なった銘柄の複合約定枚数を数えます。

ブロック プロパティ

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

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

Generator ブロック

アルゴリズムが起動されると、[Generator] ブロックは空白の離散イベント メッセージを生成します。メッセージは空白であり、マーケット情報は含まれていません。ただし [Pause] ブロックなど、離散メッセージを使用するその他のブロックをトリガーするのに、空白の離散イベント メッセージを使用できます。[Generator] ブロックを使って、時間の正確な瞬間において、その他の離散ブロックをトリガーするのに使用できます。

[Generator] ブロックでは、[Mode] プロパティが [Time Interval] に設定されています。これが有効化され、繰り返しプロパティが「true」に設定されている場合、[Number] ブロックの入力を使用して、空白の離散イベント メッセージを毎秒 (1000 ミリ秒) 生成して、ダウンストリーム ロジックをトリガーします。

Generator モード

[Generator] ブロックでは、ブロックが離散イベント メッセージを生成する際に指定する、様々なモードを提供しています。

  • TimeInterval: 通常の時間間隔で離散メッセージを生成します。このモードは、次の入力ポートを表示します。

    • enabled: ブロックを有効化するかどうか。
    • repeating: 指定の間隔でメッセージを送信し続けるかどうか。
    • periodMs: メッセージ間のミリ秒数。最小の間隔は100 ミリ秒です。
  • BoolChange: [Boolean] 値の入力が [TRUE] から [FALSE] に、または [FALSE] から [TRUE] のいずれかに変化すると、離散メッセージを生成します。このモードは、[Boolean] 入力ポートを表示します。

  • BoolTrue: [Boolean] 入力が [TRUE] になると、離散メッセージを生成します。このモードは、[Boolean] 入力ポートを表示します。

  • EveryStart: アルゴリズムが最初に起動される時と、アルゴリズムが一時停止され再開される時に、離散メッセージが生成されます。

  • InitialStart: アルゴリズムの起動時に一度離散メッセージを生成し、アルゴリズムの有効な期間は非アクティブになります。

  • At Start Time: 個別のメッセージを特定の時間または特定の日付と時刻を生成します。このモードは、

    • 時間、分、秒、ミリ秒のポートを表示します。メッセージを生成する時間。
    • 月、日、年: メッセージを生成する特定の日付。これらのポートは、ブロック プロパティで、[UTCDate] コネクターを追加している場合にのみ表示されます。
    • : 日付を指定しない場合、特定の時間にイベントが毎日繰り返されます。

  • At Start Time-Combined: ユーザー特定の日付と時間に離散メッセージを生成します。このモードは、カレンダーからの日付と時刻を選択できる [Date Time] ブロック設定を示します。UNIX エポック以来 (1970年1月1日木曜日) の経過ミリ秒数として UTCDateTime を出力する [Number] ポートを表示します。ダウンストリームの時間に関係する比較や計算に、この値を使用できます。

    [At Start Time] モードと異なり 、このモードでは、開始時刻の入力ポートが表示されません。ただしユーザー定義パラメータとして自動的に宣言されます。カレンダー ウィジェットが [Algo Dashboard] / [Autotrader] で表示され、ユーザーが値を指定できます。

  • UserTrigger: ユーザーがブロックをトリガーして離散メッセージを生成するまで待機します。

    このジェネレータのタイプを使用する場合は、ボタンは [Autotrader] に追加されます。このボタンをクリックすると、ジェネレータがトリガーされます。アルゴを展開してこのトリガーをテストする必要があります。

時間の考慮

[Generator] ブロックを使用する場合、離散イベント メッセージがが生成される正確なタイミングを知っておくことが重要です。

[InitialStart] や [EveryStart] が選択されると、アルゴリズムが開始されると以下の一連のイベントが発生します。

  1. すべての「actor」 ブロック(つまり発注などの具体的な操作を取ることができるブロック) は、最初に操作を実行します。
  2. [Generator] ブロックは、離散イベント メッセージのダウンストリームを生成してプッシュします。

[BoolChange] や [BoolTrue] が選択されている場合、継続的な更新により、[Generator] ブロックの [Boolean] 入力値が変更され、以下の一連のイベントが発生します。

  1. [Generator] ブロックは、離散イベント メッセージを即座に生成しませんが、継続的に更新して、アルゴリズム中を完全に伝播させることができます。
  2. すべての「actor」 ブロック(つまり発注などの具体的な操作を取ることができるブロック) は、最初に操作を実行します。
  3. [Generator] ブロックは、離散イベント メッセージのダウンストリームを生成してプッシュします。

ブロック プロパティ

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

プロパティ 説明
Name (名前) ADL キャンバスのブロックの下に表示される名前。
モード ブロックが離散イベント メッセージを生成すべき時点。

Moving Average ブロック

[Moving Average] ブロックは、内部数式で定義されているように、数値 (直近値、LTP など) の内部集合を維持して、最も最近のユーザー定義数値の平均を出力します (#bars)。ブロックが [intervals] ポートでメッセージを取得するたびに、以下の操作を実行します。

  1. ユーザーが指定した値の内部集合を更新します。
  2. 値の #bars の最新値の平均を計算し、[avg] 出力ポートを通じて平均を送信します。
  3. [msg] 出力ポートを通じて、元の [intervals] メッセージを変えずに渡します。
  4. 最初の #bars メッセージ数の後、準備ポートを通じて [TRUE] を送信し、[avg] 出力に希望のデータ ポイント数が含まれていることを示します。

[Moving Average] ブロックは、毎秒 [Generator] ブロックから空の離散イベント メッセージを受信します。[#bars] 入力ポートに渡された数は、移動平均の計算は、1分間に渡って収集される 60 の値に基づいて行われるべきであることを指定しています。[intervals] ポートを通じて入力メッセージを受信する際は常に、ブロックは集合に新規値を追加し、最新の 60 の値に基づいて、移動平均の再計算を行い、[avg] ポートを通じて平均を出力し、これはダウンストリーム ロジックにより使用されます。[Moving Average] ブロックが 60 個のメッセージを受信すると、準備ポートが [TRUE] に変わり、ダウンストリーム ロジックを使って、[avg] 出力に十分なデータ ポイントが含まれるかどうかを決定できます。

直近値 (LTP) の移動平均の数式

以下のポートを使って、アルゴが移動値を使用するかどうかを制御できます。

  • ready: このポートを使って、ブロックが [#bars] 入力を満たすのに十分な数のバーを収集したかどうかを定義できます。ブロックに十分なバー数がない場合は、[ready] ポートは [False] を出力します。ブロックが十分なバー数を蓄積すると、[ready] ポートは [TRUE] を出力します。

  • reset: このポートを使って、離散イベント メッセージが [reset] ポートをトリガーすると、[Moving Average] ブロックが内部データ集合を削除し、[avg] を [NaN] (Not A Number) にリセットするように強制できます。

Block プロパティ

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

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

ブロックの値の計算に使用される数式。

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

MsgInfoExtractor ブロック

[MsgInfoExtractor] ブロックは、受信した離散メッセージ内に含まれるユーザー指定の欄を抽出します。このブロックは主に、メッセージを生成したイベントに関する詳細にアクセスする際に使用されます。新規の離散イベント メッセージが [MsgInfoExtractor] ブロックをトリガーすると、ブロックは指定欄の値を更新する連続メッセージを使用します。

[MsgInfoExtractor] ブロックは以下のように作動します。

  1. 入力ポートを通じて離散イベント メッセージが [MsgInfoExtractor] ブロックをトリガーします。
  2. ブロックがトリガーされると、[MsgInfoExtractor] ブロックは入力 メッセージ内に含まれる指定値を抽出します。
  3. 指定値を抽出した後、[MsgInfoExtractor] ブロックは以下の動作を行います。
    • 右上の離散イベント メッセージ ポートを通じて元の入力メッセージ をそのまま渡します。
    • 選択した出力コネクターを通じて、マーケット データのスナップショットから、それぞれの希望の値を送信します。

約定枚数と約定値を抽出するように設定された [MsgInfo Extractor] ブロックは、[Order] ブロックからの約定を示す離散イベント メッセージを受信します。[MsgInfo Extractor] ブロックは約定離散メッセージから約定枚数と約定価格を抽出し、出力してダウンストリーム ロジックに約定離散メッセージを渡します。

ブロック プロパティ

既定のブロック プロパティを変更するには、[Block Properties] パネルにて希望の値を変更します。

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

出力ポートとして露出するメッセージ ブロックからの値。以下を含みます。

  • limitPrice: 新注文の価格。
  • orderQuantity: 合計注文枚数。
  • workingQuantity: 注文の約定待ち枚数。
  • fillPrice: 約定の価格。
  • fillQuantity: 約定の枚数。
  • cumQuantity: 約定枚数の合計。
  • disclosedQuantity: 市場で表示される公開注文の枚数。
  • deletedQuantity: 削除済み注文の取消枚数。
  • tradeQuantity: 特定の限月の直近値の枚数。
  • tradePrice: 特定の限月の直近値。
  • tradeIsHit: 最良買のときに [True] となります。
  • tradeIsTake: 最良売のときに [True] となります。
  • tradeIsUnknown: 最良買または最良売のいずれかの際に取引所が供給しなかった場合に [True] となります。
  • tradeIsOTC: OTC 取引の場合に [True] となります。
  • tradeIsImplied: インプライド値で取引が発生した場合に [True] となります。
  • tradeIsLeg: 取引が [True] となります。
  • stopTrigger: 各ストップ注文が有効化される価格。
  • isBuy: 約定が買側の執行である場合に [True] となります。
  • isQuotingOrder: 発注済みクォート注文によりメッセージが生成された場合に [True] となります (Autospreader 注文ブロックのみに有効)。
  • isHedgeOrder: 発注済みヘッジ注文によりメッセージが生成された場合に [True] となります (Autospreader 注文ブロックのみに有効)。
  • isExternalEvent: メッセージがアルゴリズム外の情報から生成された場合に [True] となります。
  • isTriggered: 注文がトリガー状態から発生した場合に [True] となります。
  • Instrument:: メッセージに関連する限月。
  • year: メッセージが発生した日時の西暦年部分。
  • month: メッセージが発生した日時の月部分。
  • day: メッセージが発生した日時の日付部分。
  • hour: メッセージが発生した日時の時間部分。
  • minute: メッセージが発生した日時の分部分。
  • second: メッセージが発生した日時の秒部分。
  • milliseconds: メッセージが発生した日時のミリ秒部分。
  • userFieldN: 4つの空白の欄のうち1つはValue Injector で生成され、Value Extractor によりアクセスされます。
  • account: 受信する注文に関連した口座。Discrete Order ブロック数式はこの値にアクセスできます。
  • orderType: 受信する注文の注文タイプ。Discrete Order ブロック数式はこの値にアクセスできます。
  • timeInForce: 受信する注文の有効期限 (TIF)。Discrete Order ブロック数式はこの値にアクセスできます。
  • isSuspended: 関連する注文が現在保留ステータスにあるかどうかを示します。

選択した各値に、該当するコレクターがブロックの出力に追加されます。

出力コネクターの一部またはすべてを表示するように選択できますが、受信する離散イベント メッセージに情報が存在する場合は、コネクターは有意義な出力を提供します。

Sequence ブロック

[Sequence] ブロックを使って、以下のように離散イベント メッセージの伝達の正確な順序を決定できます。

  1. 離散イベント メッセージが [Sequence] ブロックに入力します。
  2. [Sequence] ブロックは、 #1 ポートを通じて、元のメッセージを変えずにチャネルします。このブロックは、メッセージがダウンストリームを完全に処理するまで待機します。
  3. その後このブロックは、#2 ポートを通じて、元のメッセージの別のコピーを生成して出力します。このブロックは、メッセージがダウンストリームを完全に処理するまで待機します。
  4. その後このブロックは、#3 ポートを通じて、元のメッセージの別のコピーを生成して出力します。

[Sequence] ブロックが [Discrete Order] ブロックから [Add OK] メッセージを受信すると、まずメッセージを [Alert] ブロックに送信してサウンドを再生し、メッセージを [Single Order Container] に送信して注文を管理します。

ブロック プロパティ

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

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

State ブロック

[State] ブロックは入力離散イベント メッセージを受信し、内部数式に基づいて、メッセージをそのまま、出力ポートの 1つに送信します。各出力に対して、[Boolean] 値の結果を評価する数式を定義します。受信する離散イベントメッセージによってトリガーされると、[State] ブロックは、評価の1つが [TRUE] になるまで数式を評価し始め、それに一致する出力ポートを通じてメッセージを送信します。既定で、ブロックは2つの離散イベント メッセージ出力ポートを表示しますが、余分のポートを追加して、[Formula Editor] を使って数式を定義できます。

ユーザーが作成した [True/False] ステートメントが [TRUE] に変わると、[State] ブロックは以下の方法で離散イベント メッセージを生成して出力します。

  • 接続されたステートメントが [TRUE] と評価すると、#1 出力にメッセージを向けます。
  • 接続されたステートメントが [TRUE] と評価すると、#2 出力にメッセージを向けます。
  • ブロックに接続された各追ポートにメッセージを向け、ステートメントが [TRUE] と評価しようとすると出力します。
  • 複数の [TRUE/FALSE] ステートメントが一度に [TRUE] に変わると、最上部のポートからメッセージが出力されます。

離散イベント メッセージを出力した後、別の受信離散イベント メッセージを受信するまで、[State] ブロックは数式の再評価は行いません。

[State] ブロックは、内部数式を使って 3 つの状態を定義します。受信する離散イベント メッセージによりトリガーされると、[State] ブロックは数式を評価し、適切なポートを通じて離散イベント メッセージを渡し、ダウンストリーム ロジックで使用されるようにします。

このブロックの [Formula Editor] は、3 つの出力の数式を定義します。最初のポートの数式は、> 演算子を使用して、[Snapshot Bid Price] (Value Extractor ブロックから) と、[Bid Price] ([Field] から)の値を比較します。残りの数式は、 = と> を使用します。

ブロック プロパティ

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

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

ブロックの出力ポートの値の計算に使用する数式。

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

Value Accumulator ブロック

[Value Accumulator] ブロックは、離散イベント メッセージによりトリガーされた際に、ユーザー指定の数値を蓄積します。蓄積値を計算した後、ブロックは蓄積値と元の入力の離散イベント メッセージの両方を出力します。また別の離散イベント メッセージを [reset] 入力ポートに接続して、ブロック値を 0 にリセットできます。

2つの [ValueAccumulator] ブロックは約定情報を受信します。各ブロックは、内部数式に基づいて値を蓄積し、数値出力ポートを通じて算出値を出力します。各ブロックはまた、ダウンストリーム ロジックに受信メッセージを転送することもできます。

ブロックに対し [Formula Editor] を使用して、蓄積する値を指定します。メッセージの欄の値を使用するか、または数値を生成する数式を作成できます。例えば、ブロックに接続された各約定メッセージに対し約定枚数を蓄積する場合は、以下の数式を使用できます。

約定枚数などの選択した情報を蓄積することに加え、[Value Accumulator] ブロックは、ユーザー定義のマーケット イベントの発生を計算するための手段として使用できます。[Formula Editor] にて、「1」の値を入力します。この設定で、[Value Accumulator] はイベントの各発生に「1」の数値を蓄積します。これで、約定数が計算されます。

約定数が3に到達すると、[Order] ブロックを無効化します。

ブロック プロパティ

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

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

ブロックの値の計算に使用される数式。

まだ定義していない場合は、欄に [編集] リンクが表示され、[Formula Builder] (数式ビルダー) が起動されます。

Value Bucket ブロック

[Value Bucket] ブロックを使って、必要に応じて取得ができる、複数の数値のペアを保存できます。各ペアは、ユーザーが特定のペアの場所を検出できるように KEY と VALUE で構成されています。これはユーザーにとって実際の数字の時価を示します。入力離散イベント メッセージによりトリガーされると、[Value Bucket] ブロックは KEY に対して数式を計算し、エントリのキー部分を定義して、VALUE に対しその数式を使って関連値を決定します。[Value Bucket] キーは固有である必要があります。メッセージが既存のキーを使用するようにエントリに要請すると、ブロックの Mode プロパティは3つの方法のうちの1つで矛盾を解消できます。

  • キーの既存のエントリへの値の追加。
  • 既存の値を新規の値と既存の値の平均で置き換え。
  • 既存の値を新規の値で置き換え。

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

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

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

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

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

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

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

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

この例では、取引が発生するたびに、[Value Bucket] ブロックを使って価格と枚数の保存を行います。取引が発生すると、始値よりも低い取引価格を使って、各取引において内部収集から一致枚数を出力します。出力は、しきい値を交差すると、下流のロジックにて使用されます。[Value Bucket] ブロックも、各取引に対し受信メッセージを出力し、下流のロジックがそのメッセージを処理します。

[Value Bucket] ブロックは [Fields Formula Editor] を使って、それぞれの [storeKey] と [storeVal] 欄の取引価格 (tradePrice) と取引枚数 (tradeQuantity) 値を指定します。

内部データ収集

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

  1. 以下の説明図に示されているように、[Value Bucket] ブロックにてすでに、内部ハッシュ表に3つのエントリが含まれている場合を想定します。

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

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

ブロック プロパティ

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

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

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

  • Sum (合計): 2つの矛盾エントリの値を合計し、1つのエントリに統合します。
  • Average (平均): 2つの矛盾エントリの値の合計の平均をとり、1つのエントリに統合します。
  • Last (最新): 最新のエントリを保持して古いエントリを削除します。
Formulas (数式)

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

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

Value Extractor ブロック

[Value Extractor] ブロックは、離散メッセージを受信して、指定の欄を抽出し、任意のアルゴの場所からデータにアクセスしてロジックと計算を実行することができます。[Value Extractor] ブロックは、離散メッセージから抽出した欄や、アルゴの任意の場所から、また指定の数値や [Boolean] 値からデータを出力することができます。[Value Extractor] ブロックは一般的に、特定の銘柄の約定時の最良売の枚数など、マーケットで絶えず変化する可能性のある情報のスナップショットを取得するために使用されます。スナップショットを取得することで、アルゴは時間の一瞬における情報を取得でき、マーケットが変化し続けてもその「凍結」情報を後に使用できます。新規の離散イベント メッセージが [Value Extractor] ブロックをトリガーすると、ブロックは古いスナップショットを新しいスナップショットに置き換えます。

[Value Extractor] ブロックは以下のように作動します。

  1. 受信する離散イベント メッセージは [Value Extractor] ブロックをトリガーします。
  2. トリガーされると、[Value Extractor] ブロックは、希望する情報の「スナップショット」を取得します。入力メッセージ内に含まれた情報のスナップショットを取得するか、またはアルゴ内の任意の場所から情報を取得するように選択できます。
  3. スナップショットを取得後、[Value Extractor] ブロックは右下のポートを通じてそのまま入力メッセージを私、右上のポートを通じてスナップショットの出力を開始します。

    既定の黄色の出力ポートにより示されるとおり、スナップショットにより取得された情報の種類によって、値は [Numeric]、[True/False] または限月タイプである可能性があります。

: [Value Extractor] ブロックは、受信する離散イベント メッセージからの取引枚数を抽出する数式で設定されます。

[Value Extractor] ブロックは、発注ブロックから約定メッセージを受信します。[Value Extractor] ブロックは、離散イベント メッセージから約定枚数を抽出するための数式で設定されていて、約定メッセージと、約定時のマーケットの最良売枚数との比較を行います。結果に基づいて、ブロックは、Exit 注文の枚数として、[val] ポートを通じて、約定枚数または最良売枚数を出力します。

[Value Extractor] ブロックは、マーケットの特定のイベントの発生を示すために、「切り替え」として設定されます。これを行うには、離散イベント メッセージによりトリガーされると、[Value Extractor] ブロックに、数値「1」のスナップショットを取得するように指示できます (内部ロジック キャンバスにて、「1」の値を入力します)。離散イベント メッセージが発生すると、[Value Extractor] ブロックが既定値 0 を出力します。ただし、離散イベント メッセージが発生すると、[Value Extractor] ブロックが「1」の値を出力し、離散イベント メッセージが発生したことが示されます。

Block プロパティ

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

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

ブロックの値の計算に使用される数式。

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

Value Injector ブロック

[Value Injector] ブロックは、離散イベント メッセージを受信し、新規メッセージ欄を追加するか、1つまたは複数の既存メッセージ欄を上書きして、出力ポートを介して変更済みの離散メッセージを送信します。

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

  1. 離散イベント メッセージが [Value Injector] ブロックに入ります。
  2. [Value Injector] ブロックは、受信するユーザー定義値の特定の欄を上書き変更します。[Fields Formula Editor] にて欄と値を指定する必要があります。
  3. [Value Injector] ブロックは、右側の出力ポートを通じて変更済みのメッセージを渡します。

ループ ブロックから空の離散イベント メッセージ出力によってトリガーされると、[Value Injector] ブロックは、内部数式を使って、相当するブロックから価格と枚数を取得し、[Value Bucket] ブロックに送信する前にこれらの値をメッセージに追加します。

[Value Injector] ブロックを使用する際、各離散イベント メッセージは、各自に割り当てられた数値や真/偽の値を含んだ複数の「欄」で構成されていることに気づくことが大切です。例えば、約定から生成された離散イベント メッセージには、[fillPrice] 欄と [fillQuantity] 欄に数値が含まれています。しかし、[deletedQuantity] などのその他の関係のない欄には 0 が含まれます。

1つの [Value Injector] ブロックは、受信するメッセージの複数の欄を上書き変更できます。

[Field Formula Editor] を使って、1つ以上の値の数式を定義して、出力離散イベント メッセージに挿入することができます。

Block プロパティ

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

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

ブロックの異なった欄の値の上書きに使用される数式。

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

離散ブロックの概要

ADL では、離散イベントが発生した際に操作を実行できるように一連の離散 (Discrete) ブロックを提供しています。各ブロックは離散メッセージ入力で含まれる情報にアクセスできます。

離散ブロックには以下があります。

  • MsgInfoExtractor
  • Value Accumulator
  • Value Injector
  • Value Extractor
  • Value bucket
  • Generator
  • State
  • Branch
  • Funnel
  • Discrete Min/Max
  • Sequence
  • Demultiplexer
  • Moving Average
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.

Strictly Necessary Cookies

Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.

Analytics

This website uses Google Analytics to collect anonymous information such as the number of visitors to the site, and the most popular pages.

Keeping this cookie enabled helps us to improve our website.

Marketing

This website uses the following additional cookies:

(List the cookies that you are using on the website here.)