こんにちは、HolySheep AI技術ブログへようこそ。私は金融データパイプラインの構築に5年以上携わってきたエンジニアです。この記事では、Deribit(デリバティブ取引所)から提供される期权(オプション)历史データの品質验收(Acceptance Testing)を、专业的な視点からゼロ부터丁寧に解説します。

「API?コード?そんなもの触ったことがない…」という方も然大丈夫。この記事Step by Stepで進めますので、最终的にあなた自身のPythonスクリプトで德ribitデーを 검증できるようになります。

德ribit期权データとは?为什么要验证?

Deribitは主にオプション取引が盛んな暗号資産、先物交易所です。德ribitの期权データには、以下の重要な情報が含まれています:

これらのデータは、自動取引システムやリスク管理モデルに直接使用されます。データに欠損やエラーがあれば、大きな損失を招く可能性があります。因此、データの「品質验收」は極めて重要な工程です。

向いている人・向いていない人

这种人向いていない人
暗号資産トレーダーで独自の分析を始めたい方すでに完成されたSaaSツールを探している方
金融データパイプラインを構築したいエンジニアコードを1行も書きたくない方
クオンツ>Required>バックテスト環境を整えたい方低延迟성이絶対に不要な方
德ribitデータを他社より安く得たい方月額¥50,000以上の予算を気にしない方

Tardis vs HolySheep:データ取得ツールの比較

德ribitデータ取得主要有两种手段があります。以下の比較表を確認してください:

項目TardisHolySheep AI
月額基本料金約$500〜従量制(使用量のみ)
コスト効率固定費¥1=$1(公式比85%節約)
支払い方法クレジットカードのみWeChat Pay / Alipay / 信用卡
レイテンシ100-200ms<50ms
初学者向けドキュメント英語のみ日本語対応
免费クレジットなし登録で無料付与

价格とROI

HolySheep AIの料金体系は本当に注目に値します。以下の实际コスト比較をご覧ください:

Provider汇率1億円分のAPI调用コスト
公式OpenAI¥7.3/$1約¥730万
HolySheep AI¥1/$1約¥100万
節約額-約¥630万(86%OFF)

德ribitの期权データ解析には、GPT-4.1やClaude SonnetなどのLLMを使用することが多いたばこそ、この汇率恩恵は绝大です。DeepSeek V3.2を使用すれば、$0.42/MTokという破格の安さで高精度な分析が可能です。

HolySheepを選ぶ理由

私がHolySheep AIを实际のプロジェクトで采用了した理由は以下の5点です:

  1. 85%コスト削減:¥1=$1の汇率は他社の追従を許しません
  2. 日本語サポート:ドキュメントもコミュニティも日语対応
  3. <50msレイテンシ:リアルタイム取引にも耐える速度
  4. WeChat Pay/Alipay対応:中国人民元のまま 결제 可能
  5. 登録で無料クレジット今すぐ登録して実際に试せる

Step 1:事前准备——Python環境の整え方

まずはあなたのパソコンにPythonをインストールしましょう。以下のステップで进めていきます。

Step 1-1:Pythonのインストール

お使いのOSに合わせてPythonをインストールしてください:

ヒント:インストール後、Terminal(コマンドプロンプト)で python --version と入力して「Python 3.8以上」と表示されれば成功です。

Step 1-2:必要なライブラリをインストール

Terminalまたはコマンドプロンプトで以下のコマンドを実行します:

pip install requests pandas numpy matplotlib python-dotenv

ヒント:「pipが見つからない」というエラーが出る場合は、python -m pip install requests pandas numpy matplotlib python-dotenv を試してください。

Step 2:HolySheep AIのAPIキーを取得する

HolySheep AI公式サイトからアカウントを作成し、APIキーを取得します。ダッシュボードの「API Keys」セクションで「Create New Key」をクリックしてください。

ヒント:APIキーは hs-xxxxxxxxxxxx のような形式で、第三者に見られないように大切に保管してください。

Step 3:HolySheep APIを呼び出す基本コード

以下のコードは、HolySheep AIのAPIを呼び出して德ribit期权データを取得する基本的な例です:

import requests
import pandas as pd
from datetime import datetime, timedelta
import os

HolySheep API設定

