導入チュートリアルPython 3.14 syntax review · requests example
過去ローソク足リクエストの設計:期間と取得件数制限
K-line パラメータと為替・貴金属の時刻ページングを解説し、株式カーソル非対応と1回500本の制限を明示します。
更新日時:
保守運営:AllTick 公式エンジニアリングチーム
対象読者:チャート描画、テクニカル指標計算、バックテストのために過去ローソク足を取得する開発者
要約 · 30秒開発サマリー
K-line はコード、周期、終了時刻、本数を指定します。現行仕様の時刻ページングは為替・貴金属・暗号資産が対象で、株式コードは非対応です。EURUSD 例で重複排除しながら遡り、株式履歴は公式仕様とプランで別途確認します。
01
AllTick ローソク足パラメータ一覧
| パラメータ | 意味 | 備考 |
|---|---|---|
code | 銘柄コード | この為替ページング例は EURUSD |
kline_type | ローソク足周期 | 分足、時間足、日足、週足など(値はドキュメント参照) |
kline_timestamp_end | 終了タイムスタンプ | 0 は最新から取得、株式時刻カーソルは非対応 |
query_kline_num | 取得本数 | 1回最大500本 |
adjust_type | 権利調整区分 | 0 は調整なし(その他の値はドキュメント参照) |
02
単発取得と過去方向へのページング実装
kline_fetch.pypython
import json, os, time, uuidimport requestsBASE_URL = "https://quote.alltick.co/quote-b-api"def fetch_kline(code: str, kline_type: int, end_ts: int = 0, num: int = 100) -> list[dict]: token = os.getenv("ALLTICK_API_TOKEN", "YOUR_API_TOKEN") query = { "trace": str(uuid.uuid4()), "data": { "code": code, "kline_type": kline_type, "kline_timestamp_end": end_ts, "query_kline_num": num, "adjust_type": 0, }, } resp = requests.get( f"{BASE_URL}/kline", params={"token": token, "query": json.dumps(query)}, timeout=10, ) body = resp.json() if resp.content else {} if body.get("ret") != 200: raise RuntimeError(f"ret={body.get('ret')} msg={body.get('msg')}") resp.raise_for_status() return body.get("data", {}).get("kline_list", [])def fetch_history(code: str, kline_type: int, pages: int = 3, num: int = 100) -> list[dict]: bars: dict[int, dict] = {} end_ts = 0 for _ in range(pages): batch = fetch_kline(code, kline_type, end_ts, num) if not batch: break for bar in batch: bars[int(bar["timestamp"])] = bar earliest = min(int(b["timestamp"]) for b in batch) if end_ts and earliest >= end_ts: break end_ts = earliest time.sleep(10) return [bars[k] for k in sorted(bars)]if __name__ == "__main__": klines = fetch_history("EURUSD", kline_type=8, pages=2, num=10) for bar in klines[-5:]: print(bar.get("timestamp"), bar.get("close_price"), bar.get("volume"))03
ヒストリカル取得範囲とプラン制限
1回500本の上限は取得可能な総期間ではありません。時刻ページングは資産により異なり、株式は現行仕様で非対応です。対象資産、周期、履歴権限、Token 制限を確認してからバックテストを設計してください。
- 空リストが返るか、最古タイムスタンプが進まなくなった時点で取得可能範囲の境界に到達しています。
- 長期バックテストを行う場合は、事前にプランページで取得可能範囲を確認し、自前の DB に蓄積する設計を検討してください。
- 日足以上の周期は1本あたりの期間が長いため、少ない本数でも長期のカレンダー期間をカバーできます。
仕様出典と検証記録 · 2026-10-13
以下の一次資料で関連するエンドポイント、フィールド、取引所規則を確認しました。
Python コードは Python 3.14.0 の ast.parse で構文解析を通過しました。依存関係、実行互換性、ネットワーク応答の検証は含みません。
今回の確認では実際の Token による AllTick 要求や本番エンドツーエンド試験は実行していません。再現時にプラン、ライブラリ版、取引時間、ret/trace、結果を記録してください。
導入前に再現する項目
- 現行 /kline の時刻カーソルは為替・貴金属・暗号資産が対象で、株式は非対応です。EURUSD は /quote-b-api を使います。
- 1 回 500 本以下、境界重複排除、空ページ・時刻停止で終了します。1 回の上限とプラン期間を区別し、Token 制限に合わせます。