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
ICE_L
Description
Task
WSE
Description
Task
Nord Pool
Description
Task
Reference
NASDAQ_NED
Description
Task
NDAQ_EU
Description
Task
MEFF
Description
Task
LSE
Description
Task
LME NTP
Description
Task
LME
Description
Task
JSE
Description
Task
ATHEX
Description
Task
GFO-X
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
Exchanges: Crypto
Coinbase
Description
Task
Kraken
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

ADL と TT Mobile

残念ながら、ユーザーは TT Moblie アプリを通じて新規のアルゴ注文を起動できません。ただし、TTW ブラウザ アクセスからアルゴを起動すると、TT Mobile アプリにログインして、アルゴ ダッシュボードで実行中のこれらのインスタンスを表示できます。

Displaying Accumulated or Unaccumulated LTQ

Unaccumulated LTQ is simply the most recent LTQ. Accumulated LTQ is a summation of all LTQs that occur at a given LTP while the LTP remains unchanged.

For example, consider the following trades: LTP = 100, LTQ = 3LTP = 99, LTQ = 4LTP = 99, LTQ=7LTP = 99, LTQ=1
At this point, an unaccumulated LTQ would be displayed as 1 whereas an accumulated LTQ would display as 12 (4+7+1). In 7x, TT Price Servers could be configured to deliver LTQ as accumulated or unaccumulated. As such, the LTQ displayed in ADL would be accumulated or unaccumulated based on this setting. In TT, TTW displays an accumulated LTQ. However, TT ADL displays an unaccumulated LTQ. If desired, ADL designers can calculate the accumulated LTQ as follows

For more information and LTP/LTQ in ADL, refer to the documentation on the Field Block.

TT ADL の時間とタイマー

TT ADL の時間とタイマー

TT ADL 開発者がアルゴにて時間とタイマーを使用する必要のある状況があります。ADL は、いくつかのブロックやメカニズムをつうじてこの機能を提供しています。これらのうち幾つかは TT ADL の新機能です。以下にそれぞれ使用実例を説明しています。

実例1: アルゴは、離散イベントのロジカル経路で時間の遅延を設ける必要があります。

Stopwatch ブロックではユーザーが、ミリ秒で離散イベントの時間の遅延を設定できます。ミリ秒数は関連の緑色のキャンバスの出力として指定されるので、内部のロジカル状態に基づいて異なります。

これが便利である場合の例として、約定と追加の注文発注の間での遅延を設定することです。以下のアルゴでは、Order ブロックにフィードされる枚数が増加する前に、約定メッセージでは10秒間の遅延があります。

実例2: アルゴは特定の時間と特定の日付で操作を実行する必要があります。

Generator ブロックの新規の AtStartTime モードを使って、通知のメッセージを送る日付と時間を指定できます。AtStartTime モードの際、UTCDate と UTCTime コネクターの両方を表示します。これは年、月、日、時間、秒、ミリ秒で構成されています。指定した UTC 日付と時間に達すると、離散イベントは出力ポートから伝搬されます。

これが便利である場合の例として、特定の日付と時間に Order ブロックのオン・オフ入力ポートを更新することです。以下のアルゴにて、Order ブロックが2017年7月14日 15:00:00.000 (米国中央時間帯) まで有効化されます。

実例3: アルゴは特定の時間と特定の日付に操作を実行する必要があります。

Generator ブロックの新規の AtStartTime モードを使って、通知のメッセージを送る毎日の時間を指定できます。AtStartTime モードの際、UTCTime コネクターを表示します。これは時間、秒、ミリ秒で構成されています。指定した UTC 時間に達すると、離散イベントは出力ポートから伝搬されます。これは毎日繰り返されます。

これが便利である場合の例として、特定の時間に Order ブロックのオン・オフ入力ポートを更新することです。以下のアルゴにて、Order ブロックが 3:00:00.000 (米国中央時間帯) に有効化されます。

実例4: アルゴはオプションで指定された時間の間隔で離散メッセージ通知を繰り返す必要があります。

Generator ブロックの機能強化された TimeInterval モードを使って、指定した時間の間隔が経過した際に、離散メッセージ通知を送るように指定できます。このモードにある場合、有効化、繰り返し、periodMs の入力ポートが露出されます。有効化ポートを使って、タイマーを有効化または無効化でき、繰り返しポートを使って、イベントを繰り返すことができ、さらに periodMs ポートを使って、時間の期間をミリ秒で定義できます。これらのすべてを動的に設定できます。

