記事「注文板に基づいた取引システムの開発(第1回):インジケーター」についてのディスカッション

 

新しい記事「注文板に基づいた取引システムの開発(第1回):インジケーター」はパブリッシュされました:

市場の厚みは、特に高頻度取引(HFT)アルゴリズムにおいて、高速な取引を実行するために不可欠な要素です。本連載では、多くの取引可能な銘柄に対してブローカー経由で取得できるこの種の取引イベントについて取り上げます。まずは、チャート上に直接表示されるヒストグラムのカラーパレット、位置、サイズをカスタマイズ可能なインジケーターから始めます。次に、特定の条件下でこのインジケーターをテストするためのBookEventイベントの生成方法について解説します。今後の記事では、価格分布データの保存方法や、そのデータをストラテジーテスターで活用する方法などのトピックも取り上げる予定です。

まず、「市場の厚み」(DOM)とは何かを改めて確認しましょう。それは、未決済の指値注文の一覧のことを指します。これらの注文は、市場参加者の売買意図を表しているものの、必ずしも実際の取引に至るわけではありません。なぜなら、トレーダーはさまざまな理由により、過去に発注した注文をキャンセルできるからです。たとえば、市場状況の変化や、当初指定した価格・数量での取引に対する関心の低下などが挙げられます。

関数SymbolInfoInteger(_Symbol, SYMBOL_TICKS_BOOKDEPTH)によって返される値は、注文板の深さを表すものであり、分析対象の価格レベルを格納する配列の半分を示します。この配列のうち、半分は指値売り注文に、残りの半分は指値買い注文に割り当てられます。ドキュメントによれば、注文キューを持たない銘柄の場合、このプロパティの値は0になります。以下の図はその一例として、深さ10の注文板を表示しており、すべての利用可能な価格レベルが視覚化されています。

例:深さ10の注文板

厚みは必ずしも市場の注文板から取得する必要はなく、銘柄情報から直接取得できることに注意が必要ですSymbolInfoInteger関数を使用するだけで該当プロパティの値を取得でき、OnBookEventハンドラやMarketBookAddなどの関連関数に依存する必要はありません。もちろん、後述するように、OnBookEventハンドラが更新するMqlBookInfo配列の要素数をカウントすることでも同じ結果を得ることが可能です。

作者: Daniel Santos