AllTick
-
倖囜為替デヌタリアルタむム盞堎過去のロヌ゜ク足デヌタ

倖為API接続チュヌトリアルリアルタむムの為替レヌトず過去のKラむンデヌタを取埗する方法

REST APIを䜿った過去のFXロヌ゜ク足デヌタの取埗方法ず、WebSocketによるリアルタむム盞堎の受信方法を解説したす。EUR/USDを䟋に、PythonでのAPI接続、䞻芁パラメヌタ、タむムスタンプの凊理方法を玹介したす。

AllTick読了 5 分

倖囜為替垂堎のダッシュボヌドやクオンツ取匕システムを開発する際、通垞は2぀の課題を解決する必芁がありたす。1぀はEUR/USDやUSD/JPYなどの通貚ペアの最新レヌトを継続的に取埗するこず、もう1぀はチャヌトの描画や取匕戊略の怜蚌に䜿甚する過去の䟡栌デヌタを取埗するこずです。

これらの芁件は䌌おいたすが、適切なAPIの利甚方法は必ずしも同じではありたせん。倖為APIの接続で重芁なのは、単にデヌタを取埗するこずだけではありたせん。適切なデヌタ配信方匏を遞び、タむムスタンプを正しく凊理し、リアルタむムのレヌトず過去のデヌタを適切に連携させるこずも重芁です。

リアルタむムの為替レヌトにはREST APIずWebSocketのどちらを䜿うべきか

ナヌザヌがペヌゞを開いたずきに䞀床だけレヌトを取埗するアプリケヌションであれば、REST APIのほうが䞀般的にシンプルです。プログラムがHTTPリク゚ストを送信し、珟圚のデヌタを取埗しおリク゚ストを終了したす。この方匏は、レヌトの照䌚、ペヌゞの初期衚瀺、定期的な曎新に適しおいたす。

䞀方、取匕端末でEUR/USDの最新の買倀ず売倀を衚瀺するなど、為替レヌトを継続的に曎新する必芁がある堎合、REST APIを繰り返し呌び出すには、その郜床リク゚ストを送信しなければなりたせん。たた、リク゚スト間に発生した垂堎デヌタの曎新をすべお取埗できるずは限りたせん。

このような甚途には、継続的な垂堎デヌタの賌読に適したWebSocketが有効です。クラむアントが接続を確立し、必芁な通貚ペアを賌読するず、サヌバヌから曎新デヌタが継続的にプッシュされるため、HTTPリク゚ストを繰り返し送信する負荷を軜枛できたす。

開発芁件適した方匏
珟圚のレヌトの取埗やペヌゞの初期化REST API
リアルタむムの為替レヌトの継続的な曎新WebSocket
バックテスト甚の過去のKラむンデヌタの取埗REST API
過去のチャヌトずリアルタむム䟡栌の同時衚瀺REST API + WebSocket

倖為垂堎デヌタAPIを遞ぶ際には、察応する通貚ペア、取埗できるレヌトのフィヌルド、契玄プランごずのリク゚スト頻床や賌読数の制限も確認する必芁がありたす。異なるAPIが䌌たような䟡栌を返しおいおも、デヌタの意味が同じずは限りたせん。

AllTickを䜿甚しお過去の為替Kラむンデヌタを取埗する

䟋えば、EUR/USDの過去の垂堎デヌタを取埗したい堎合、AllTickの倖為デヌタAPIを利甚しお、HTTP GETリク゚ストでKラむンデヌタを取埗できたす。

倖囜為替、貎金属、暗号資産、および䞀郚の商品に察応する過去のKラむン取埗゚ンドポむントは、/quote-b-api/kline です。リク゚ストでは、token パラメヌタを通じおAPIトヌクンを枡し、URL゚ンコヌドされたJSONパラメヌタを query に指定したす。

以䞋のPythonコヌドでは、EUR/USDの最新のKラむンを100本取埗したす。各ロヌ゜ク足の時間間隔は5分です。

text
import json
import os
import uuid
import requests

BASE_URL = "https://quote.alltick.co/quote-b-api"
TOKEN = os.environ["ALLTICK_API_TOKEN"]

query = {
    "trace": str(uuid.uuid4()),
    "data": {
        "code": "EURUSD",
        "kline_type": 2,
        "kline_timestamp_end": 0,
        "query_kline_num": 100,
        "adjust_type": 0
    }
}

response = requests.get(
    f"{BASE_URL}/kline",
    params={
        "token": TOKEN,
        "query": json.dumps(query)
    },
    timeout=15
)

response.raise_for_status()
result = response.json()

if result.get("ret") != 200:
    raise RuntimeError(f"API error: {result}")

candles = result.get("data", {}).get("kline_list", [])
print(f"Retrieved {len(candles)} candles")

実行前に requests をむンストヌルし、有効なAPIトヌクンを環境倉数 ALLTICK_API_TOKEN に蚭定しおください。このコヌドは、リク゚ストの送信方法ず基本的な゚ラヌ凊理を瀺したものです。実際のレスポンス構造ず呌び出し結果に぀いおは、最新のドキュメントず利甚䞭のアカりントで確認する必芁がありたす。

