quantitative trading(定量取引)を始めたいけれど-historical data(過去データ)の入手方法で 어려움을 겪고 있는 분들을 위한 完全初心者向けガイド입니다。Tardis APIとHolySheep AIを活用した-実践的なデータ取得ワークフローを説明します。
Tardis APIとは?
Tardis APIは-cryptocurrency exchange(暗号資産取引所)のtick数据进行持续实时采集的工具です。OKXやBybit、Binanceなど35以上のexchange対応しています。
- 高频率tick data(高頻度tickデータ)の 수집
- REST API形式での-simple取得
- CSV/JSON形式での-データ出力
- сторический dataのbackfill(一括取得)対応
向いている人・向いていない人
向いている人
- quantitative trading戦略の-backtest(バックテスト)を始めたい方
- OKX先物・現物のhistorical数据进行分析したい方
- 自作trading bot(取引ボット)の性能評価を行いたい方
向いていない人
- リアルタイムtrading signal(取引シグナル)の取得のみが必要な方
- すでに独自のデータ収集インフラを所持している方
- freeデータでの-поздний backtesting(遅延バックテスト)で十分な方
始める前の準備物
- Tardis APIアカウント(free trialあり)
- OKX先物账户またはテスト网账户
- Python 3.8以上の実行環境
- Internet接続環境
ステップ1:Tardis API ключ取得
Tardis Developer Portalでアカウント登録を行います。登録完了後、dashboardからAPI keyを確認できます。
ポイント:最初の登録でfree creditが赠送されるため、少量データでのテストが可能です。
ステップ2:Python環境のセットアップ
pip install tardis-client requests pandas
ステップ3:OKX先物データ取得サンプルコード
import requests
import json
import time
Tardis API設定
TARDIS_API_KEY = "YOUR_TARDIS_API_KEY"
BASE_URL = "https://api.tardis.dev/v1"
def get_okx_futures_data(symbol="BTC-USDT-SWAP", start_date="2024-01-01", end_date="2024-01-02"):
"""
OKX先物のhistorical数据进行获取
symbol: 取引ペア(先物の場合 -SWAP 接尾辞)
"""
# シンボルごとにchannelを取得(1分足の場合)
url = f"{BASE_URL}/historical/okx/futures/{symbol}"
params = {
"apiKey": TARDIS_API_KEY,
"from": f"{start_date}T00:00:00Z",
"to": f"{end_date}T23:59:59Z",
"format": "json",
"channels": ["trades"] # 約定データ
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
print(f"取得成功: {len(data)} 件のデータを取得")
return data
else:
print(f"エラー発生: {response.status_code}")
print(response.text)
return None
実行例
if __name__ == "__main__":
result = get_okx_futures_data(
symbol="BTC-USDT-SWAP",
start_date="2024-01-01",
end_date="2024-01-02"
)
if result:
# pandas DataFrameに変換
import pandas as pd
df = pd.DataFrame(result)
print(df.head())
print(f"\nデータ形状: {df.shape}")
ステップ4:quantitative回测用データ整形
import pandas as pd
import numpy as np
from datetime import datetime
def format_for_backtest(raw_data):
"""
Tardis APIから取得した生データをbacktest用に変換
※ここでHolySheep AIを活用した分析処理も可能
"""
df = pd.DataFrame(raw_data)
# timestamp変換
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
df = df.set_index('timestamp').sort_index()
# OHLCV形式的データに整形
ohlcv = df.groupby(pd.Grouper(freq='1min')).agg({
'price': ['first', 'high', 'low', 'last'],
'amount': 'sum',
'side': 'count' # 取引数をvolumeとして使用
})
# カラム名整理
ohlcv.columns = ['open', 'high', 'low', 'close', 'volume']
# HolySheep AI APIを呼び出し(異常値検知の例)
# base_url = "https://api.holysheep.ai/v1"
# headers = {"Authorization": f"Bearer {HOLYSHEEP_API_KEY}"}
return ohlcv.dropna()
データ保存
if __name__ == "__main__":
# 上記で取得したデータを使用
formatted = format_for_backtest(result)
# CSV保存
formatted.to_csv('okx_btc_1min_2024.csv')
print(f"保存完了: {len(formatted)} 行")
# 基本的な統計情報
print(f"平均volume: {formatted['volume'].mean():.2f}")
print(f"price range: {formatted['low'].min():.2f} - {formatted['high'].max():.2f}")
ステップ5:OKX先物データと现货数据的区别
OKXでは取引商品によってデータ取得方法が異なります:
- 先物(Futures):USDⓈ-M先物、COIN-M先物 — symbolに
-SWAPまたは-futureを付与 - 現物(Spot): symbolそのまま(例:BTC-USDT)
- オプション(Options):別途-endpointが必要
ステップ6:backtest戦略への適用例
import pandas as pd
import numpy as np
def simple_moving_average_strategy(data, short_window=20, long_window=50):
"""
単純移動平均線のクロスを用いた基本戦略
"""
df = data.copy()
# 移動平均線の計算
df['SMA_short'] = df['close'].rolling(window=short_window).mean()
df['SMA_long'] = df['close'].rolling(window=long_window).mean()
# シグナル生成
df['signal'] = 0
df.loc[df['SMA_short'] > df['SMA_long'], 'signal'] = 1 # 買い
df.loc[df['SMA_short'] <= df['SMA_long'], 'signal'] = -1 # 売り
# シグナル変化点で取引
df