これが便利である場合の例として、特定の時間の間隔で Order ブロックの価格ポートを更新することです。以下のアルゴで、注文が 500ミリ秒毎に買値と同じ値に再価格設定されます。

実例5: アルゴは、指定された離散イベントが発生した日付と時間を知る必要があります。

新規の MsgInfo Extractor ブロックを使って、イベントが発生した日付と時間を露出することができます。特に言えば、年、月、日、時間、分、秒、ミリ秒の出力ポートを露出します。これらは離散イベントが MsgInfo Extractor ブロックに入ると常に更新されます。日付と時間のスタンプは、ブロックがメッセージを受信する時間の一点を示しています。

これが便利である場合の例として、アルゴが特定の時間の間に開始される場合のみ必ず Order ブロックが有効化されるように確認することです。以下のアルゴでは、10:00:00.000 UTC ~ 14:00:00.000 UTC の間にアルゴが開始される場合のみ、Order ブロックが有効化されます。

: Clock ブロックは X_TRADER バージョンの ADL で利用できますが、TT バージョンの ADL には含まれていません。TT ADL でも技術的には同じメカニズムを作成できますが、ご使用のアルゴの性能で深刻な低下が起こる可能性があるので、TT ではこれを勧めていません。

アルゴで時間とタイマーを使用する必要がある場合、TT ADL ではこれを行う幾つかのブロックやメカニズムを提供しています。

アルゴの共有

アルゴの開発とテストを行った後、他のユーザーが取引にアルゴを使用できるように設定できます。ADL のアルゴ共有機能を使って、他のユーザーがアルゴを執行したり ADL でアルゴを起動できるように、アクセス許可を認めることができます。他のユーザーが執行のためのアルゴを共有する場合、アルゴはアルゴ ダッシュボードにて利用可能なアルゴの一覧に自動的に表示されます。アルゴが 注文チケット アルゴ (OTA) または 合成注文アルゴ (SOA)である場合、アルゴは [MD Trader] などの [取引] ウィジェットにて公開アルゴ一覧に表示されます。

アルゴ共有アクセス許可

アルゴを共有する場合、これらのユーザーに以下のアクセス許可の両方または1つを設定できます。

  • View in ADL (but not edit): ユーザーが ADL にて読み取り専用アクセス許可で共有アルゴを開くことができます。
  • Launch: ユーザーが TT で共有アルゴを実行できるようにします。ただし、ユーザーは ADL でアルゴを起動できません。

: ユーザーは ADL キャンバスでアルゴを開かなくても、アルゴの承認要求を送信できます。

アルゴ共有の制限事項

TT は、共有アルゴに対して以下の制限事項を課しています。

  • アルゴを共有する各ユーザーの電子メールアドレスを知っておく必要があります。
  • アルゴを共有するユーザーが Setup でアルゴを実行するのに承認が必要な場合は、そのユーザーはアルゴを実行するのに承認を要求する必要があります。この場合、そのユーザーに読み取りアクセス許可有効化する必要があります。

クリップ サイズ リロード機能

TT ADL の時間とタイマー

このトピックでは、新規のアルゴ インスタンスを起動することなく、アルゴを取得して注文を再発注する方法や、注文を連続して発注する方法について説明しています。「リロード機能」を利用したり作成するには幾つかの方法があります。ここにリロード機能タイプの Library ブロックを作成する簡単な方法をいくつか紹介します。

リロード ロジック

ユーザーは 3 コネクター入力を使って Library ブロックを作成します (約定、クリップサイズ枚数、合計注文枚数)。最初に入力した約定値を比較して、それをクリップ サイズ枚数入力値で割り算します。そしてこの計算値が出て、整数に四捨五入切り捨てを行い、小数点が入らないようにします。この結果の計算値は次に、クリップ サイズ枚数入力値で乗算されます。この結果の計算値は次に、クリップ サイズ枚数入力値に追加されます。結果の計算値はリロード枚数値となり、注文が起動または開始されて以来の直前の約定を構成しています。リロード枚数は Math ブロックにフィードされ、このリロード枚数を合計注文枚数と比較する出力最小値に設定されます。結果の出力最小値は、実際のリロード枚数となり、Orders ブロックにフィードされます。最小値を出力するよう設定された Math ブロックは、Reload ロジック機能がシャットオフされる方法です。比較は、合計注文枚数入力が最小 (MIN) 値 対、リロード枚数入力を示しています。この値は、Orders ブロックの枚数入力にフィードし、Order ブロックがそれ以降注文を発注しなくなり、最初の合計注文枚数より多くなります。