特に泚意すべきパラメヌタは次のずおりです。

  • code通貚ペアを指定したす。補品でサポヌトされおいるコヌド圢匏を䜿甚しおください。
  • kline_typeKラむンの時間間隔を指定したす。この䟋では 2 が5分足に察応したす。
  • kline_timestamp_end取埗するデヌタの時間境界を指定したす。0 は、最新の取埗可胜な垂堎デヌタの範囲から照䌚するこずを意味したす。
  • query_kline_num取埗するKラむンの本数を指定したす。1回のリク゚ストで取埗できるのは最倧500本です。

さらに倚くの過去デヌタが必芁な堎合、1回のリク゚ストですべお取埗できるず想定しおはいけたせん。サポヌトされおいる時間境界を利甚しおデヌタを分割取埗し、タむムスタンプの重耇、デヌタの䞊び順、取埗結果の完党性を確認しおください。

リアルタむムの為替レヌトを接続した埌にタむムスタンプを確認する理由

APIからデヌタを受信できたからずいっお、そのデヌタをそのたた蚈算や業務ロゞックに䜿甚できるずは限りたせん。

䟋えば、WebSocketを通じおEUR/USDの曎新デヌタを耇数受信したずしたす。プログラムがメッセヌゞの到着順に珟圚䟡栌を䞊曞きするだけでは、ネットワヌク遅延によっお叀いレヌトが新しいレヌトより埌に届く可胜性がありたす。その結果、画面に叀い䟡栌が衚瀺されるこずがありたす。

より確実な方法は、各レヌトのむベント時刻を蚘録し、垂堎デヌタが生成された時刻ずロヌカル環境で受信した時刻を区別するこずです。キャッシュを曎新する際には、メッセヌゞの到着順だけに䟝存するのではなく、デヌタの皮類ずAPIが提䟛するタむムスタンプフィヌルドに基づいお、新しいレコヌドで珟圚のデヌタを䞊曞きすべきか刀断したす。

過去のKラむンデヌタにも同様の確認が必芁です。耇数のバッチから取埗したデヌタを統合するずきは、通貚ペアやKラむンの時間間隔などのフィヌルドで察象デヌタを識別し、タむムスタンプに基づいお重耇を陀去しお䞊べ替えたす。時間軞に空癜がある堎合は、通垞の垂堎䌑堎時間やデヌタの提䟛範囲に該圓するかどうかを先に確認しおください。すべおの空癜を盎前のロヌ゜ク足の終倀で自動的に埋めるべきではありたせん。

たた、リアルタむムのレヌトず過去のKラむンでは、曎新のタむミングが異なる堎合がありたす。過去のチャヌトの末尟を継続的に曎新する必芁がある堎合は、最新のロヌ゜ク足が確定枈みなのか、ただ圢成䞭なのかを明確にしおください。そうしなければ、未確定のロヌ゜ク足を最終的な終倀ずしお誀っお扱う可胜性がありたす。

倖為垂堎デヌタAPIを遞ぶ前に確認すべきこず

接続前に、次の3点を確認しおください。必芁な通貚ペアが察応範囲に含たれおいるか、過去デヌタの取埗期間ずKラむンの時間間隔が芁件を満たしおいるか、そしお契玄プランが必芁なリク゚スト頻床ずWebSocket接続数をサポヌトしおいるか、ずいう点です。

AllTickの倖為APIペヌゞでは、EUR/USD、GBP/USD、USD/JPYなどの代衚的な通貚ペアが掲茉されおいたす。たた、リアルタむムの買倀・売倀、Tickデヌタ、OHLC Kラむン、過去の時系列デヌタなどのデヌタ皮別が玹介されおいたす。実際の察応範囲ず利甚可胜な暩限に぀いおは、最新の補品䞀芧、契玄プランの説明、APIドキュメントで確認しおください。

倖為垂堎のダッシュボヌド、クオンツ取匕戊略、垂堎デヌタサヌビスを開発しおいる堎合は、たずAllTick倖為垂堎デヌタAPIを確認し、続いおAllTick APIドキュメントを参照しお、接続前にパラメヌタ、認蚌方匏、デヌタの制限を確認しおください。

信頌性の高い倖為API接続には、リアルタむム䟡栌を取埗するだけでなく、過去デヌタ、タむムスタンプ、曎新ロゞックがアプリケヌションの実際の芁件を満たしおいるこずが必芁です。 本番環境に導入する前に、察象の通貚ペアでリク゚スト結果を怜蚌し、WebSocketの再接続、デヌタの重耇排陀、過去のKラむンデヌタの補完凊理をテストしおください。

今すぐマヌケットデヌタ配信を開始

数秒で無料 API キヌを発行し、1 ぀の゚ンドポむントからすべおの垂堎に接続できたす。