
外国為替相場APIで高頻度データを簡単に取得して戦略をバックテスト
クオンツ取引や外国為替ツールの開発では、リアルタイムの為替レートを取得するだけでは到底不十分です。開発者は、戦略のバックテスト、リスク分析、または可視化モニタリングを行うために、高頻度データを必要とすることがよくあります…
クオンツ取引や外国為替ツールの開発では、リアルタイムの為替レートを取得するだけでは到底不十分です。開発者は、戦略のバックテスト、リスク分析、または可視化モニタリングを行うために、高頻度データを必要とすることがよくあります。本稿では Pythonを例に、接続方法を示します AllTick API 高頻度の外国為替相場を取得し、ローソク足チャートの可視化と簡単な戦略のバックテストを実現します。
環境の準備と依存関係
pip install requests pandas matplotlib mplfinance
- requests:外国為替APIを呼び出す
- pandas:高頻度データの処理
- matplotlib と mplfinance:ローソク足チャートと相場曲線の描画
AllTick API に登録済みで、APIキーを取得していることを確認してください。
高頻度の外国為替データを取得する
以下の例では、EUR/USD の高頻度ティックデータを取得する方法を示します:
import requests
import pandas as pd
API_URL = “https://api.alltick.com/forex/tick”
API_KEY = “your_api_key_here”
params = {
“symbol”: “EURUSD”,
“interval”: “1s”, # 一秒ごとに一ティック
“limit”: 500, # 最新の 500 件のデータを取得
“apikey”: API_KEY
}
resp = requests.get(API_URL, params=params)
data = resp.json()
df = pd.DataFrame(data)
df[‘timestamp’] = pd.to_datetime(df[‘timestamp’])
print(df.head())
interval パラメータを使用すると、異なる頻度のデータを取得でき、高頻度戦略のバックテストやリアルタイム監視に便利です。
K線の可視化例
高頻度TickデータをK線に変換する:
import mplfinance as mpf
# Tickデータを分単位でOHLCに集約
df_ohlc = df.resample(‘1T’, on=’timestamp’).agg({
‘price’: [‘first’, ‘max’, ‘min’, ‘last’],
‘volume’: ‘sum’
})
df_ohlc.columns = [‘Open’, ‘High’, ‘Low’, ‘Close’, ‘Volume’]
mpf.plot(df_ohlc, type=’candle’, volume=True, style=’yahoo’, title=’EUR/USD 分足K線’)
- resampleを使用すると、さまざまな周期のK線を柔軟に生成できます
- 価格変動を直接観察でき、戦略分析のための直感的な参考になります
シンプルな戦略バックテスト
移動平均線のクロスを例に、シンプルな取引シグナルのバックテストを実装します:
df_ohlc[‘MA5’] = df_ohlc[‘Close’].rolling(5).mean()
df_ohlc[‘MA20’] = df_ohlc[‘Close’].rolling(20).mean()
# 取引シグナルを生成
df_ohlc[‘signal’] = 0
df_ohlc.loc[df_ohlc[‘MA5’] > df_ohlc[‘MA20’], ‘signal’] = 1 # 買いシグナル
df_ohlc.loc[df_ohlc[‘MA5’] < df_ohlc[‘MA20’], ‘signal’] = -1 # 売りシグナル
print(df_ohlc[[‘Close’, ‘MA5’, ‘MA20’, ‘signal’]].tail())
- 移動平均線のクロスシグナルは自動取引戦略に利用できます
- AllTickの過去データと組み合わせてバックテストを行い、戦略の効果を評価できます
複数通貨ペアの監視と拡張
開発者は複数の通貨ペアを同時に監視できます:
symbols = [‘EURUSD’, ‘GBPUSD’, ‘USDJPY’]
dfs = []
for s in symbols:
params[‘symbol’] = s
resp = requests.get(API_URL, params=params).json()
dfs.append(pd.DataFrame(resp))
all_data = pd.concat(dfs)
all_data[‘timestamp’] = pd.to_datetime(all_data[‘timestamp’])
print(all_data.head())
- データを結合すると、複数銘柄の分析や複数通貨ペアにまたがる戦略のバックテストが容易になります
- AllTick APIの高頻度データを使用すれば、取引監視ダッシュボードを迅速に構築できます
開発者向け実践のコツ
- APIレート制限:高頻度リクエスト時は、遅延を追加するか、バッチリクエストを使用することをおすすめします
- 例外処理:ネットワークエラーやデータ欠損を捕捉し、プログラムの安定性を確保
- キャッシュ戦略:過去のデータをローカルデータベースに保存することで、分析効率を向上
- 可視化の最適化:Plotly や Dash と組み合わせることで、インタラクティブなリアルタイム監視を実現
このプロセスを通じて、開発者は高頻度Tickデータからローソク足の可視化、さらに戦略のバックテストまで、全工程を迅速に実践し、 AllTick API 信頼性の高いデータを効率的に取得して、クオンツ取引や外国為替ツールの開発を支援できます。