リロード ボタンの例

リロード ボタンの例

以下の例は、ユーザー定義変数「リロード ボタン」を作成する方法を示しています。これにより、ユーザーがアルゴを手動でトリガーして、希望した時に新規の注文を発注できます。これは、単に Boolean ブロックから [TRUE/FALSE] 出力を切り替えることでできます。これにより、以下に示すとおり、内部ロジックがトリガーされます。

フリップ・フォー・セル機能を備えた注文スタック ロジック

基本優先順位ホルダー機能の作成

ユーザーは、「注文一覧の上下」の注文を発注する必要がある場合があります。これを実行するには、基本優先順位ホルダーを作成します。以下の例は、発注のこれらのタイプのロジックの基本エントリ側を示しています。

例1: [Discrete Order] ブロックとフリップ フォー セル (Flip 4 Sell) 機能を備えた注文スタック

この例は、以下のアルゴ変数を使用します。

  • 発注には買側
  • 最良買値の下に2つの価格ティックを設定
  • 各注文に 5枚の注文枚数
  • 2つのオフセット価格ティックの設定から、一覧の下に発注される、合計5つの価格増分。

以下の画像では、ロジックの組み立て方法を説明しています。この最初の画像では、変数を設定します。

この部分は注文のもとのスタックを作成します。これは、スタックの深みを設定するのにループ ブロックを使用します。そして Loop ブロックから Index Number をとり、任意のオフセットに追加します。ユーザーは各元の注文を発注するちょうどの価格を特定するように設計されています。これらは各自、仮想インスタンスになります。DOB はもとの注文と注文枚数として、「START PRICE」を参照します。また DOB はフリップ フォー セル (Flip for Sell) 機能に設定されています。

以下に示すブロックのいくつかの内部参照について説明します。

  • 緑色の SUM ブロックは約定枚数を計算しています。他の SUM ブロックは 1 の数値を使ってレベルを数えます。
  • 元の価格マーカー…..(インサイド マーケットのオフセット – 1 + Stacking Order ブロック Loop ブロック インデックス) × ティック
  • [Fixed Stack Depth] 入力は [Stack Depth] を参照します。
  • DOB 価格入力は [Start Price] です。…QTY 入力は [Order QTY] です。

この画像では、[Virtual Order Managers] グループ ブロックのインサイド ロジックを示しています。

以下に示すブロックのいくつかの内部参照について説明します。

  • 開始価格入力は指値です。
  • [Are We Buying] 入力は IsBuy です。
  • Net Decrement Calculation Piece 1 入力は Fill QTY です。

この画像では、[Virtualized Group] ブロックの中のロジックを大きな表示で示しています。

そしてこの画像では、[Order Price Movement] をになっているロジックを示しています。

フリップ・フォー・セル注文機能

ADL の自動ストラテジーの多くは、「ピボット」ポイントなどの特定のブロックの動作をもつ、ほぼ同一の買側と売側の方法を使用します。そのように、ADL の幾つかのブロックユーザーが [Flip for Sell Order] 機能を持っています。これで [Order Side] のユーザーの選択によって、代わりの機能を実行できるようになります (買または売)。例えば、この機能が有効化されると、[Add] ブロックは [Order Side ] の値に基づいて、加算または減算のいずれかを実行します。

Flip for Sell Order 機能を使った両方向のストラテジー (Flip for Sell Order が有効化されたブロックが協調表示されます)

上記のストラテジーの特定の部分を視覚化して適切に機能させる必要があります。視覚化とは、例では明確化の目的で示されていません。

常に買サイドの方向から設計して [Flip for Sell Order] 機能を有効化し、適切なピボット ブロックに対し売サイド方向に切り替え可能にする必要があります。

[Trade] ウィジェットにて、[Algo Dashboard] など、[Flip for Sell Order] 機能が有効化されたブロックを含んでいるアルゴリズムに対しては、[Side] 変数が自動的に表示されます。そしてユーザーはアルゴリズムを起動する前にこの変数を設定する必要があります。

