スピードへの渇望:トレーディングターミナルのパフォーマンスの最適化





ブログの前半で、株式市場のトレーダーがトレーディングターミナルを使用する理由について説明 、独自のSmartXターミナルの開発歴史を紹介しました。



現代の株式市場、スピード非常に重要です -競合他社を先取りし、最良の価格で取引を行うために、トレーダーは独自の取引システムを開発し、取引ロボットのサーバーを交換および仲介データセンターのコロケーションに配置し、 直接アクセス技術を使用します



端末を使用して手動で操作を実行するユーザーにとって、その速度と信頼性も非常に重要です。 そのため、取引ソフトウェアの開発者は常にパフォーマンスを最適化しています。 今日は、 SmartXターミナルの速度を上げる方法についてお話します。



ターミナルを高速化する理由



SmartXターミナルの動作を高速化する必要性は2つの理由で熟しています。トレーダーは、最も強力な「オフィスコンピューター」や古いマシンではなく、ポータブルデバイス(ラップトップ、Windowsタブレット)で取引ソフトウェアを起動することがよくあります。



同時に、市場での活動は年々増加するだけであり、たとえば、 重要な経済ニュースのリリース日における強い動きやいわゆる「パニックセール」の状況では、サーバーから端末に送信される市場データの量は短い場合があります用語は10倍に増加します。 プログラムが脆弱なデバイスで実行されている場合、最も重要な瞬間にプログラムがフリーズし、ユーザーがお金を失う可能性があります。



さらに、通常の取引日でも大量の注文と取引を実行するアクティブなトレーダー(スキャルパー、裁定取引業者、高頻度トレーダーなど)のクラスがあります。 そのような商人は、直接取引にGUI端末を使用することはめったにありませんが、多くの場合、同様のソフトウェアを使用して位置を制御しますが、大量のデータが生成され、強力なコンピューターでも「消化できない」ことがあります。



したがって、トレーディング端末が「取引所交換」チェーンの「ボトルネック」になることはありません。したがって、それを改善し、パフォーマンスを最適化する作業を常に実行する必要があります。



端末の配置方法



端末最適化プロセスの説明に入る前に、このようなソフトウェアに含まれるコンポーネントを理解する必要があります。 ( 最適化プロセス自体に興味のある人を遅らせないために、これらの詳細をネタバレの下で削除しました )。



仕組み
SmartXトレーディングターミナルは、プロトコルとターミナル部分で構成されています。



1つ目は、証券取引システムのサーバーとの「通信」を担当します( マトリックス - 個別の資料がありました)-すべての着信データストリームを1つのメッセージストリームに「マージ」します。 したがって、プロトコル部分はマルチスレッドです。 C ++で書かれています。



指定された期間の端末部分は、結果のメッセージキューをポーリングし、ユーザーに情報を表示するために必要な計算を行います。 このソフトウェアはシングルスレッドであり、C#で記述されています。 (私たちのブログでは、C#とC ++が株式市場でそれほど人気が​​ある理由について、SmartX開発者との興味深いインタビューも投稿しました。)


基本的な最適化の概念



次に、パフォーマンスを最適化するために使用される手法を詳しく見てみましょう。



最初は遅延レンダリングです。 トレーディングターミナルの「アクティビティ」の大部分は、さまざまなテーブルとグラフの描画に当てられます。 すべてのグラフとテーブルの継続的な更新にはかなりのリソースが必要ですが、新しいデータを受信した場合にのみ再描画し、メインスレッドがメッセージキューの処理から解放された後にのみ描画を開始すると、パフォーマンスが大幅に向上します。



さらに、 ロードされたデータストリームのフィルタリングメカニズムが導入されました(ターミナルとターミナルのプロトコル部分の両方で)。 このようなフローには、引用、交換「眼鏡」のスナップショットなどが含まれます。



これは、たとえば、経済ニュースがリリースされた後、市場での活動が増加するなど、負荷が増加すると、その時点ですでに履歴になっているデータを「破棄」し、ユーザーに最新情報のみを表示するように行われます。



ピーク負荷時にこのようなテクノロジーが導入される前は、端末は遅れて「履歴」データを表示し始め、GUIはそのような瞬間にフリーズし、大きなデータ配列の処理を処理できませんでした。



最適化の次の段階は、メモリトラフィックの削減でした 。 ご存知のように、このメカニズムのボトルネックはGarbageCollectionであるため、端末開発者は、作成または更新されることが多いオブジェクトおよびコレクションに対して独自のメモリ管理を実装しました。 その助けを借りて、ターミナルの操作中にガベージコレクションの数を減らすことができ、そのため、パフォーマンスを向上させることができました



その結果、GUIはガベージコレクション中にフリーズしません。また、再起動せずに端末を無制限に動作させることができます-使用されるメモリ量は増加しません。



良くなった:テスト



トレーディングターミナルの動作がどの程度改善したかを確認するために、負荷データフロージェネレーターの起動で構成されるブローカートレーディングシステムのテスト回路でストレステストが開始されました。







テストの一部:ターミナルの機器で多数のメガネを開く(40以上)



Celeron G460 1.8GHz 2Gbコンピューターで次の端末バージョンを比較しました。





テストの結果、次の結果が得られました。









ご覧のとおり、端末のパフォーマンスが大幅に向上し、プロセッサの負荷が大幅に減少しました。 実行される最適化は、すべての端末ユーザーに関連していますが、低電力コンピューターで端末を実行しているトレーダーや、プログラムで多数の金融商品、メガネ、チャート、インジケーターを使用するトレーダーは特に高く評価されます。



今日は以上です。見てくれてありがとう! ブログを購読することを忘れないでください。



All Articles