模擬取引プラットフォーム: 構成と操作

この章では、「既存のバックテスト戦略」から「シミュレートされたライブ取引口座の最初の安定した起動」まで、どの項目を設定するか、どのように確認するか、起動後に何を確認するかについて説明します。

ユーザーの皆様、バックテストできる Operator (トレーダー コンテナ) を既にお持ちの場合は、この章がライブ テストへの最短の道です。最初に必要な構成について説明し、次に「戦略スナップショット」や「起動アクセス制御」などのオプションの高度な機能について説明します。

0. 适用场景

  • Operator が動作しており、バックテストからライブ シミュレーションに移行する準備ができています。

  • まず最短パスをテストしてから、リスク制御、アクセス制御、運用の詳細を徐々に追加したいと考えています。

1. 核心概念(本章术语)

Live を開始する前に、3 つのコンポーネントの関係を確認してください。 Qteasy では、Operator は「シグナルの計算」を担当し、ライブ アカウント は「アカウントとポジションの維持」を担当し、ローカル データ ソース は「価格と履歴データの提供」を担当します。これらのいずれかが欠けていると、Trader は安定して実行できません。次の表は、Live サブシステム内の各コンポーネントの位置と準備する必要があるものを示しています。

各列の意味: 役割 はコンポーネント名です。 関数はライブ パイプラインでの責任を負います。 準備する必要があるものは、起動前チェックです。

使用方法: ボックスを 1 つずつチェックしてください。列が不十分な場合は、最初にデータまたはアカウント情報を追加してから、qt.run(op) を実行します。

役割

効果

何を準備する必要がありますか?

Operator

ホールディング戦略とシグナルロジック

バックテスト中と同じ op オブジェクト

ライブアカウント

現金、保有物、注文を記録します。

live_trade_account_id または live_trade_account_name

ローカル データ ソース

過去のリアルタイムの相場を提供します

テーブル データ カバレッジ戦略の頻度 (例: 分ベースの戦略には分ベースのテーブルが必要)

LiveTradeConfig (ライブ構成スナップショット): Trader を開始する前に、qteasy は、qt.configure(...) 全体に散在するライブ関連アイテムを検証し、不変のスナップショット (離陸前に署名されたチェックリストなど) に凍結し、実行時の偶発的な構成変更を防ぎます。シェルで liveconfig を使用して概要を表示できます。

2. 最小配置集

以下は、一般的な 必須 構成項目です (設定に失敗したり、設定が間違っていると、起動時にエラーが発生することがよくあります)。これらのキーは、qt.configure(...) を介してグローバル設定に書き込まれ、起動時に LiveTradeConfig スナップショットに組み込まれます。彼らは、「ライブかどうか、どの資産が取引されるか、どの口座が使用されるか、価格はどこから来るか、誰が注文をマッチングするか」を決定します。

各列の意味: 構成キーQT_CONFIG の名前です。 意味 は、このキーによって制御される動作です。 設定されていない場合に何が起こるか は一般的な結果です (現在のエラーがこのキーに関連しているかどうかを判断するのに役立ちます)。

使用方法: 初めてのライブ セッションでは、すべての設定を明示的に設定してください。起動に失敗した場合は、「何も設定しなかった場合の動作」列を確認してトラブルシューティングを行ってください。例については、§5 テンプレート A/B を参照してください。

設定キー

意味

設定しなかったらどうなるでしょうか?

mode=0

ライブ/デモ取引を開始する

バックテストまたは他のモードをまだ使用している

The set of names of the historical data to be fetched, if htypes is empty, the system will try to create all possible htypes by basing on the name of the historical data and the freq/asset_type parameter. the input can be str or list: - str: 'open, high, low, close' - list: ['open', 'high', 'low', 'close'] - list: ['open', 'high', 'low', 'close'] - list: ['open', 'high', 'low', 'close'] 'high', 'low', 'close']

E 株や F 株 (ETF) などの資産タイプ。

取引ルールとデータテーブルが一致しない可能性があります。

live_trade_account_id または live_trade_account_name

どのデモ口座を使用すればよいですか?

元帳をバインドできません

live_trade_broker_type

証券会社の種類、初心者はsimulatorを利用

取引チャネルがありません

live_price_acquire_channel

eastmoney などのリアルタイム価格チャネル

ライブ価格を取得できません

live_price_acquire_freq