ユーザーは以下の方法の1つを使って [Order Side] 変数を替えることができますが、アルゴリズムを起動する前に、[Order Side] 変数を宣言する必要があり、起動後は変更できません。

  • Designer キャンバスの上部にある ドロップダウン メニューを使用。
  • [Algo Dashboard] の [Variables] タブを使用。
  • [MD Trader] ウィジェットを使用。買側列 (青列) をクリックすると、[Order Side Variable] が 「買」に設定されます。売側列 (赤列) をクリックすると、[Order Side Variable] が 「売」に設定されます。この方法は、[Order Ticket Algorithms] (OTA) のみに適用されます。

Flip for Sell Order 機能をサポートしているブロック

以下のブロックは Flip for Sell Order 機能をサポートしています。

  • AddSubtract ブロック
  • Greater ThanLess Than ブロック
  • 以下の欄を含んだ Field ブロック
    • 買値 / 売値
    • 買枚数 / 売枚数
    • 高値/安値
    • 直接買枚数 / 直接売枚数
    • 買注文枚数 / 売注文枚数
    • 直接買値 / 直接売値

ブロック出力値のエクスポート

ADL ブロックは [Numeric] 出力ポートと [Boolean] 出力ポートからの値をエクスポートでき、[Algo Dashboard] のアルゴの一番右の列に表示されます。これらの出力の値は動的に更新されます。

アルゴからエクスポートされた3つの値

エクスポート済みの値は仮想ブロック内や、仮想ブロックの出力ポートに対してはサポートされていません。

仮想化

仮想化とは、アルゴリズムの指定の部分に適用して、指定の部分の複数の「コピー」を作成し、同時に執行できるようにするプロパティです。概念は複雑に見えますが、例で説明すると、仮想化の必要性が明確になります。

  1. 以下の例で示すとおり、ユーザーは E-ミニ S&P 500 限月で単純なマーケット メイクのアルゴリズムを設計して実行する例を紹介します。

  2. 現在の最良買値が 1313.75 でアルゴリズムのエントリ ロジックが、この価格で 10 エントリ側の限月をクォートすることを想定します。次に 10 限月中 1 つの限月が 1313.75 で約定します。それに対して、アルゴリズムのエグジット ロジックが 1314.25 で1限月を、約定値より高い 2増分を提供します。

  3. マーケットは高値に移動し、最良値は 1314.00 に変化することを想定します。Step 2 からのオフセット限月が 1314.25 でリセットされますが、アルゴリズムのエントリ ロジックは残りの 9 エントリ側限月を 1314.00 に変更します。次に 9 エントリ側のうち 2 エントリ側が 1314.00 で約定します。この時点で、アルゴリズムの合計約定数は、手順2 からの最初の部分約定も含めて 3 となります。アルゴリズムのエグジット側のロジックが合計約定数と最新の約定値のみを使用するように設計されている場合、1314.50 で3つのオフセット限月と、最新の約定値より2つ高い増分を提供します。さらに、アルゴリズムのエグジット ロジックは一度に1注文のみクォートできるので、1314.25 で残存するオフセット限月を削除しました (手順 2 より)。

    この動作が発生しないようにするには、ユーザーはこのアルゴリズムのエグジット ロジックを仮想化する必要があります。仮想化では、エントリ側の約定が発生するたびに、エグジット ロジックの新規コピーが作成されるので、各オフセット注文が独立したロジックで作動できます。

    ブロックのグループを仮想化すると、ユーザーは、指定の離散イベント (約定など) が発生するたびに、グループの新規コピーが作成されるように整理できます。つまり、ユーザーはブロック1組をグループ化し、グループを仮想化して、仮想グループ ブロックに離散イベント メッセージへの道筋を結びつける必要があります。この道筋を通じて離散イベント メッセージが仮想ブロックに入った場合、新たなコピーが作成され、各コピーはそれぞれ独立して作動します。ブロックの構造では同一である各コピーは、独自の入力と出力によりそれぞれ独立して作動できます。

: 仮想ブロックの複数コピーが同時に存在できるので、[Designer Canvas] は仮想ブロック内に含まれるブロックの動的出力値を正確に表示しない場合があります。

優先順位ポジション (EPIQ)

