
å€çºAPIæ¥ç¶ãã¥ãŒããªã¢ã«ïŒãªã¢ã«ã¿ã€ã ã®çºæ¿ã¬ãŒããšéå»ã®Kã©ã€ã³ããŒã¿ãååŸããæ¹æ³
REST APIã䜿ã£ãéå»ã®FXããŒãœã¯è¶³ããŒã¿ã®ååŸæ¹æ³ãšãWebSocketã«ãããªã¢ã«ã¿ã€ã çžå Žã®åä¿¡æ¹æ³ã解説ããŸããEUR/USDãäŸã«ãPythonã§ã®APIæ¥ç¶ãäž»èŠãã©ã¡ãŒã¿ãã¿ã€ã ã¹ã¿ã³ãã®åŠçæ¹æ³ã玹ä»ããŸãã
å€åœçºæ¿åžå Žã®ããã·ã¥ããŒããã¯ãªã³ãååŒã·ã¹ãã ãéçºããéãéåžžã¯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åã§ãã
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ã©ã€ã³ããŒã¿ã®è£å®åŠçããã¹ãããŠãã ããã