4つのステップで障害範囲を特定
依存レイヤーごとに順次検証し、無効な認証情報による無駄な再試行とレート制限を防止します。
ステータスコードと業務コードの確認
認証失敗とレート制限の判別
HTTP ステータスコードとレスポンス ret を確認。401 は Token エラー、429/605 はレート制限です。401 エラーで無制限な再試行を行わないでください。
認証情報の整合性確認
Token と環境変数の確認
コードで読み込んだ Token が空でないか、前後に不要な空白や改行がないか確認し、本番環境の環境変数が正しくロードされているか検証します。
API パスと市場タイプの整合
接続先エンドポイントと銘柄形式の検証
株式データは quote-stock-b-api(700.HK, AAPL.US など)、為替・貴金属は quote-b-api(EURUSD など)を使用します。不一致はエラーとなります。
取引時間帯とハートビート確認
休場日・昼休みおよびタイムアウト切断の除外
各取引所の休場中や昼休みはデータが配信されません。WebSocket 接続では定期的なハートビート(cmd_id: 22000)を送信し、再接続後は再購読が必要です。
トラブルシューティングガイド
各技術要素における詳細な原因分析、本番トラブルシューティング手順、実行可能なコードを網羅。
相場 API の認証失敗(401)とレート制限(429)のトラブルシューティング
HTTP ステータスコード、レスポンス ret、Token 設定、リクエスト頻度の順に 401 認証エラーと 429 レート制限を切り分ける診断ガイド。
重点チェック:
- HTTP ステータス → 業務コード → Token → レート制限の 4 段階診断
- ランダムジッター付き Python 指数バックオフ再試行の実装
- 複数銘柄の一括問い合わせ(symbol_list)によるリクエスト数 80% 削減
WebSocket 接続成功後にデータが届かない場合の対処法
WebSocket 接続は確立されたのに相場データが届かない場合、購読メッセージ、銘柄表記、エンドポイント、取引時間帯、ハートビートの5項目を順に点検します。
重点チェック:
- 購読メッセージ(cmd_id: 22004)の形式とサーバー受信応答の確認
- 取引所の取引時間、サマータイム、昼休み休場状態の確認
- 24時間常時取引の EURUSD を用いた最小限 5 行の疎通検証
米国株相場のタイムスタンプ・夏時間・取引時間帯の処理
米国株相場の時刻を正しく扱う方法:UTC での保存、America/New_York タイムゾーンによる夏時間(DST)自動変換、日足日付の帰属処理。
重点チェック:
- 13 桁ミリ秒と 10 桁秒の自動判別と単位正規化
- 米国サマータイムと標準時の取引時間比較表
- 深夜をまたぐ取引による日足ローソク足の誤分割を防止
一般的なエラーコードと現象リファレンス
エラーや異常が発生した際、以下の表から原因と対処法を特定できます。
| ステータス / エラーコード | 発生現象 | 主な原因 | 確認と対処方法 | 関連ガイド |
|---|---|---|---|---|
ret: 401 / HTTP 401 | token invalid (認証失敗) | Token 未指定、フォーマット不正、有効期限切れ、前後の余計な空白改行 | Token 長と文字を確認し、管理画面で Token 状態と市場権限を確認 | 認証トラブルガイド |
ret: 429 / 605 | Too Many Requests (レート制限超過) | 秒間または分間のリクエスト上限超過、または複数プロセスでの同一 Token 共有 | 指数バックオフ再試行を実装し、複数銘柄は symbol_list 一括リクエストに統合 | レート制限ガイド |
ret: 600 | code invalid (銘柄コード無効) | 銘柄コードの誤記、サフィックス欠落、または不正な API パスの使用 | 株式は quote-stock-b-api、為替は quote-b-api を使用しているか確認 | コード形式の確認 |
ret: 603 / 604 | level not enough / unauthorized | 1回のリクエスト銘柄数やローソク足本数がプラン上限を超過、または未開放の市場 | プランの一括取得上限を確認し、管理画面で対象市場の利用権限を確認 | クォータ説明 |
ret: 606 | Connection will be closed | WebSocket 接続数が上限超過、または同一接続内の送信間隔が 1〜3 秒未満 | 同時接続数をプラン内に収め、リクエスト送信間隔を最低 1 秒空ける | WebSocket 制約 |
ret: 400 / 402 | param invalid / query invalid | trace ID の欠落、または GET リクエストの query パラメータの URL エンコード漏れ | query が正規 JSON 文字列かつ URL エンコード済みか確認し、trace と data を保持 | パラメータ仕様 |
WS 接続成功もプッシュなし | No Push Data (配信なし) | 購読メッセージ(cmd_id: 22004)未送信、休場時間帯、または購読応答未受信 | 購読メッセージ形式と seq_id 応答を確認。平日常時動く EURUSD で検証推奨 | WS トラブルガイド |
時刻が 1970 年と表示される | Timestamp Parsing Error | AllTick の tick_time は 13 桁ミリ秒ですが、10 桁秒として解釈された | タイムスタンプ長を判定し、10^12 超なら 1000 で割って秒に変換。UTC で保存 | 時刻処理ガイド |
わずか 5 行のコードで接続性を検証
ローカルまたはサーバー上で実行し、Token の有効性とネットワーク遅延を直接検証します。
# AllTick Connectivity Self-Check
import os
import requests
API_TOKEN = os.getenv("ALLTICK_API_TOKEN", "YOUR_TOKEN_HERE")
BASE_URL = "https://quote.alltick.co/quote-stock-b-api/trade-tick"
params = {
"token": API_TOKEN,
"query": '{"trace":"diagnose-1","data":{"symbol_list":[{"code":"700.HK"}]}}'
}
response = requests.get(BASE_URL, params=params, timeout=5)
print(f"HTTP Status: {response.status_code}")
print(f"Response Body: {response.text}"){
"ret": 200,
"msg": "ok",
"trace": "diagnose-1",
"data": {
"tick_list": [
{
"code": "700.HK",
"price": "398.20",
"tick_time": "1712648400000"
}
]
}
}自己診断で解決しない場合
上記の手順で解決しない場合は、以下のマスキング済みログを添えて AllTick サポートチームまでご連絡ください。エンジニアが迅速に対応いたします:
- 完全なエンドポイント URL(Token はマスキング)
- サーバーから返却された完全な HTTP ステータスと JSON レスポンス
- エラーが発生した正確な UTC 時刻と継続時間
- 使用しているプログラミング言語、ライブラリ、およびバージョン
本番環境で安定したリアルタイム相場データを導入しませんか?
AllTick は米国株、香港株、為替、コモディティのミリ秒配信を提供し、99.95% の可用性 SLA と専門サポートを保証します。