推定優先順位 (EPIQ) は、詳細な注文の情報に欠けているので完全ではありません。しかし注文の発注時に注文の価格での枚数で開始することで、保守的な推定ができます。そしてこの価格で発生したすべての注文によって値は下がります。次に [BidQty] がこの値を下回ると、さらに下向きに調整します。

Branch0 ブロックの数式は以下のとおりです。

! tradeIsOTC AND tradePrice = MsgInfoExtractor0.limitPrice AND Order0 > 0

取消や停止で注文を残す

ADL の各スマート取引ブロックでは、アルゴリズムが停止や取消された場合に注文一覧で子注文を残すことができます。このオプションは、該当する取引ブロックをダブルクリックするとアクセスできます。

注文を残すオプション

以下の操作により、アルゴリズムが停止または取消される可能性があります。

  • [Instrument] ブロックが記録する取引所の1つが終了した場合: 停止 (情報パネルの変数タブのチェックボックスが選択されている場合を除いて)。
  • スマート取引ブロックが無効価格で注文の発注を試みた場合: 停止
  • リスク チェックの違反 (Pnl ブロックが賦課): 停止
  • Terminal ブロックがトリガーされた場合: 停止
  • [ダッシュボード] で「停止」ボタンが押された場合: 停止
  • [ダッシュボード] で「取消」ボタンが押された場合: 取消
  • クライアントの切断時 (自発的または不本意のいずれか): アルゴリズムは [Algo Dashboard] (アルゴダッシュボード] の変数を使って実行を継続するか、停止または取消するように設定できます (子の変数はすべてのアルゴリズムに自動的に表示されます)。

合成注文アルゴ (SOA)

ADL の合成注文アルゴ (SOA) は、TT 注文タイプのように発注時に起動される注文チケット アルゴ (OTA)に類似しています。ただし、SOA は3つの点で OTA とは大きく異なります。

  • 合成注文アルゴ (SOA) は自動的に MD Trader にて親注文を表示します。
  • SOA は子注文の約定に加え親注文の約定を生成します。
  • 合成注文アルゴ (SOA) が完全約定すると (注文枚数に設定されているこのタイプのブロックが 0 に到達した場合)、アルゴは自動的に終了されます。

OTA と同様、合成注文アルゴ (SOA) は、[Instrument] ブロックの [Type] プロパティを [Order Instrument] に設定することを必須づけています。さらに、[Number] ブロックの [Variable Type] プロパティを [Order Quantity] に設定する必要があります。

SOA が展開されると、以下のように注文タイプ値の一覧に表示されます。

SOA で発注された親注文と子注文の両方が [MD Trader] ウィジェットに表示されます。アルゴの作成者が ADL で [Synthetic Algo Order (SOA)] 設定を有効化すると、[Show algo order on ladder] 設定は自動的に有効化されます (そして無効化することはできません)。

MD Trader での SOA 注文の表示

合成アルゴ注文 (SOA) を送信する際、最初に注文には、親注文の約定待ち枚数は 0 と、非公開枚数には * が表示されます。子注文は通常の約定待ち注文として表示されます。子注文が SOA 親注文として同じ価格帯で発注されると、約定待ち注文には、その価格帯で発注されたすべての子注文の合計約定枚数が反映されます。子注文が別の価格帯で発注されると、親注文の約定待ち枚数は 0 が表示されます。

(1) 同じ価格帯で取引所子注文を含んだ SOA 親合成注文
(2) SOA 親合成注文
(3) 別の価格帯での SOA 取引所子注文

: 親注文の発注済み枚数を表示するには、注文を中央クリックして [Floating Order Book] を表示します。

復元とサーバー メンテナンス

TT では、Algo Server メンテナンスの再起動の後に、 ADL を自動的に再起動させるための新機能を開発しました。デモ取引環境の Algo Server は、月曜~金曜のシカゴ時間の午後 4時15分に再起動されます。ライブ取引環境の Algo Server は、メンテナンスが必要な場合は週末に再起動される場合があります。

回復の動作

すべての ADL アルゴは、再起動前の状態に回復されますが、Autospreader や Aggregator 注文を実行するのに設定された以下の注文ブロックが1つ以上含まれるアルゴは例外となります。これらのアルゴの回復は失敗します。

さらに、Algo Server が再起動されている間に、取引所以外の定期的な離散イベントを発信するように設計された ADL アルゴの状態は、再起動後に不正確であったり障害を起こす可能性があります。この方法で設計されたアルゴは、週末のメンテナンスが開始される前に停止させる必要があります。