BASE_URL = "https://api.holysheep.ai/v1" API_KEY = "YOUR_HOLYSHEEP_API_KEY" # 取得したAPIキーに置き換え def get_deribit_options_data(symbol: str, start_time: str, end_time: str): """ Deribit期权历史データを取得する Parameters: - symbol: 通貨ペア(例:BTC-PERP、ETH-PERP) - start_time: 開始時刻(ISO 8601形式) - end_time: 終了時刻(ISO 8601形式) Returns: - DataFrame: 期权历史データ """ headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } payload = { "exchange": "deribit", "instrument_type": "option", "symbol": symbol, "start_time": start_time, "end_time": end_time, "include_greeks": True, # Greeksフィールドを含める "include_funding": True } response = requests.post( f"{BASE_URL}/market-data/historical", headers=headers, json=payload, timeout=30 ) if response.status_code == 200: data = response.json() return pd.DataFrame(data['data']) else: print(f"エラー発生: {response.status_code}") print(response.text) return None

使用例

if __name__ == "__main__": # 过去24时间分の德ribit BTC期权データを取得 end_time = datetime.now() start_time = end_time - timedelta(hours=24) df = get_deribit_options_data( symbol="BTC", start_time=start_time.isoformat(), end_time=end_time.isoformat() ) if df is not None: print(f"取得成功:{len(df)}件のデータを取得") print(df.head())

ヒント:「Connection Error」や「Timeout」が出る場合は、ネットワーク接続を確認してください。HolySheepのステータスは公式ステータスページで確認できます。

Step 4:Greeksフィールドの验证方法

Greeks(Delta、Gamma、Vega、Theta)はオプション価格の敏感度を表す重要な指標です。以下のコードでデータの整合性をチェックします:

import numpy as np
import matplotlib.pyplot as plt

def validate_greeks_fields(df: pd.DataFrame) -> dict:
    """
    Greeksフィールドの妥当性を検証する
    
    チェック項目:
    1. Deltaの範囲(-1から1の間)
    2. Gammaが非負
    3. Vegaが非負
    4. Thetaが非正(通常是)
    5. 欠損値の確認
    """
    validation_results = {
        "total_records": len(df),
        "delta_issues": 0,
        "gamma_issues": 0,
        "vega_issues": 0,
        "theta_issues": 0,
        "missing_values": {}
    }
    
    # 欠損値チェック
    greeks_columns = ['delta', 'gamma', 'vega', 'theta']
    for col in greeks_columns:
        if col in df.columns:
            missing_count = df[col].isna().sum()
            validation_results["missing_values"][col] = missing_count
    
    # Delta範囲チェック(-1 <= delta <= 1)
    if 'delta' in df.columns:
        invalid_delta = df[(df['delta'] < -1) | (df['delta'] > 1)]
        validation_results["delta_issues"] = len(invalid_delta)
        
        # 異常値の詳細確認
        if len(invalid_delta) > 0:
            print(f"⚠️ Delta異常値 {len(invalid_delta)}件を検出:")
            print(invalid_delta[['timestamp', 'strike', 'delta']].head(10))
    
    # Gamma非負チェック
    if 'gamma' in df.columns:
        invalid_gamma = df[df['gamma'] < 0]
        validation_results["gamma_issues"] = len(invalid_gamma)
    
    # Vega非負チェック
    if 'vega' in df.columns:
        invalid_vega = df[df['vega'] < 0]
        validation_results["vega_issues"] = len(invalid_vega)
    
    # Theta非正チェック(通常は负値)
    if 'theta' in df.columns:
        invalid_theta = df[df['theta'] > 0]
        validation_results["theta_issues"] = len(invalid_theta)
    
    return validation_results

def visualize_greeks_distribution(df: pd.DataFrame):
    """
    Greeksの分布を可视化
    """
    greeks_columns = ['delta', 'gamma', 'vega', 'theta']
    available_cols = [col for col in greeks_columns if col in df.columns]
    
    if not available_cols:
        print("Greeks列が見つかりません")
        return
    
    fig, axes = plt.subplots(2, 2, figsize=(12, 10))
    axes = axes.flatten()
    
    for i, col in enumerate(available_cols):
        axes[i].hist(df[col].dropna(), bins=50, edgecolor='black', alpha=0.7)
        axes[i].set_title(f'{col.upper()} 分布')
        axes[i].set_xlabel(col)
        axes[i].set_ylabel('頻度')
        axes[i].grid(True, alpha=0.3)
    
    plt.tight_layout()
    plt.savefig('greeks_distribution.png', dpi=150)
    print("📊 グラフを 'greeks_distribution.png' として保存しました")

使用例