15MIN などの値上げ頻度

戦略のペースが調整されていない場合、データが欠落する可能性があります。

次のキーは 起動のための厳密な要件ではありませんが、最小トランザクション単位、ディスクへのログ書き込み、およびディスク使用量に影響を与えるため、確認することを強くお勧めします。これらは上記の表とともに qt.configure スコープに属し、同じスクリプトに書き込むことができます。

使用方法: 取引数量が「完全なロット」ではない場合、またはログ ファイルが見つからない場合は、戻ってこのテーブルの対応する行を確認してください。

設定キー

意味

設定しなかったらどうなるでしょうか?

trade_batch_size / sell_batch_size

最小販売単位

デフォルト値を使用する

cash_decimal_places / amount_decimal_places

現金/数量の小数点以下の桁数

デフォルト値を使用する

sys_log_file_path / trade_log_file_path

システム/トランザクション ログ ディレクトリ

パッケージ内のデフォルトのパスを使用する

trade_log_keep_days

ログ保存日数(リスクログを含む)

デフォルトでは 3 日ごとの自動クリーンアップ

3. 查看配置快照

Python (スクリプトでの自己チェック):

from qteasy.live_config import build_live_trade_config
import qteasy as qt

cfg = build_live_trade_config(qt.QT_CONFIG)
print(cfg.to_summary_dict())

CLI (Trader シェル): コマンド liveconfig (エイリアス live-config)

  • デフォルト: 安定したフィールドのサブセット

  • --detail を追加: アクセス制御、ポリシースナップショットなどを有効にするためのキーがさらに含まれます。

注: シェル内の liveconfig は、現在の Trader に基づく概要であり、起動時のオブジェクトのメモリ参照ではありません。ただし、「現在有効な構成」を確認するには十分です。

4. 配置键分组(主要 live 键)

Live に関連する設定キーが多数あります。参照しやすいように、関数 ごとにグループ化しました (完全な API リストではありません。完全なフィールドは LiveTradeConfig に基づいています)。 qteasy では、これらのキーは起動前に検証され、凍結されます。変更を有効にするには、qt.configure を変更した後、Live プロセスを再起動する必要があります。

列の意味: グループ化は、ライブ サブシステム内の責任ドメインを表します。 代表キー には、このグループ内で最も頻繁に変更されるキーがリストされます (同じグループ内にリストされていない他のキーがある場合があります)。 説明 では、動作中のこのグループの役割について説明します。

使用方法: 現在のタスクに応じてグループを選択します。たとえば、ログの問題のトラブルシューティングを行うには、「ログ」行を見て、次の場所に移動します。 :doc:5-artifacts-and-troubleshooting;分ごとの戦略を開くときは、まず「マーケットデータとリフィル」が戦略の頻度と一致しているかどうかを確認してください。

: サブデイリー フリークエンシー戦略では、多くの場合、「マーケット データとリフィル」グループの live_price_acquire_freq を変更し、必要に応じて「戦略スナップショット (5-A)」グループの live_trade_split_strategy_prepare を有効にします。

グループ化

代表キー

説明

アカウントとUI

live_trade_account_id, live_trade_account_name, live_trade_ui_type

アカウントと CLI/TUI の選択

市況と補充

live_price_acquire_channel, live_price_acquire_freq, live_trade_data_refill_channel, live_trade_*_refill_tables

リアルタイムの価格と時間指定のデータ更新

取引ルール

trade_batch_size, sell_batch_size, stock_delivery_period, cash_delivery_period, pt_buy_threshold, pt_sell_threshold

バックテストのセマンティクスに合わせる

Broker

live_trade_broker_type, live_trade_broker_params

デフォルトは simulator です。拡張機能については、「doc:4-broker-adapter-and-integration」を参照してください。

戦略スナップショット (5-A)

live_trade_split_strategy_prepare, live_trade_prepare_lead_seconds, live_trade_strategy_snapshot_max_age_seconds

データは戦略が実行される前にプリフェッチされます。詳細については、:doc:6-trader-snapshot-gate を参照してください。

アクセス制御を有効にする (5-B)

live_trade_startup_gate_mode (off / warn / block)

市場投入前のセキュリティチェック。 CLI ⟦コード0⟧

ログ

sys_log_file_path, trade_log_file_path, trade_log_keep_days

