tick-stock-panel
SHA-256セルフホスト・運用ゼロのA株クオンツワークベンチ:ストラテジー、バックテスト、モニタリングをワンストップで完結し、AIアシスタントとMCP接続に対応。
スマートダウンロード
Download 版をダウンロード
v0.3.9 · 252.9 MB
Dockerで動かすA株戦略のバックテストと相場監視ツール
主な機能
- 戦略エンジン:カスタム戦略とシグナル、ミリ秒単位でA株全市場をスキャン
- 統一バックテスト:T+1、手数料、スリッページに対応、バックテストと実取引は同一の実行パスを共有し、将来関数を徹底排除
- 異動モニタリング:オークション、ザラ場、乖離など全時間帯の異動をカバー、音声読み上げと飞书プッシュ通知に対応
- AI対話アシスタント:一言で全サイトのデータを照会、データ取得プロセスは一件ずつ照合可能
- オープン機能:65のAPIエンドポイントと12のMCPツール、Tokenは6段階の権限設定
できないこと
- •注意:本プロジェクトは学習・研究のみを目的としており、投資ソフトや相場閲覧ソフトではありません。作者は同花顺、通达信をベンチマークとしていないことを明確にしており、AI による銘柄推薦やストップ高予測も提供しません。本プロジェクトには相場データは付属していないため、法令に準拠したサードパーティのデータソースをご自身で接続する必要があります。対象は A 株市場のみです。バックテストの結果は投資助言を構成するものではなく、これに基づいて実際の取引を行った場合の損益はすべて自己責任となります。
使用例
- 個人のクオンツ愛好家がローカルで戦略研究、バックテスト、相場監視の一体化環境を構築
- オープン API または MCP を通じてパネルデータを AI クライアントに渡し、独自の投資研究ロボットを構築
- 取引時間中にウォッチリスト銘柄の異常変動をリアルタイムで監視し、いち早く飞书にプッシュ通知
詳細説明
TSP は、セルフホスト型・ゼロ運用の A 株クオンツワークベンチであり、戦略、バックテスト、ファクター研究、リアルタイム監視、振り返りを同一のデータ基準に統一します:ローカルには基本的なマーケットデータの Parquet のみを保存し、68 列の指標シグナルは Polars エンジンが都度計算するため、各工程の結果は一致します。バックテストは T+1、手数料とスリッページに対応し、プロセス分離により未来関数を完全に排除します。オープンな連携能力が特長です:65 の API エンドポイント、6 段階の Token 権限、12 の MCP ツールにより、AI クライアントはプラグアンドプレイで即座に利用できます。vnpy や Qlib など Python 環境の構築に手間がかかるフレームワークと比べ、TSP は Docker コンテナ 1 つで動作し、外部データベースも一切不要です。聚宽などのクラウドプラットフォームと比べ、データは完全にローカルに保持されます。
トラブルシューティング & FAQ (2)
トラブル対応TSP デスクトップ AI チャットアシスタントを使用する際に '405 Method Not Allowed' エラーを解決する方法
これは TSP v0.3.3 におけるパッケージングのバグです。app/custom/* バックエンド拡張モジュールは、実行時に importlib + pkgutil 経由で検出されるため、PyInstaller の静的解析では検出できません。packaging/tsp.spec ファイルに app/custom 向けの datas + hiddenimports 宣言が欠落していたため、assistant モジュールがインストーラーにバンドルされず、その API ルートが一切登録されないままとなり、リクエストは SPA の catch-all GET ルートにフォールスルーして 405 を返していました。
診断の手がかり:
- GET http://127.0.0.1:3018/api/custom/assistant/status が JSON ではなく HTML を返す(ルートが登録されていない)
- _internal/app/plugins/fuyao は存在するのに、インストールフォルダに _internal/app/custom ディレクトリが存在しない
- その他の AI 機能(設定ページの接続性チェック、引け後レビューなど)は正常に動作する
修正方法: TSP v0.3.5 以降にアップグレードしてください。このバージョンでは、spec ファイルに app/custom 向けの datas + hiddenimports 宣言が含まれています。アップグレード後、インストールディレクトリに _internal/app/custom/assistant が存在することを確認してください。ダウンロード: https://github.com/shy3130/tick-stock-panel/releases/tag/v0.3.5
トラブル対応カスタムYAMLデータプロバイダーでdepth5(5レベルのオーダーブック)が動作しないのはなぜですか?また、どうすれば修正できますか?
これはバグでした:カスタムデータソースパイプラインはdepth5を一切ルーティングしていませんでした。config_from_dict() 内のデータセットホワイトリストがパース時にdepth5を除外し、_sanitize_for_yaml() が保存時に再び除外し、プロバイダーには /depth5 用のフィールドコントラクトも get_depth_batch() メソッドもなく、validate() はdepth5を start/end パラメータを必要とする日付範囲データセットとして誤って扱っていました。これはコミット 384094b(PR #479)で修正されました。そのコミットを含むバージョンにアップグレードし、YAML で datasets.depth5 を宣言すれば、パネルのカスタム eltdx_source ルートがアダプターの /depth5 エンドポイントを呼び出します。修正内容(backend/app/data_providers/custom/):1) config.py — DatasetName Literal と config_from_dict() 内の datasets ホワイトリストに "depth5" を追加;2) loader.py — _sanitize_for_yaml() 内の許可リストに "depth5" を追加;3) provider.py — _REQUIRED に "depth5": {"symbol", "asks", "bids"} を追加し、realtime と同様に symbols/start/end の重複パラメータチェックから depth5 を除外し、GenericHTTPProvider.get_depth_batch() を追加。これは cfg.batch ごとにシンボルを分割して rpm スロットリングを適用し、リトライ付きで /depth5 をリクエストし、失敗したバッチを警告付きでスキップし、asks/bids の price/volume を数値に正規化し、ask_volumes/bid_volumes を導出します;4) test_dataset() に、日付なしでテストシンボルのみを送信する depth5 分岐を追加。
タグ
はじめ方
ソフトウェアをインストール
ダウンロードしたインストーラをダブルクリックし、指示に従ってください
Docker をインストールし、GitHub リポジトリから公式イメージまたは docker-compose 設定を取得する
docker compose up -d を実行してシングルコンテナサービスを起動する
ブラウザでパネルアドレスを開き、パネルパスワードを設定してからシステムにログインする
- Docker をインストールし、GitHub リポジトリから公式イメージまたは docker-compose 設定を取得する
- docker compose up -d を実行してシングルコンテナサービスを起動する
- ブラウザでパネルアドレスを開き、パネルパスワードを設定してからシステムにログインする
SHA-256 チェックサム確認済み
GitHub 公式 Release ページから抽出されたチェックサム
SHA256 チェックサム
1a6ae6bcdcd3bec010b3f11998e5894a05138f9df630e80b80b076014c0090d0このチェックサムは GitHub Release ページから抽出されたものです。ダウンロード後にファイルの整合性を確認してください。
本プラットフォーム上のすべての SHA-256 チェックサムは、プロジェクトの公式 GitHub Release ページから抽出されたもので、一切の改変はありません。GitHub Releases ページで独自に検証できます。
オープンソースの透明性
GitHub ソースを見るアンインストール情報
まず docker compose down を実行してサービスを停止し、次に docker rmi で対応するイメージを削除し、最後にローカルデータディレクトリ(Parquet/DuckDB のデータと設定を含む)を削除すれば完全にアンインストールでき、システムに残留物はありません。
追加の依存関係なし
ダウンロード後すぐに使用可能。追加のランタイムは不要です。
問題が発生?以下のFAQを確認
2 FAQs