if __name__ == "__main__": # 前段のコードで取得したデータを使用 validation = validate_greeks_fields(df) print("\n===== Greeks検証结果 =====") print(f"総レコード数: {validation['total_records']}") print(f"Delta異常: {validation['delta_issues']}件") print(f"Gamma異常: {validation['gamma_issues']}件") print(f"Vega異常: {validation['vega_issues']}件") print(f"Theta異常: {validation['theta_issues']}件") print(f"\n欠損値:") for k, v in validation['missing_values'].items(): print(f" {k}: {v}件") # Greeks分布の可视化 visualize_greeks_distribution(df)

ヒント:「ModuleNotFoundError: No module named 'matplotlib'」というエラーが出る場合は、pip install matplotlib を実行してください。

Step 5:タイムスタンプ漂移の检测

タイムスタンプ漂移(Timestamp Drift)は、データの時間順序が乱れる现象です。これは市場データ供给者にとって致命的な问题となります。

from datetime import datetime, timedelta

def detect_timestamp_drift(df: pd.DataFrame, max_expected_gap_seconds: int = 60):
    """
    タイムスタンプ漂移を検出する
    
    Parameters:
    - df: タイムスタンプを含むDataFrame
    - max_expected_gap_seconds: 許容される最大時間间隔(秒)
    
    Returns:
    - dict: 检测结果
    """
    results = {
        "total_records": len(df),
        "drift_detected": False,
        "drift_points": [],
        "statistics": {}
    }
    
    if 'timestamp' not in df.columns:
        print("❌ timestamp列が見つかりません")
        return results
    
    # タイムスタンプをdatetimeに変換
    df = df.copy()
    df['datetime'] = pd.to_datetime(df['timestamp'], unit='ms')
    df = df.sort_values('datetime').reset_index(drop=True)
    
    # 时间间隔の计算
    df['time_diff'] = df['datetime'].diff().dt.total_seconds()
    
    # 异常な时间间隔を検出
    abnormal_gaps = df[df['time_diff'] > max_expected_gap_seconds]
    
    if len(abnormal_gaps) > 0:
        results["drift_detected"] = True
        results["drift_points"] = abnormal_gaps[['datetime', 'time_diff']].to_dict('records')
        
        print(f"⚠️ タイムスタンプ漂移を {len(abnormal_gaps)} 箇所で検出:")
        for idx, row in abnormal_gaps.head(10).iterrows():
            print(f"  {row['datetime']}: 间隔 {row['time_diff']:.1f}秒")
    
    # 统计情報の计算
    results["statistics"] = {
        "平均间隔": df['time_diff'].mean(),
        "最大间隔": df['time_diff'].max(),
        "最小间隔": df['time_diff'].min(),
        "标准偏差": df['time_diff'].std()
    }
    
    print("\n===== タイムスタンプ統計 =====")
    for key, value in results["statistics"].items():
        print(f"{key}: {value:.2f}秒")
    
    return results

def check_timestamp_monotonicity(df: pd.DataFrame):
    """
    タイムスタンプが単調増加しているかをチェック
    """
    if 'timestamp' not in df.columns:
        return {"is_monotonic": False, "reversed_points": 0}
    
    timestamps = df['timestamp'].values
    
    # 時間的に前のデータ点数を確認
    reversed_count = 0
    reversed_indices = []
    
    for i in range(1, len(timestamps)):
        if timestamps[i] < timestamps[i-1]:
            reversed_count += 1
            reversed_indices.append(i)
    
    return {
        "is_monotonic": reversed_count == 0,
        "reversed_points": reversed_count,
        "reversed_indices": reversed_indices[:20]  # 最初の20件のみ
    }

使用例

if __name__ == "__main__": drift_result = detect_timestamp_drift(df, max_expected_gap_seconds=300) monotonic_result = check_timestamp_monotonicity(df) print(f"\n===== 単調性チェック =====") print(f"単調増加: {'✅ はい' if monotonic_result['is_monotonic'] else '❌ いいえ'}") print(f"逆転ポイント数: {monotonic_result['reversed_points']}") if not monotonic_result['is_monotonic']: print(f"逆転位置(例): {monotonic_result['reversed_indices'][:5]}")

ヒント:300秒(约5分)を超える间隔は、德ribitのシステム维护または数据传输问题の可能性があります。

Step 6:缺失区間の检测と修补

缺失区间(Missing Intervals)は、特定の時間帯の данные が存在しない问题です。以下のコードで漏れなく检测します:

def detect_missing_intervals(
    df: pd.DataFrame,
    expected_interval_seconds: int = 1000
) -> dict:
    """
    缺失区间を检测する
    
    Parameters:
    - df: 時系列データ
    - expected_interval_seconds: 期待されるデータ间隔(ミリ秒)
    
    Returns:
    - dict: 缺失区间の情 Bao
    """
    results = {
        "expected_records": 0,
        "actual_records": 0,
        "missing_intervals": [],
        "coverage_rate": 0.0
    }
    
    if 'timestamp' not in df.columns:
        print("❌ timestamp列が見つかりません")
        return results
    
    df = df.copy().sort_values('timestamp')
    
    # 期望されるレコード数の计算
    time_range = df['timestamp'].max() - df['timestamp'].min()
    results["expected_records"] = int(time_range / expected_interval_seconds) + 1
    results["actual_records"] = len(df)
    
    # 缺失区间の特定
    timestamps = df['timestamp'].values
    
    for i in range(1, len(timestamps)):
        actual_gap = timestamps[i] - timestamps[i-1]
        expected_count = int(actual_gap / expected_interval_seconds)
        
        if expected_count > 1:
            # 缺失区间が存在
            missing_start = timestamps[i-1] + expected_interval_seconds
            missing_end = timestamps[i]
            
            results["missing_intervals"].append({
                "start": missing_start,
                "end": missing_end,
                "gap_ms": actual_gap,
                "expected_count": expected_count - 1
            })
    
    # 覆盖率の计算
    if results["expected_records"] > 0:
        results["coverage_rate"] = (
            results["actual_records"] / results["expected_records"]
        ) * 100
    
    # 结果の表示
    print(f"\n===== 缺失区间检测结果 =====")
    print(f"期望レコード数: {results['expected_records']}")
    print(f"实际レコード数: {results['actual_records']}")
    print(f"覆盖率: {results['coverage_rate']:.2f}%")
    print(f"缺失区间数: {len(results['missing_intervals'])}")
    
    if results["missing_intervals"]:
        print("\n缺失区间详细:")
        for interval in results["missing_intervals"][:10]:
            start_dt = datetime.fromtimestamp(interval['start']/1000)
            end_dt = datetime.fromtimestamp(interval['end']/1000)
            print(f"  {start_dt} → {end_dt} ({interval['expected_count']}件欠损)")
    
    return results

def fill_missing_intervals(df: pd.DataFrame, expected_interval_ms: int = 1000):
    """
    缺失区间を填补する(线形补間)
    
    注意:これは简单な补間であり、実際の取引データでは
    より高度な手法が必要な场合があります
    """
    if 'timestamp' not in df.columns:
        return df
    
    df = df.copy().sort_values('timestamp').reset_index(drop=True)
    
    # 数值列を特定
    numeric_columns = df.select_dtypes(include=[np.number]).columns.tolist()
    
    # タイムスタンプをdatetimeに変換
    df['datetime'] = pd.to_datetime(df['timestamp'], unit='ms')
    
    # 完全な时间範囲を生成
    full_time_range = pd.date_range(
        start=df['timestamp'].min(),
        end=df['timestamp'].max(),
        freq=f'{expected_interval_ms}ms'
    )
    
    # 元のデータを Timestamp でインデックス化
    df_indexed = df.set_index('timestamp')
    
    # 缺失区间を含む新しいインデックス
    full_df = pd.DataFrame(index=full_time_range)
    full_df.index.name = 'timestamp'
    
    # 元のデータをマージ
    merged = full_df.join(df_indexed, how='left')
    
    # 数值列を线形补間
    for col in numeric_columns:
        if col in merged.columns:
            merged[col] = merged[col].interpolate(method='linear')
    
    merged = merged.reset_index()
    merged['datetime'] = pd.to_datetime(merged['timestamp'], unit='ms')
    
    print(f"✅ 补間完了: {len(df)}件 → {len(merged)}件")
    
    return merged

使用例

if __name__ == "__main__": missing_result = detect_missing_intervals(df) if missing_result["coverage_rate"] < 99: print("\n⚠️ 覆盖率が99%未满です。数据的品质确认が必要です。") # 缺失区间の填补(オプション) print("\n缺失区间を线形补間で填补しますか? (y/n)") # response = input() # 実运行ではコメントアウトを解除 # if response.lower() == 'y': # df_filled = fill_missing_intervals(df) # df_filled.to_csv('filled_data.csv') # print("补間済みデータを 'filled_data.csv' として保存")