*.risk.log ローテーションが含まれます。参照:ドキュメント:5-artifacts-and-troubleshooting

完全なフィールドは LiveTradeConfig に基づいています。各キーの有効な値は、構成検証ロジックで定義されます。

5. 推荐配置模板

テンプレート A: 株式 (E+ 模擬証券)

次のコードは、 qt.run(op) に実行され、株式ルール、Eastmoney 15 分価格、およびシミュレートされたカウンター取引を使用するように qteasy に指示します。

import qteasy as qt

qt.configure(
    mode=0,
    asset_type='E',
    live_trade_broker_type='simulator',
    live_price_acquire_channel='eastmoney',
    live_price_acquire_freq='15MIN',
    trade_log_keep_days=3,
)

テンプレート B: 上場投資信託 / ETF (FD + 模擬証券)

asset_type='FD' が ETF などのサンプル パスに適用される点を除き、テンプレート A と同じです。

import qteasy as qt

qt.configure(
    mode=0,
    asset_type='FD',
    live_trade_broker_type='simulator',
    live_price_acquire_channel='eastmoney',
    live_price_acquire_freq='15MIN',
    trade_log_keep_days=3,
)

テンプレート C: ポリシー スナップショット + アクセス コントロールのアクティブ化 (スモーク/アドバンスト)

与 :doc:7-manual-smoke-live-grid-roadmap 一致;建议在熟悉模板 A/B 后再开。

qt.configure(
    live_trade_split_strategy_prepare=True,
    live_trade_prepare_lead_seconds=60,
    live_trade_strategy_snapshot_max_age_seconds=300.0,
    live_trade_startup_gate_mode='warn',  # 先 warn 观察,稳定后可试 block
)

6. 启动流程(分步说明)

  1. 設定を完了します: §2 に従って qt.configure(...) を完了し、アカウント ID/名前を確認します。

  2. (オプション) スナップショットの確認: §3 の Python スニペットを実行するか、起動後にシェルで liveconfig --detail を実行します。

  3. 起動: qt.run(op);一般的なコマンドラインの例では、--ui cli を使用して **Trader シェル ** を入力します。

  4. 観察: ステータス、オーダー、ログが期待どおりに書き込まれているかどうかを確認します (§7)。

起動前にいくつかの主要な構成項目をすばやく印刷します。

import qteasy as qt

for key in ('mode', 'asset_type', 'live_trade_broker_type',
            'live_price_acquire_channel', 'live_trade_startup_gate_mode'):
    print(key, qt.get_config(key)[key])

7. 启动后建议先看什么(CLI)

Trader シェルに入ると、次のコマンドは、設定が有効かどうか、ログの場所、証券会社がリクエストを処理できるかどうか、アクセス制御が成功したかどうかを確認するのに役立ちます。これらは、:doc:8-cli-trader-capability-matrix の操作サブセットに対応します。すべてのシェル コマンドではありません

各列の意味: コマンド: プロンプトで入力された名前 (エイリアスについてはマトリックスの章を参照)。 一般的な使用法: このコマンドで最も頻繁に解決される質問。

使用方法: 開始したら、テーブルを上から下にすばやくスキャンします。ステップが異常な場合は、コマンドの出力を :doc:5-artifacts-and-troubleshooting にリダイレクトします。

例: ログ パスが不明 → artifacts を入力 → 返された sys_log パスを開いて起動トレースを表示します。

コマンド

典型的な使用例

liveconfig

現在のライブ構成の概要

artifacts

4 結合生成物のパス (ログはどこにありますか)

gate

アクセス制御システムを手動で 1 回実行します (デバッグ用)。

broker status

模擬証券会社は「つながっている」のか?

reconcile

調整スナップショット JSON

run --task diagnose_pending_orders

診断中 (DEBUG モードが必要)

コマンドの完全なセットについては、:doc:8-cli-trader-capability-matrix を参照してください。

7.1 ダッシュボードと対話モード

Trader シェルはデフォルトで ダッシュボード モードで起動します。単一行のステータス領域がスクロールして、次のタスクまでのカウントダウン、監視リストのリアルタイム価格、およびシステム メッセージが表示され、コマンドを入力せずに動作リズムを観察できます。手動で注文したり、構成を確認したり、メンテナンス コマンドを実行したりするには、Ctrl+C を押してモード メニューを開くか、対話型 (コマンド) モードで dashboard と入力してダッシュボードに戻ります。

