
香港株式市場データ:取引時間帯と市場休場日を理解する
香港証券取引所(HKEX)の取引時間、2026年の休場日、半日取引のスケジュールを理解し、AllTickの市場データを活用して、より信頼性の高い香港株式監視アプリケーションを構築する方法を紹介します。
香港株式市場を監視するアプリケーションで、WebSocket 接続が正常に維持されているにもかかわらず、午後12時15分に株価更新が停止することがあります。この場合、アプリケーションは再接続すべきでしょうか。それとも、市場が通常の取引スケジュールに従っているだけなのでしょうか。
株式ダッシュボード、ウォッチリスト、自動市場監視システムを開発する金融テクノロジー開発者にとって、この違いは重要です。価格更新がない時間帯をすべて接続障害として扱うと、不要なアラートが発生したり、正常なデータストリームに対して繰り返し再接続したり、最新の市場データを誤って表示したりする可能性があります。
香港株式市場データを正しく理解するには、取引所の開場時間と閉場時間を把握するだけでは不十分です。開場・終値オークション、延長午前取引、市場休場日、短縮取引日についても考慮する必要があります。
香港証券取引所(HKEX)の取引カレンダーは、これらの状況を適切に処理するための基礎となります。
HKEXの取引時間帯を理解する
香港の証券市場は、指定された市場休場日を除き、原則として月曜日から金曜日まで取引が行われます。1つの連続した取引時間帯を採用する市場とは異なり、HKEXでは1日の取引時間が複数のセッションに分かれています。
以下の時刻はすべて香港時間(HKT、UTC+8)です。
| 取引セッション | HKEXの取引時間 | 市場での活動 |
|---|---|---|
| プレオープニング・セッション | 09:00–09:30 | 注文入力と始値の価格発見 |
| 午前取引セッション | 09:30–12:00 | 継続売買 |
| 延長午前取引セッション | 12:00–13:00 | 対象証券の延長取引 |
| 午後取引セッション | 13:00–16:00 | 継続売買 |
| クロージング・オークション・セッション | 16:00–16:10 | 終値の決定 |
プレオープニング・セッションは、通常の継続売買ではなく、オークション方式で行われます。このセッションには、注文入力、取消不可期間、ランダムな注文マッチング、そして午前9時30分の通常取引開始前のブロッキング期間が含まれます。
午前取引セッションは正午まで続きます。その後、延長午前取引セッションが午後1時まで行われます。ただし、このセッションはHKEXによって延長取引の対象として指定された証券のみが利用できます。香港市場に上場しているすべての株式がこの時間帯に取引できると想定してはいけません。
通常の午後取引は午後1時に再開し、午後4時に終了します。ただし、継続売買の終了が、市場におけるすべての取引プロセスの終了を意味するわけではありません。
クロージング・オークション・セッション(CAS)では、対象証券について終値を決定するためのプロセスが行われます。このセッションは午後4時に始まり、午後4時8分から午後4時10分までの間にランダムに決定される時刻に終了します。
CASには、基準価格の決定、注文入力、取消不可期間、ランダムな終了処理が含まれます。開発者は、価格更新の処理や市場ステータスの表示において、オークション取引と継続売買を区別する必要があります。
詳細については、HKEXの証券市場取引時間を参照してください。
2026年の香港市場休場日と短縮取引日
取引スケジュールだけでは、香港株式の価格更新が行われるべきかどうかを判断するには不十分です。アプリケーションは、特定の日付に取引所が営業しているかどうかも把握する必要があります。
HKEXは毎年、証券市場の休場日スケジュールを公表しています。2026年の公式カレンダーによると、以下の日付は市場休場日です。
| 月 | 2026年の香港市場休場日 |
|---|---|
| 1月 | 1月1日 |
| 2月 | 2月17日~19日 |
| 4月 | 4月3日、6日、7日 |
| 5月 | 5月1日、25日 |
| 6月 | 6月19日 |
| 7月 | 7月1日 |
| 10月 | 10月1日、19日 |
| 12月 | 12月25日 |
これらの日付には、旧正月、イースター関連の祝日、労働節、端午節、国慶節などに伴う主要な取引所休場日が含まれています。土曜日と日曜日も非取引日です。
さらに、特別な対応が必要な短縮取引日が3日あります。
- 2026年2月16日:旧正月前日
- 2026年12月24日:クリスマス・イブ
- 2026年12月31日:大晦日
これらは終日休場日ではなく、短縮取引日です。午前取引セッションは通常どおり行われますが、延長午前取引セッションと午後取引セッションは実施されません。CASの対象証券については、クロージング・オークション・セッションが正午に始まり、午後12時8分から午後12時10分までの間にランダムに決定される時刻に終了します。
この違いは、自動市場監視システムにとって重要です。単純に曜日だけを確認する仕組みでは、短縮取引日の午後を予期しない市場中断として誤って判定してしまいます。
本番環境のアプリケーションでは、通常の市場休場日と短縮取引日を別々に管理する必要があります。また、HKEXが翌年の年間スケジュールを公表した際には、カレンダーを更新する必要があります。
取引カレンダーの管理には、HKEXの2026年証券市場休場日公式スケジュールを参照できます。
株式監視アプリケーションで取引時間帯を処理する方法
Tencent Holdings(700.HK)を監視するダッシュボードを考えてみましょう。通常の取引時間中、アプリケーションは市場データ接続を通じて価格更新を受信します。一方、それ以外の時間帯に新しい取引データが届かないことは、必ずしも異常ではありません。
受信メッセージだけに依存するのではなく、アプリケーション側で市場セッションの状態を管理することが重要です。
例えば、次のような状態を設定できます。
PRE_OPEN:HKEXが寄り付きオークションを実施している状態。MORNING_CONTINUOUS:午前の継続売買が行われている状態。EXTENDED_MORNING:対象証券が延長午前取引の対象となっている状態。MIDDAY_BREAK:対象証券について、予定されている取引セッションがない状態。AFTERNOON_CONTINUOUS:午後の継続売買が行われている状態。CAS_WINDOW:予定されたクロージング・オークション・セッションの時間帯にある状態。MARKET_HOLIDAY:予定された休場日により取引所が閉鎖されている状態。
以下のPythonコードは、2026年の香港取引カレンダーに基づいて市場セッションを判定する例です。
from datetime import date, datetime, time
from zoneinfo import ZoneInfo
HK_TZ = ZoneInfo("Asia/Hong_Kong")
# 2026年のHKEX証券市場休場日
HKEX_HOLIDAYS_2026 = {
date(2026, 1, 1),
date(2026, 2, 17),
date(2026, 2, 18),
date(2026, 2, 19),
date(2026, 4, 3),
date(2026, 4, 6),
date(2026, 4, 7),
date(2026, 5, 1),
date(2026, 5, 25),
date(2026, 6, 19),
date(2026, 7, 1),
date(2026, 10, 1),
date(2026, 10, 19),
date(2026, 12, 25),
}
# 2026年のHKEX短縮取引日
HKEX_HALF_DAYS_2026 = {
date(2026, 2, 16),
date(2026, 12, 24),
date(2026, 12, 31),
}
def get_hkex_session(
now,
extended_morning_eligible=False,
cas_eligible=False
):
if now.tzinfo is None or now.utcoffset() is None:
raise ValueError("A timezone-aware datetime is required")
local_time = now.astimezone(HK_TZ)
trading_date = local_time.date()
current_time = local_time.time().replace(tzinfo=None)
# この例は2026年のみを対象としています。
# 他の年については、該当するHKEX年間カレンダーを読み込んでください。
if trading_date.year != 2026:
raise ValueError("Please load the correct annual HKEX calendar")
if trading_date.weekday() >= 5:
return "WEEKEND"
if trading_date in HKEX_HOLIDAYS_2026:
return "MARKET_HOLIDAY"
half_day = trading_date in HKEX_HALF_DAYS_2026
if time(9, 0) <= current_time < time(9, 30):
return "PRE_OPEN"
if time(9, 30) <= current_time < time(12, 0):
return "MORNING_CONTINUOUS"
if half_day:
if (
cas_eligible
and time(12, 0) <= current_time < time(12, 10)
):
return "CAS_WINDOW"
return "OUTSIDE_SESSION"
if time(12, 0) <= current_time < time(13, 0):
if extended_morning_eligible:
return "EXTENDED_MORNING"
return "MIDDAY_BREAK"
if time(13, 0) <= current_time < time(16, 0):
return "AFTERNOON_CONTINUOUS"
if (
cas_eligible
and time(16, 0) <= current_time < time(16, 10)
):
return "CAS_WINDOW"
return "OUTSIDE_SESSION"
now = datetime.now(HK_TZ)
session = get_hkex_session(
now,
extended_morning_eligible=False,
cas_eligible=True
)
print("Hong Kong Market Session:", session)このコードでは、香港現地時間へのタイムゾーン変換、セッション判定前の市場休場日チェック、通常取引日と短縮取引日の区別という3つの重要な処理を実装しています。
Tencentの例では、延長午前取引の資格を自動的に有効にするのではなく、False に設定しています。延長午前取引セッションを利用できるのは、HKEXによって延長取引対象証券として指定された銘柄のみです。この設定は、該当する取引所規則と証券リストに基づいて判断する必要があります。
CAS_WINDOW は、クロージング・オークション・セッションとして予定されている時間帯を示します。ただし、実際の終了時刻はランダムに決定されるため、この状態は時間帯全体を通じてオークションが継続していることを保証するものではありません。通常取引日では午後4時10分より前、短縮取引日では午後12時10分より前に終了する場合があります。正確な終了状態を判断する必要があるアプリケーションでは、適切な取引所ステータス情報を取得する必要があります。
このコードは2026年を対象とした参考実装であり、本番環境向けの完全な取引カレンダーではありません。本番システムでは、毎年更新される公式休場日を読み込み、証券ごとの取引条件を確認するとともに、臨時の取引所発表、悪天候による取引対応、個別銘柄の売買停止にも対応する必要があります。
AllTickの香港株式市場データを統合する
市場カレンダーを適切に処理できるようになったら、次はアプリケーションを動かす価格情報を取得する必要があります。
香港株式のウォッチリストや市場監視ダッシュボードを開発する場合、AllTick Stock APIを利用することで、香港株、米国株、A株を含む株式市場データにアクセスできます。これには、株式取引データ、気配値、過去のK線データが含まれます。
Tencent Holdingsを監視するダッシュボードを例に考えてみましょう。銘柄コードは 700.HK です。アプリケーションでは、チャートの初期表示や最後に利用可能だった市場情報の復元に、REST APIを使用して過去のK線データを取得できます。
例えば、以下のリクエストでは、直近2本の1分足K線データを取得します。
import json
import os
import requests
from urllib.parse import quote
API_KEY = os.environ["ALLTICK_API_KEY"]
query_data = {
"trace": "hk-market-example",
"data": {
"code": "700.HK",
"kline_type": 1,
"kline_timestamp_end": 0,
"query_kline_num": 2,
"adjust_type": 0
}
}
base_url = (
"https://quote.alltick.co/quote-stock-b-api/v1/kline/"
)
encoded_query = quote(
json.dumps(query_data, separators=(",", ":")),
safe=""
)
response = requests.get(
base_url + encoded_query,
headers={"X-API-Key": API_KEY},
timeout=10
)
response.raise_for_status()
result = response.json()
if result.get("ret") != 200:
raise RuntimeError(f"AllTick API error: {result}")
print(result["data"])ここで、kline_type: 1 は1分足K線を表し、query_kline_num: 2 は2件のデータを要求します。このリクエストでは、香港株式APIのベースURLと X-API-Key 認証ヘッダーを使用しています。
この例では、AllTickのREST APIを使用して過去のK線データを取得します。取得するのはK線データであり、継続的に配信されるリアルタイムのTickデータではありません。常に更新される価格情報を必要とするダッシュボードには、WebSocketサブスクリプションの方が適したデータ配信方式です。
また、市場データAPIと取引所カレンダーは別のものであるという点も重要です。AllTickが公開しているREST APIには、SSE、NYSE、NASDAQ向けの取引停止・再開インターフェースがありますが、これらをHKEXの市場休場日カレンダーとして使用することはできません。開発者は香港市場のスケジュールを別途管理し、API接続が成功していることだけを根拠に、市場が取引中であると判断しないようにする必要があります。
信頼性の高い市場監視ワークフローには、HKEXの取引カレンダー、銘柄ごとの取引ルール、そしてAllTickから受信した最新の市場データという3つの独立した情報が必要です。
市場が休場している場合、アプリケーションは最後に取得した価格とそのタイムスタンプを保持できます。予定された取引休止時間中は、不要な接続アラートを抑制できます。取引セッション中であるにもかかわらず価格更新が予期せず停止した場合は、WebSocket接続、サブスクリプションの状態、データ配信経路を調査できます。
香港株式アプリケーションを開発する際に、このように市場スケジュールとデータ配信を分けて管理することで、市場監視の予測可能性が高まり、通常の取引所の休止時間と技術的な障害を混同することを防げます。
AllTick Stock API接続エンドポイントから、香港株の気配値や過去の市場データの統合を始めることができます。データフィードと独立して管理するHKEXカレンダーを組み合わせることで、より信頼性の高い株式監視システムを構築できます。