Step 7:完全なデータ品質验收スクリプト

これまでの检查機能を統合した、完全な品質验收スクリプトが以下の通りです:

# deribit_acceptance_test.py
"""
Deribit期权历史数据 品质验收スクリプト
HolySheep AI × Tardis データ検証用

使用方法:
    python deribit_acceptance_test.py --symbol BTC --hours 24
"""

import requests
import pandas as pd
import numpy as np
import argparse
from datetime import datetime, timedelta
import json
import os

HolySheep API設定

BASE_URL = "https://api.holysheep.ai/v1" API_KEY = os.getenv("HOLYSHEEP_API_KEY", "YOUR_HOLYSHEEP_API_KEY") class DeribitAcceptanceTester: """德ribit数据品质验收测试器""" def __init__(self, api_key: str): self.api_key = api_key self.base_url = BASE_URL self.test_results = {} def fetch_data(self, symbol: str, hours: int = 24) -> pd.DataFrame: """德ribitからデータを取得""" headers = { "Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json" } end_time = datetime.now() start_time = end_time - timedelta(hours=hours) payload = { "exchange": "deribit", "instrument_type": "option", "symbol": symbol, "start_time": start_time.isoformat(), "end_time": end_time.isoformat(), "include_greeks": True, "include_funding": True } print(f"📡 {symbol} の过去{hours}时间分のデータを取得中...") response = requests.post( f"{self.base_url}/market-data/historical", headers=headers, json=payload, timeout=60 ) if response.status_code == 200: data = response.json() df = pd.DataFrame(data['data']) print(f"✅ {len(df)}件のデータを取得成功") return df else: raise Exception(f"APIエラー: {response.status_code} - {response.text}") def test_greeks_validity(self, df: pd.DataFrame) -> dict: """Greeks字段验证テスト""" results = { "test_name": "Greeks字段有效性", "passed": True, "issues": [] } greeks_columns = ['delta', 'gamma', 'vega', 'theta'] for col in greeks_columns: if col not in df.columns: results["issues"].append(f"{col}列が存在しません") results["passed"] = False continue # 欠损値チェック missing = df[col].isna().sum() if missing > 0: results["issues"].append(f"{col}: {missing}件の欠損値") # ビジネスルールチェック if col == 'delta' and df[col].notna().any(): invalid = ((df[col] < -1) | (df[col] > 1)).sum() if invalid > 0: results["issues"].append(f"delta: {invalid}件の異常値(範囲外)") results["passed"] = False if col in ['gamma', 'vega'] and df[col].notna().any(): negative = (df[col] < 0).sum() if negative > 0: results["issues"].append(f"{col}: {negative}件の負値") return results def test_timestamp_quality(self, df: pd.DataFrame) -> dict: """タイムスタンプ品質テスト""" results = { "test_name": "タイムスタンプ品質", "passed": True, "issues": [], "statistics": {} } if 'timestamp' not in df.columns: results["issues"].append("timestamp列が存在しません") results["passed"] = False return results df_sorted = df.sort_values('timestamp') timestamps = df_sorted['timestamp'].values # 单调性チェック reversed_count = np.sum(timestamps[1:] < timestamps[:-1]) if reversed_count > 0: results["issues"].append(f"{reversed_count}件のタイムスタンプ逆転") results["passed"] = False # 间隔統計 gaps = np.diff(timestamps) results["statistics"] = { "平均间隔": np.mean(gaps), "最大间隔": np.max(gaps), "最小间隔": np.min(gaps), "间隔標準偏差": np.std(gaps) } # 异常间隔チェック abnormal = np.sum(gaps > 300000) # 300秒以上 if abnormal > 0: results["issues"].append(f"{abnormal}件の異常な间隔(300秒以上)") return results def test_data_completeness(self, df: pd.DataFrame, expected_interval_ms: int = 1000) -> dict: """データ完全性テスト""" results = { "test_name": "データ完全性", "passed": True, "issues": [], "statistics": {} } if 'timestamp' not in df.columns: results["issues"].append("timestamp列が存在しません") results["passed"] = False return results time_range = df['timestamp'].max() - df['timestamp'].min() expected_records = int(time_range / expected_interval_ms) + 1 actual_records = len(df) coverage = (actual_records / expected_records * 100) if expected_records > 0 else 0 results["statistics"] = { "expected_records": expected_records, "actual_records": actual_records, "coverage_rate": coverage } if coverage < 99: results["issues"].append(f"覆盖率: {coverage:.2f}% (期望値以下)") results["passed"] = False return results def run_full_acceptance(self, symbol: str, hours: int = 24) -> dict: """完全品質验收テストを実行""" print("\n" + "="*50) print("Deribit期权数据 品质验收テスト開始") print("="*50) # データ取得 df = self.fetch_data(symbol, hours) self.test_results["data_info"] = { "symbol": symbol, "hours": hours, "total_records": len(df), "fetch_time": datetime.now().isoformat() } # 各テストを実行 self.test_results["tests"] = { "greeks_validity": self.test_greeks_validity(df), "timestamp_quality": self.test_timestamp_quality(df), "data_completeness": self.test_data_completeness(df) } # 最終判定 all_passed = all(t["passed"] for t in self.test_results["tests"].values()) self.test_results["overall"] = { "passed": all_passed, "timestamp": datetime.now().isoformat() } # 结果表示 print("\n" + "="*50) print("测试结果サマリー") print("="*50) for test_name, result in self.test_results["tests"].items(): status = "✅ PASS" if result["passed"] else "❌ FAIL" print(f"\n{test_name}: {status}") if result["issues"]: for issue in result["issues"]: print(f" - {issue}") print("\n" + "="*50) final = "✅ 全テスト合格 - データ品質確認完了" if all_passed else "❌ テスト失敗 - データ確認 필요" print(final) print("="*50) return self.test_results def main(): parser = argparse.ArgumentParser(description='Deribit数据品质验收テスト') parser.add_argument('--symbol', default='BTC', help='通貨ペア (BTC, ETH)') parser.add_argument('--hours', type=int, default=24, help='データ取得範囲(小时)') parser.add_argument('--output', default='acceptance_results.json', help='结果出力ファイル') args = parser.parse_args() tester = DeribitAcceptanceTester(API_KEY) results = tester.run_full_acceptance(args.symbol, args.hours) # 結果保存 with open(args.output, 'w', encoding='utf-8') as f: json.dump(results, f, ensure_ascii=False, indent=2, default=str) print(f"\n📄 結果詳細を '{args.output}' として保存しました") if __name__ == "__main__": main()