モード

行動

dashboard

ステータス行と監視価格は自動的に更新されます。 Trader メインループはバックグラウンドで実行され続けます。

対話型 (コマンド)

従来の Cmd プロンプトでは、buyconfigartifacts などのコマンドを入力できます。

Ctrl+C モード選択メニュー (ダッシュボード モードとコマンド モードの両方で利用可能)

  • 5 秒以内に 1 → を押してコマンド モードに入ります。 2 → ダッシュボードに戻ります。 3 → 終了して Trader を停止します。

  • Enter キーを押す必要はありません。数字キーはすぐに有効になります。

  • 5秒以内に入力がない場合 → 中断前のモードに自動的に戻ります。

  • メニューの待ち時間中にもう一度 Ctrl+C を押す → すぐに終了 (3 を選択するのと同等)

メイン ループで予期しない例外が発生した場合、シェルは、1 を押してダッシュボードに戻るか、3 を押して終了するように求めるプロンプトを表示します。 5 秒間入力がない場合、デフォルトでダッシュボードに戻り、Trader は実行を続けます。

8. 运行前检查清单

  • アカウント ID/名前が使用可能であり、戦略資産プールと一致します。

  • asset_typeasset_pool と一致している必要があります (株式とファンドのルールを混合しないでください)。

  • live_trade_broker_typesimulator (または既に実装されている型) である必要があります。

  • ライブ価格の頻度 ** 戦略の実行頻度以上** (分ベースの戦略には十分な頻度のライブ価格が必要です)。

  • ログのパスは有効で、ディスクは書き込み可能です。

  • trade_log_keep_days は、保持期待 (リスク ログを含む) を満たします。

9. 常见启动失败与处理

起動中にエラーが発生した場合、その症状は多くの場合、構成、アカウント、データ、パス、頻度、起動アクセス制御などのいくつかのカテゴリに分類されます。以下の表には、やみくもにログを検索することを避けるために、観察された症状 によってインデックスが付けられています。

各列の説明: 現象: 起動時または最初の画面での動作。 考えられる原因: 一般的な根本原因 (すべてではありません)。 提案: 次のステップ。

使用方法: まず、「現象」列を一致させます。問題が解決しない場合は、§7 コマンドを使用してパスを liveconfig および artifacts にエクスポートし、:doc:5-artifacts-and-troubleshooting のデシジョン ツリーを参照してください。

現象

考えられる理由

提案

構成の検証に失敗しました。

特定のライブキーが無効であるか、相互に排他的です。

エラーメッセージを修正した後、再起動してください。

アカウントが利用できません

ID/名前が間違っているか、初期化されていません

アカウント作成パラメータを確認する

データが利用できない

チャンネル/周波数/ローカルテーブルがありません

リフィルやstock_1minテーブルなどを確認してください。

パスエラー

ログ ディレクトリは書き込み可能ではありません

sys_log_file_path などを確認してください。

周波数調整不能

ステップ頻度が高いライブの費用対効果戦略はまれです

live_price_acquire_freq を増やすか、ポリシーの頻度を減らします。

gate block

アクセス制御 block が有効化されていますが、チェックは失敗します。

gate 出力とトレースの failures セクションを参照してください。

10. 相关跳转

  • リスク管理と命令: 3 つのリスクと命令のライフサイクル

  • 製品とトラブルシューティング: :doc:5-artifacts-and-troubleshooting

  • ブローカーの適応: :doc:4-broker-adapter-and-integration

  • スナップショット/アクセス制御: :doc:6-trader-snapshot-gate

  • スモークリスト: :doc:7-manual-smoke-live-grid-roadmap

  • CLI リファレンス: :doc:8-cli-trader-capability-matrix

  • 完全なチュートリアル: tutorials/8-live-trade-risk-and-broker-walkthrough.md

11. 最小验收标准

  • EまたはFDパスで安定起動可能

  • liveconfig / artifacts の出力は期待どおりです。

  • 注文の送信、リスク管理の拒否、カウンター処理のうち少なくとも 1 つが観察される可能性があります。

  • リスク管理が注文を拒否した場合: 記録は risk_log で見つかります。ブローカーが注文を拒否した場合: 注文は rejected としてマークされ、ブローカー番号は空になります。

  • 対応するランタイム アーティファクトはログ ディレクトリにあります。