数式エディター

ADL ブロックでは、ブロックの出力値を計算するための数式を定義できます。このようなブロックは、それぞれの [ブロックプロパティ] パネルから [Formula Editor] を開くことができます。

[Formula Editor] には、以下のような、数式で使用できる値や演算子が表示されます。

  • 算術演算子 (+、 -、% など)
  • 括弧など、演算の順序を定義するための様々な記号
  • 比較演算子 (<、>=、==、!= など)
  • 論理演算子 (IF、AND、OR、! など)

    : IF 演算子は、[Alert] ブロックで現在サポートされていません。

  • 数値とブール値
  • 変数で、他の ADL ブロック出力コネクターからの値やブロックに入る離散イベントメッセージからの値を含みます。
    • ブロック コネクターを使って、数式の他のブロックからの出力を使用できます。
    • メッセージ欄により、受信した離散イベント メッセージからの情報を数式にて使用できます。

Formula Editor ではオート コンプリート機能を提供していて、アルゴですでに利用可能な情報を簡単に参照できます。特殊文字を入力すると (@または#)、数式に変数として挿入できる項目のリストがエディターに表示されます。また記号の後に文字を入力すると、その文字で始まる項目に絞り込まれます。

    # を入力すると、受信した離散イベント メッセージで利用可能なすべての欄のリストが表示されます。
    @ を入力すると、キャンバスに1つ以上の連続出力ポートを含むブロックのリストが表示されます。

サンプル数式

以下のサンプルでは、基本的な数式タイプを説明しています。

ブール数式

以下の数式は、単純にブール値「TRUE」を出力し、他の下流ブロックが使用できるようにするものです。

算術数式

[ExitPrice Value Extractor] ブロックの次の数式は、買注文の約定値よりも2ティック高い価格を計算します。そしてこれを使用して、買注文の約定値よりも2ティック高いエグジット売注文を発注できます。

    [fillPrice] メッセージ欄の値にアクセスするには、# を入力して欄を選択します。
    [TickSize Field ] ブロックの値にアクセスするには、@ を入力して希望するブロックを選択します。

条件付き数式

次の数式は、現在の反対側のインサイドマーケットが、約定値より2ティック高いかどうかに基づいて、[TRUE] または [FALSE] の値を出力します。

  1. IF 条件では、>=>= 演算子を使用して、[BestAsk] フィールド ブロックの値 (最良売値で利用可能な枚数) と約定価格から 2ティック離れた価格 (前の数式から) を比較します。
  2. 条件が 「TRUE」 の場合、数式はブール値 「TRUE」 を出力します。
  3. それ以外は、数式はブール値 「FALSE」 を出力します。

変数欄

[Formula Editor] には、アルゴが実行されるにつれ、動的に更新する値を追加できる、ドロップダウン メニューが含まれています。

  • connectors: アルゴリズムの他のブロックから、連続出力ポートの値を参照できるようにします。また [block.connector] の形式でコネクターを入力することもできます。

    [Formula Editor] 内の以下のコネクターにより、アルゴリズム内の Analytics0 という Analytics ブロックからの連続出力ポートが表示されます。

    :

    • 以上の例で、@Analytics0 または @Analytics0- (ダッシュ付き) を入力して、出力ポートをより細かく検索できます。
    • [Formula Editor] では、アルゴリズムの他のブロックからの連続出力ポートを最大100個のみ表示できます。
  • messages: 離散イベント メッセージに埋め込まれた以下の情報を抽出できます。また {fieldName} の形式でコネクターを入力することもできます。

    • limitPrice: 新規注文の価格。
    • orderQuantity: 合計注文枚数。
    • workingQuantity: 注文の約定待ち枚数。
    • fillPrice: 約定の価格。
    • fillQuantity: 約定の枚数。
    • cumQuantity: 約定枚数の合計。
    • disclosedQuantity: 市場で表示される公開注文の枚数。
    • deletedQuantity: 削除された注文の取消し枚数。
    • tradeQuantity: 指定した限月の直近枚数。
    • tradePrice: 指定した限月の直近値。
    • stopTrigger: 該当のストップ注文が有効化される価格。
    • isBuy: 約定が買側の執行であるかどうか。
    • isQuotingOrder: メッセージが送信済みのクォート注文により生成されたかどうか (Autospreader 注文ブロックにのみ有効)。
    • isHedgeOrder: メッセージが送信済みのヘッジ注文により生成されたかどうか (Autospreader 注文ブロックにのみ有効)。
    • isExternalEvent: メッセージがアルゴリズム以外の情報から生成されたかどうか。
    • isTriggered: 注文がトリガー条件から発生したものであるかどうか。
    • Instrument:: メッセージに関連した限月。
    • userFieldN: Value Injector により生成でき、Value Extractor がアクセスできる、4つの空白欄の1つ。
  • string“: (Alert ブロックのみ) メッセージ文字にカスタム文字を追加できます。

Formula Editor を使用するブロック

以下の ADL ブロックでは、カスタム数式を作成できます。

機能拡張 Exit ブロックの機能

Exit ブロックは、仮想グループ ブロック内で使用され、不必要なインスタンスを廃棄するのに使用されます。アルゴリズムに Exit ブロックを追加するには、仮想グループ ブロック内でキャンバスを右クリックして「Exit ブロックの追加」を選択します。Boolean または離散メッセージのいずれかを使って、アルゴリズムでロジックを作成し、必要でなくなった場合はいつでも仮想インスタンスを廃棄できます。

Exit ブロックを使うのではなく、場合によっては、アルゴリズムの効率性に影響が及ぼされ、遅延の問題を生じることがあります。これは、仮想インスタンスが作成される際は常に、メモリーに保存され、ADL は各仮想インスタンスを更新する必要があります。更新する必要があるインスタンスが多ければ多いほど、この手順により時間がかかります。

デモ取引モード例

1000 の1ロット注文を発注しようとしているエントリ側の注文があります。そして1ティックの利益値のため各個々の1ロットのエントリ側注文を約定待ちしようとしています。全部のエグジット側のヘッジ ロジックを仮想化しました。そしてヘッジ ロジックで約定した場合に各仮想インスタンスのインサイドをトリガーさせるように、 EXIT ブロック内に作成します。

次に入力コネクターに Exit ブロック ロジックを接続させて、1000 個の仮想インスタンスでロジック構造をセットアップします (連続ブール値)。ユーザー定義の Boolean ブロックを今作成した入力に接続させます。アルゴリズムを開始して、アルゴがこれらの1000の仮想ブロック インスタンスを起動している間に、サーバーで利用するシステム リソースを監視します。リソースが均質化するのを待機します (メモリー、スワップファイル、CPU など)。

Boolean ブロックのスイッチを入れて、すべての Exit ブロックを一度にトリガーするようにすると、.NET がゴミ箱の集合をトリガーした際にリソースの空き容量が確保されるのがわかります。

離散メッセージにより仮想化 (Virtualization) が生成される際:

  1. 仮想グループ内のブロックが作成されます。
  2. これらの各ブロックの連続入力が生成されます (存在する場合)。
  3. この仮想化コピーの作成を誘導する離散メッセージは、経路をつうじて循環します。
  4. 実行可能な機能をもつブロックは執行を行います。一般的に、この状況での操作ブロックとは、アルゴの寿命の任意の時点において市場で操作を行うものを示しています。例えば、注文管理ブロックがあります。

Exit ブロック (連続入力を使用するブロック) がトリガーされると…

  1. Exit ブロックで Boolean 連続入力が「偽」から「真」に変わった瞬間、仮想化がエグジットを予定します。操作はまだ行われていません。
  2. 各仮想化グループの連続入力は更新されます。Boolean 変更のメッセージを表示したアルゴの変更が (Exit ブロックのトリガーに使用) 他の連続値の変更のメッセージも表示する場合、これらの変更が発生します。
  3. これらの連続値がトリガー操作ブロックを更新して何か操作を行おうとしている場合、これらの操作も実行されます。
  4. Exit ブロックは意図された内容を実行します。つまり ADL は仮想化グループのインスタンスを廃棄します。

Exit ブロック (離散入力を使用するブロック) がトリガーされると…

  1. Exit ブロックをトリガーするのに使用される離散メッセージは、言ってみれば経路の一部です。これは経路の最後のブロックか、経路の一部であることがあり (例えば Sequence ブロックからトリガーされた最初の項目である場合で、Sequence ブロックの他の出力が使用される場合)。この離散メッセージがソースから生成されると、経路全体が完了します。つまりトリガーされた Exit ブロックからのすべての下流の項目は、同じ離散メッセージ経路にあるので、更新されます。
  2. この経路の更新値が、操作ブロックに対し何か操作を行うようにトリガーした場合、これらの操作が実行されます。
  3. Exit ブロックは意図された内容を実行します。ADL は仮想化グループのインスタンスを廃棄します。

注文チケット アルゴ (OTA)

ADL のアルゴリズムは、注文チケット アルゴ (OTA) として設計できます。つまり他の注文タイプと同様に、アルゴリズムを [MD Trader] または [Order Ticket] ウィジェットのいずれかから起動できます。素早い「1クリック」スタイルの執行が必要なストラテジーには、OTA 機能が非常に便利になります。

注: 約定は、OTA 親注文にではなく、OTA 子注文のみに生成されます。

[Instrument] ブロックの [Type] プロパティが [Order Instrument] に設定されると、アルゴは注文チケット アルゴ (OTA) となります。

OTA が作成され展開されると、以下のようにアルゴ名が注文タイプ値に追加されます。

MD Trader での OTA 注文の表示

既定で、OTA により発注された子注文のみが [MD Trader] ウィジェットに表示されます。OTA アルゴ クリエーターで 「Show algo order on ladder」 (板情報でアルゴ注文を表示) 設定を有効化すると、OTA で、MD Trader ウィジェットの親合成注文をオプションで表示することができます。

注文枚数と約定待ち枚数は、両方とも 「0」 に設定され、注文が OTA 親合成注文であることを示しています。子注文は通常の約定待ち注文として表示されます。

(1) OTA 親合成注文
(2) OTA 子注文

離散イベント メッセージの伝達の順序

ADL.変数が更新される粒状順序を理解することは、ADL で高度なプログラミング技術を取得するのに、最も重要な要素の1つです。

ブロックが離散イベント メッセージのパルスを出力すると、アルゴリズムは一時的に、取引所サーバーからの連続メッセージのチャネルを停止します。離散イベント メッセージのパルスがアルゴリズムの中に伝達されている間、連続メッセージ チャネルは、閉じられたままとなります。効果では、この動作は、マーケット データのストリーミングにチャネルする [Instrument Field] ブロックとして、ブロックの出力を「フリーズ」します。この静的状態では、離散的イベント メッセージのパルスはユーザーにより指定された経路を移動して、経路に存在するブロックの出力値の更新を行います。この伝達が完了すると、アルゴリズムはすべての取引所サーバーからの連続メッセージのチャネルを再開します。

TT はパフォーマンスの向上のため常にシステム改善を行っています。そのため TT では、アルゴのシーケンス ロジックを設計する際に、特定のシステム遅延を想定した時間の遅延を含めないように強く推奨しています。

このような伝達はミリ秒で実行され、実際には見えることはありません。ただしこのメカニズムでは、ADL でユーザーは、離散イベント時に正確に存在するマーケット データを取得して使用できます。以下の ADL は、離散イベント メッセージが伝達される際にブロックが更新される正確な順番を制御しています。

Pass-through ブロック

伝達中に、離散イベント メッセージが Pass-Through ブロックに入り (離散イベント メッセージを変更せずに受信または受け渡しする際)、以下の順番で動作が起こります。

  1. Pass-through ブロックの連続出力値自体が、まず更新されます。
  2. Pass-through ブロックの連続出力値を使用するすべての「下流」ブロックが、更新されます。
  3. 離散イベント メッセージは Pass-through ブロックを終了します。
  4. 離散イベント メッセージは、末端点に到達するまでに、指定の道筋を通じて伝達されます (次の黒点を参照)。

「パススルー」ブロックを入力する際の更新の順番。この例では、離散イベント メッセージが、パススルー ブロックを出る前に、パススルー ブロックから 「下流」に接続されているブロックをまず更新します。

  1. 離散イベント メッセージはブロックに入ります。
  2. 連続出力値は、[Add] ブロックの入力ポートに伝達を行います。
  3. 離散イベント メッセージの出力ポートがブロックを出て、道筋で伝達を行い続けます。

Termination ブロック

離散イベント メッセージは、できるだけ遠くに道筋に沿って伝達を行い、以下のブロックのうちいずれかの1つに入ると、終了 (終結) します。

Termination ポイント

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.)