よくあるエラーと対処法

エラー1:APIキー認証エラー「401 Unauthorized」

# 错误内容

{"error": "Invalid API key", "code": 401}

解決策

1. APIキーが正しく設定されているか確認

API_KEY = os.getenv("HOLYSHEEP_API_KEY") if not API_KEY or API_KEY == "YOUR_HOLYSHEEP_API_KEY": raise ValueError("❌ APIキーが設定されていません。環境変数 HOLYSHEEP_API_KEY を設定してください。")

2. 環境変数設定方法(Terminal/コマンドプロンプトで実行)

Windows:

set HOLYSHEEP_API_KEY=hs-your-actual-api-key

#

macOS/Linux:

export HOLYSHEEP_API_KEY=hs-your-actual-api-key

3. .envファイルを使用する場合

pip install python-dotenv

.envファイルに HOLYSHEEP_API_KEY=hs-your-actual-api-key と記述

from dotenv import load_dotenv load_dotenv() API_KEY = os.getenv("HOLYSHEEP_API_KEY")

エラー2:タイムスタンプ形式エラー「400 Bad Request」

# 错误内容

{"error": "Invalid timestamp format", "code": 400}

解決策

ISO 8601形式またはUnixタイムスタンプ(ミリ秒)を使用

from datetime import datetime, timezone

方法1: ISO 8601形式(推奨)

start_time = "2024-01-15T00:00:00Z" end_time = "2024-01-15T23:59:59Z"

方法2: Unixタイムスタンプ(ミリ秒)

start_timestamp = int(datetime.now(timezone.utc).timestamp() * 1000) - 86400000 # 24時間前 end_timestamp = int(datetime.now(timezone.utc).timestamp() * 1000)

方法3: timezone-aware datetimeを使用

from datetime import timezone now_utc = datetime.now(timezone.utc) start_time = (now_utc - timedelta(hours=24)).isoformat()

payloadに設定

payload = { "start_time": start_time, # または start_timestamp "end_time": end_time, # ... }

エラー3:データ取得超时「Timeout Error」

# 错误内容

requests.exceptions.Timeout: Connection timed out

解決策

1. タイムアウト時間を延长

response = requests.post( url, headers=headers, json=payload, timeout=120