01
ã¯ããã«ïŒåå¿è å¿ èªïŒ
1.1 ããã¯äœã§ãã?
AllTick ã¯ããªã¢ã«ã¿ã€ã ã®éèåžå ŽããŒã¿ ãµãŒãã¹ã§ããæ¬¡ã®ããŒã¿ãååŸããã«ã¯ãAPI ãåŒã³åºãã ãã§ãã
| ããŒã¿å | ãããããã説æ | 察å¿åçš® |
|---|---|---|
| ææ°çŽå®äŸ¡æ Œ (Tick) | ãã®ååŒã®çŸåšã®çŽå®äŸ¡æ Œ | å šåçš® |
| æ¿æ å ±ã®æ·±åºŠ (Order Book) | è²·ã1ãè²·ãNã売ã1ã売ãNã®æ³šæ | äžéšååïŒäžéšã®CFDææ°ããã³åžå Žææ°ã¯é察å¿ïŒ |
| Kã©ã€ã³(K-Line) | 1å/æ¥/é±/æãªã©ã®æéã®OHLCV | å šåçš® |
| ããã K ã©ã€ã³ (Batch-klien) | è€æ°ååã®ææ°2Kã©ã€ã³ãäžåºŠã«ç¢ºèª | å šåçš® |
| æ ªåŒåºæ¬æ å ± | äžæ ªå©çãé åœéãæäŸ¡ç·é¡ãªã© | æ ªåŒã®ã¿ |
| ååŒåæ¢ã»åéæ å ± | ååŒã忢ãããŠããéæã¯ã©ãã§ãã?ãã€ååŒãåéããŸãã? | SSE/NYSE/NASDAQ |
1.2 3ã¹ãããã®å°å ¥æé
ã¹ããã 1: ç»é²ã㊠Token ãååŸãã (5 å)
ã¹ããã2ïŒååã³ãŒããçè§£ããïŒ2åïŒ
ã¹ããã 3: æåã® Hello World ãªã¯ãšã¹ããå®è¡ããŸã (3 å)
ã¹ããã 1: Token ãååŸãã
- ã¡ãŒã«ã¢ãã¬ã¹ãšãã¹ã¯ãŒããå ¥å â ãç»é²ããã¯ãªãã¯ããŸãïŒå€§æåãç¹æ®æåãæ°åã«æ³šæããŠãã ããïŒ
- ç»é²ãæåãããšèªåçã« Dashboard ã«ãžã£ã³ãããŸã â ãAPI ããŒãã§ Token ãèŠã€ããŸã
- æéäžèŠã®ç¡ææ ã§ãã¹ããéå§
ã¹ããã2ïŒååã³ãŒããçè§£ãã
åååŒåçš®ã«ã¯åºæã® code ããããã«ãŒã«ã¯æ¬¡ã®ãšããã§ãã
| åžå Ž | Codeåœ¢åŒ | äŸ | è¿œå æ å ± |
|---|---|---|---|
| Aæ ªïŒæ·±ã»ã³èšŒåžååŒæïŒ | 000000.SZ | 000627.SZ (倩èã°ã«ãŒã) | .SZ = æ·±ã»ã³ |
| Aæ ªïŒäžæµ·èšŒåžååŒæïŒ | 000000.SH | 600416.SH (ç¿é»é»æ°æ ªåŒäŒç€Ÿ) | .SH = äžæµ· |
| éŠæž¯æ ª | 0000.HK | 700.HK (ãã³ã»ã³ãããŒã«ãã£ã³ã°ã¹) | .HK = éŠæž¯ |
| ç±³åœæ ª | AAAA.US | AAPL.US (ã¢ããã«) | .US = ã¢ã¡ãªã«åè¡åœ |
| å€åœçºæ¿ | XXXYYY | EURUSD, USDJPY | 6 æ¡ã®æåãåºæ¬é貚 + 決æžé貚 |
| æå·è³ç£ | XXXUSDT | BTCUSDT, ETHUSDT | é貚+USDT |
| ååã»è²Žéå± | è±èªå | GOLD, SILVER, USOIL | â |
| CFD ææ° | è±èªã®ã³ãŒã | 詳现ã¯ãªã¹ããåç § | åºç¯ãªåžå Žææ°ã§ã¯ãªããããäŸ¡æ Œã¯è¥å¹²ç°ãªãå ŽåããããŸã |
| åºç¯ãªåžå Žææ° | è±èªã®ã³ãŒã | 詳现ã¯ãªã¹ããåç § | â |
ã¹ããã 3: æåã®ãªã¯ãšã¹ããå®è¡ããŸãã
Javajava
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
import java.io.*;
import java.net.*;
public class HelloAllTick {
public static void main(String[] args) throws Exception {
String token = "YOUR_TOKEN_HERE";
String queryJson = "{\"trace\":\"hello123\",\"data\":{"
+ "\"code\":\"700.HK\","
+ "\"kline_type\":1," // 1 = 1åè¶³
+ "\"kline_timestamp_end\":0,"
+ "\"query_kline_num\":2,"
+ "\"adjust_type\":0}}";
String urlStr = "https://quote.alltick.co/quote-stock-b-api/kline"
+ "?token=" + URLEncoder.encode(token, "UTF-8")
+ "&query=" + URLEncoder.encode(queryJson, "UTF-8");
HttpURLConnection conn = (HttpURLConnection) new URL(urlStr).openConnection();
conn.setRequestMethod("GET");
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(conn.getInputStream()))) {
String line;
StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) response.append(line);
System.out.println("ã¬ã¹ãã³ã¹ïŒ" + response);
}
}
}Pythonpython
# AllTick â Real-time Financial Market Data API
# Real-time Forex, Stocks, Crypto, Commodities and Indices market data
import requests
import json
TOKEN = "YOUR_TOKEN_HERE"
query_data = {
"trace": "hello123",
"data": {
"code": "700.HK",
"kline_type": 1, # 1 = 1åè¶³
"kline_timestamp_end": 0, # 0 = ææ°ããéå§
"query_kline_num": 2, # K ã©ã€ã³ã2æ¬ååŸ
"adjust_type": 0
}
}
url = "https://quote.alltick.co/quote-stock-b-api/kline"
params = {
"token": TOKEN,
"query": json.dumps(query_data, separators=(',', ':'))
}
resp = requests.get(url, params=params, headers={"Content-Type": "application/json"})
print("ã¬ã¹ãã³ã¹ïŒ", resp.text)Gogo
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
token := "YOUR_TOKEN_HERE"
queryJSON := `{"trace":"hello123","data":{"code":"700.HK","kline_type":1,"kline_timestamp_end":0,"query_kline_num":2,"adjust_type":0}}`
fullURL := fmt.Sprintf("https://quote.alltick.co/quote-stock-b-api/kline?token=%s&query=%s",
token, url.QueryEscape(queryJSON))
resp, err := http.Get(fullURL)
if err != nil {
fmt.Println("ãªã¯ãšã¹ã倱æ:", err)
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println("ã¬ã¹ãã³ã¹ïŒ", string(body))
}C++ (libcurl ãã€ã³ã¹ããŒã«ãããŠããå¿
èŠããããŸã)
CPPcpp
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
#include <iostream>
#include <string>
#include <curl/curl.h>
static size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* out) {
size_t total = size * nmemb;
out->append((char*)contents, total);
return total;
}
int main() {
CURL* curl = curl_easy_init();
std::string token = "YOUR_TOKEN_HERE";
std::string queryJson = R"({"trace":"hello123","data":{"code":"700.HK","kline_type":1,"kline_timestamp_end":0,"query_kline_num":2,"adjust_type":0}})";
char* encoded = curl_easy_escape(curl, queryJson.c_str(), queryJson.length());
std::string url = "https://quote.alltick.co/quote-stock-b-api/kline?token="
+ token + "&query=" + std::string(encoded);
curl_free(encoded);
std::string response;
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
CURLcode res = curl_easy_perform(curl);
if (res == CURLE_OK)
std::cout << "ã¬ã¹ãã³ã¹ïŒ" << response << std::endl;
else
std::cerr << "ãªã¯ãšã¹ã倱æ: " << curl_easy_strerror(res) << std::endl;
curl_easy_cleanup(curl);
return 0;
}
// ã³ã³ãã€ã«ïŒg++ -std=c++17 hello.cpp -lcurl -o hello1.3 äžè¬æŠå¿µã®æŠèŠ
ãªã¯ãšã¹ã圢åŒïŒãã¹ãŠã® HTTP API å ±éïŒ
ãããã³ã«text
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
// GET ãªã¯ãšã¹ãïŒãã® JSON ã URL ãšã³ã³ãŒãã㊠?query= ãã©ã¡ãŒã¿
{
"trace": "ãªã¯ãšã¹ãããšã®äžæãª IDïŒUUID ãªã©ãçæãæå€§64æåïŒ",
"data": { /* å
·äœçãªãã©ã¡ãŒã¿ã¯å API ãåç
§ */ }
}ã¬ã¹ãã³ã¹åœ¢åŒïŒãã¹ãŠã® API å ±éïŒ
ãããã³ã«text
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
{
"ret": 200, // 200=æåããã®ä»ã¯ãšã©ãŒã³ãŒãïŒPart 5ïŒ
"msg": "ok", // ã¡ãã»ãŒãž
"trace": "ãªã¯ãšã¹ãã® trace ããã®ãŸãŸè¿ã",
"data": { /* ã¬ã¹ãã³ã¹ããŒã¿ */ }
}HTTP ãš WebSocket ã®äœ¿ãåã
| ã·ãŒã³ | äœã䜿ãã | çç± |
|---|---|---|
| K ã©ã€ã³ã宿ååŸããããŸãã¯äŸ¡æ Œãéæç §äŒãã | HTTP REST | ã·ã³ãã«ã§ããã«äœ¿ãã |
| äŸ¡æ Œãšæ¿æ å ±ã®å€æŽããªã¢ã«ã¿ã€ã ã§ããã·ã¥ããå¿ èŠããã | WebSocket | ããã·ã¥ã¢ãŒããäœé å»¶ |
| å±¥æŽããŒã¿ã®åæååŸ | HTTP /kline | 1ãªã¯ãšã¹ãæå€§500æ¬ |
| ææ°ã®ããŒã¿ã§ç¶ç¶çã«æŽæ°ãããŸã | HTTP /batch-kline | å¹ççãªãããåŠç |
| é«é »åºŠã®ãªã¢ã«ã¿ã€ã çžå Ž | WebSocket ç»é² | 賌èªåŸã«èªåçã«ããã·ã¥ãã |
ãšã³ããã€ã³ã URL æ©èŠè¡š
| ããŒã¿å | æ ªåŒ/åºç¯ãªåžå Ž | å€åœçºæ¿ / ä»®æ³é貚 / ã³ã¢ãã£ã㣠/ CFD ã€ã³ããã¯ã¹ |
|---|---|---|
| HTTP ããŒã¹ãã¹ | https://quote.alltick.co/quote-stock-b-api | https://quote.alltick.co/quote-b-api |
| WebSocket ãã¹ | wss://quote.alltick.co/quote-stock-b-ws-api | wss://quote.alltick.co/quote-b-ws-api |
02
ååã³ãŒãæ©èŠè¡š
æ ªåŒ
| åžå Ž | Codeåœ¢åŒ | äŸ |
|---|---|---|
| Aæ ªïŒæ·±ã»ã³èšŒåžååŒæïŒ | çªå·.SZ | 000627.SZ (倩èã°ã«ãŒã) |
| Aæ ªïŒäžæµ·èšŒåžååŒæïŒ | çªå·.SH | 600416.SH (ç¿é»é»æ°æ ªåŒäŒç€Ÿ) |
| éŠæž¯æ ª | çªå·.HK | 700.HK (ãã³ã»ã³ãããŒã«ãã£ã³ã°ã¹) |
| ç±³åœæ ª | æçŽ.ç±³åœ | AAPL.US (ã¢ããã«) |
å€åœçºæ¿ãæå·è³ç£ãååãææ°
| ã«ããŽãª | Codeåœ¢åŒ | äŸ |
|---|---|---|
| å€åœçºæ¿ | XXXYYY | EURUSD, AUDJPY, GBPUSD |
| æå·è³ç£ | XXXUSDT | BTCUSDT, ETHUSDT, ADAUSDT |
| ååã»è²Žéå± | è±èªå | GOLD, SILVER, USOIL, COPPER, NGAS |
| CFD ææ° | è±èªã®ã³ãŒã | 詳现ã¯ååãªã¹ããã芧ãã ããïŒåžå Žææ°ã§ã¯ãªããããäŸ¡æ Œã¯è¥å¹²ç°ãªãå ŽåããããŸãïŒ |
| åºç¯ãªåžå Žææ° | è±èªã®ã³ãŒã | 詳现ã¯ååäžèЧãã芧ãã ãã |
03
HTTP REST API 詳现ã¬ã€ã
3.1 åäžååã® K ã©ã€ã³ç §äŒ â GET /kline
ãªã¯ãšã¹ããã©ã¡ãŒã¿
| ãã©ã¡ãŒã¿ | ã¿ã€ã | å¿ é | 説æãã |
|---|---|---|---|
| code | string | ã¯ã | ãããã¯ãã³ãŒã |
| kline_type | int | ã¯ã | K ã©ã€ã³ ã¿ã€ã: 1=1 åã2=5 åã3=15 åã4=30 åã5=æé Kã6=2 æé (æ ªåŒã¯ãµããŒããããŠããŸãã)ã7=4 æé (æ ªåŒã¯ãµããŒããããŠããŸãã)ã8=æ¥æ¬¡ Kã9=é± Kã10=æ K |
| kline_timestamp_end | int | ã¯ã | éå§ç¹ã®ã¿ã€ã ã¹ã¿ã³ãã0 = ææ°ããéå§ãå€åœçºæ¿è²Žé屿å·åã®ã¿ãã¿ã€ã ã¹ã¿ã³ãã®åãæž¡ãããµããŒãããŠããŸã |
| query_kline_num | int | ã¯ã | ååŸãã K ã©ã€ã³ã®æ¬æ°ïŒæå€§500æ¬ïŒ |
| adjust_type | int | ã¯ã | åæš©å©ã¿ã€ã: 0 = æš©å©èœã¡ (æ ªåŒã«å¯ŸããŠã®ã¿æå¹ãçŸåšã¯ 0 ã®ã¿ããµããŒããããŠããŸã) |
å¿çããŒã¿
ãããã³ã«text
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
{
"ret": 200, "msg": "ok",
"data": {
"code": "700.HK",
"kline_type": 1,
"kline_list": [
{
"timestamp": "1677829200",
"open_price": "136.421",
"close_price": "136.412",
"high_price": "136.422",
"low_price": "136.407",
"volume": "0",
"turnover": "0"
}
]
}
}äŸïŒAppleïŒAAPL.USïŒã®çŽè¿10æ¬ã®æ¥è¶³ãç §äŒ
Javajava
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
String token = "YOUR_TOKEN_HERE";
String queryJson = "{\"trace\":\"java_kline\",\"data\":{"
+ "\"code\":\"AAPL.US\",\"kline_type\":8," // 8 = æ¥è¶³
+ "\"kline_timestamp_end\":0,\"query_kline_num\":10,\"adjust_type\":0}}";
String urlStr = "https://quote.alltick.co/quote-stock-b-api/kline"
+ "?token=" + URLEncoder.encode(token, "UTF-8")
+ "&query=" + URLEncoder.encode(queryJson, "UTF-8");
HttpURLConnection conn = (HttpURLConnection) new URL(urlStr).openConnection();
conn.setRequestMethod("GET");
try (BufferedReader r = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {
StringBuilder sb = new StringBuilder(); String l;
while ((l = r.readLine()) != null) sb.append(l);
System.out.println(sb);
}Pythonpython
# AllTick â Real-time Financial Market Data API
# Real-time Forex, Stocks, Crypto, Commodities and Indices market data
import requests, json
TOKEN = "YOUR_TOKEN_HERE"
query = json.dumps({
"trace": "py_kline", "data": {
"code": "AAPL.US", "kline_type": 8,
"kline_timestamp_end": 0, "query_kline_num": 10, "adjust_type": 0
}
}, separators=(',', ':'))
resp = requests.get("https://quote.alltick.co/quote-stock-b-api/kline",
params={"token": TOKEN, "query": query})
print(resp.json())Gogo
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
q := map[string]interface{}{
"trace": "go_kline",
"data": map[string]interface{}{
"code": "AAPL.US", "kline_type": 8,
"kline_timestamp_end": 0, "query_kline_num": 10, "adjust_type": 0,
},
}
j, _ := json.Marshal(q)
full := fmt.Sprintf("https://quote.alltick.co/quote-stock-b-api/kline?token=%s&query=%s",
"YOUR_TOKEN_HERE", url.QueryEscape(string(j)))
resp, _ := http.Get(full)
defer resp.Body.Close()
b, _ := io.ReadAll(resp.Body)
fmt.Println(string(b))
}C++cpp
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
#include <iostream>
#include <string>
#include <curl/curl.h>
static size_t wcb(void* c, size_t s, size_t n, std::string* o) { o->append((char*)c, s*n); return s*n; }
int main() {
CURL* curl = curl_easy_init();
std::string q = R"({"trace":"cpp_kline","data":{"code":"AAPL.US","kline_type":8,"kline_timestamp_end":0,"query_kline_num":10,"adjust_type":0}})";
char* enc = curl_easy_escape(curl, q.c_str(), q.length());
std::string url = "https://quote.alltick.co/quote-stock-b-api/kline?token=YOUR_TOKEN_HERE&query=" + std::string(enc);
curl_free(enc);
std::string resp;
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, wcb);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &resp);
curl_easy_perform(curl);
std::cout << resp << std::endl;
curl_easy_cleanup(curl);
}3.2 äžæ¬ K ã©ã€ã³ç §äŒ â POST /batch-kline
/kline vs /batch-kline
/kline (GET) | /batch-kline (POST) | |
|---|---|---|
| 1åãããã®ååæ° | 1 | è€æ° (ãã©ã³ããšã«å¶éãç°ãªããŸã) |
| ååããšã® K ã©ã€ã³æ¬æ° | æå€§500æ¬ | æå€§2æ¬ |
| ãã©ã¡ãŒã¿ã®äœçœ® | URL ?query= | BodyïŒJSONïŒ |
| äœ¿çš | åããŠå±¥æŽããŒã¿ãååŸãã | ææ°ã®ããŒã¿ã§ç¶ç¶çã«æŽæ°ãããŸã |
ãã©ã³å¥ /batch-kline ã®æå€§ããŒã¿ã°ã«ãŒãæ°
| ã³ã³ã | æå€§ã°ã«ãŒãæ°ïŒååæ°ÃKã©ã€ã³ã¿ã€ãæ°ïŒ |
|---|---|
| ç¡æ | 5ã»ãã |
| ããŒã¹ | 100ã°ã«ãŒã |
| é«åºŠãª | 200ã°ã«ãŒã |
| ãããã§ãã·ã§ãã« / ãã¹ãŠã®éŠæž¯æ ª / ãã¹ãŠã® A æ ª / ãã¹ãŠã®ç±³åœæ ª | 500ã°ã«ãŒã |
ãªã¯ãšã¹ãäŸ
ãããã³ã«text
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
// POST Body
{
"trace": "batch123",
"data": {
"data_list": [
{ "code": "700.HK", "kline_type": 1, "kline_timestamp_end": 0, "query_kline_num": 1, "adjust_type": 0 },
{ "code": "AAPL.US", "kline_type": 1, "kline_timestamp_end": 0, "query_kline_num": 1, "adjust_type": 0 }
]
}
}Javajava
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
String token = "YOUR_TOKEN_HERE";
String jsonBody = "{"
+ "\"trace\":\"java_batch\",\"data\":{\"data_list\":["
+ "{\"code\":\"700.HK\",\"kline_type\":1,\"kline_timestamp_end\":0,\"query_kline_num\":1,\"adjust_type\":0},"
+ "{\"code\":\"AAPL.US\",\"kline_type\":1,\"kline_timestamp_end\":0,\"query_kline_num\":1,\"adjust_type\":0}"
+ "]}}";
URL url = new URL("https://quote.alltick.co/quote-stock-b-api/batch-kline?token=" + token);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/json");
try (OutputStream os = conn.getOutputStream()) {
os.write(jsonBody.getBytes()); os.flush();
}
try (BufferedReader r = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {
StringBuilder sb = new StringBuilder(); String l;
while ((l = r.readLine()) != null) sb.append(l);
System.out.println(sb);
}Pythonpython
# AllTick â Real-time Financial Market Data API
# Real-time Forex, Stocks, Crypto, Commodities and Indices market data
import requests, json
TOKEN = "YOUR_TOKEN_HERE"
body = {
"trace": "py_batch",
"data": {
"data_list": [
{"code": "700.HK", "kline_type": 1, "kline_timestamp_end": 0, "query_kline_num": 1, "adjust_type": 0},
{"code": "AAPL.US", "kline_type": 1, "kline_timestamp_end": 0, "query_kline_num": 1, "adjust_type": 0}
]
}
}
resp = requests.post(
f"https://quote.alltick.co/quote-stock-b-api/batch-kline?token={TOKEN}",
json=body
)
print(resp.json())Gogo
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
body := []byte(`{"trace":"go_batch","data":{"data_list":[{"code":"700.HK","kline_type":1,"kline_timestamp_end":0,"query_kline_num":1,"adjust_type":0},{"code":"AAPL.US","kline_type":1,"kline_timestamp_end":0,"query_kline_num":1,"adjust_type":0}]}}`)
resp, _ := http.Post(
"https://quote.alltick.co/quote-stock-b-api/batch-kline?token=YOUR_TOKEN_HERE",
"application/json", bytes.NewReader(body))
defer resp.Body.Close()
b, _ := io.ReadAll(resp.Body)
fmt.Println(string(b))
}C++cpp
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
#include <iostream>
#include <string>
#include <curl/curl.h>
static size_t wcb(void* c, size_t s, size_t n, std::string* o) { o->append((char*)c, s*n); return s*n; }
int main() {
CURL* curl = curl_easy_init();
std::string body = R"({"trace":"cpp_batch","data":{"data_list":[{"code":"700.HK","kline_type":1,"kline_timestamp_end":0,"query_kline_num":1,"adjust_type":0},{"code":"AAPL.US","kline_type":1,"kline_timestamp_end":0,"query_kline_num":1,"adjust_type":0}]}})";
struct curl_slist* headers = curl_slist_append(nullptr, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, "https://quote.alltick.co/quote-stock-b-api/batch-kline?token=YOUR_TOKEN_HERE");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, wcb);
std::string resp;
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &resp);
curl_easy_perform(curl);
std::cout << resp << std::endl;
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}3.3 ææ°çŽå®äŸ¡æ Œç §äŒ â GET /trade-tick
ãªã¯ãšã¹ããã©ã¡ãŒã¿ (ã¯ãšãª JSON)
ãããã³ã«text
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
{
"trace": "tick123",
"data": {
"symbol_list": [
{"code": "700.HK"},
{"code": "AAPL.US"}
]
}
}å¿çããŒã¿
ãããã³ã«text
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
{
"ret": 200, "msg": "ok",
"data": {
"tick_list": [{
"code": "700.HK",
"seq": "30841439",
"tick_time": "1677831545217", // ããªç§ã¿ã€ã ã¹ã¿ã³ã
"price": "136.302", // â ææ°äŸ¡æ Œ
"volume": "0",
"turnover": "0",
"trade_direction": 0 // 0=ããã©ã«ã, 1=BUYè²·ã, 2=SELL売ã
}]
}
}Javajava
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
String query = "{\"trace\":\"j_tick\",\"data\":{\"symbol_list\":[{\"code\":\"700.HK\"},{\"code\":\"AAPL.US\"}]}}";
String urlStr = "https://quote.alltick.co/quote-stock-b-api/trade-tick?token="
+ URLEncoder.encode(token, "UTF-8") + "&query=" + URLEncoder.encode(query, "UTF-8");
// GET ãªã¯ãšã¹ã...Pythonpython
# AllTick â Real-time Financial Market Data API
# Real-time Forex, Stocks, Crypto, Commodities and Indices market data
import requests, json
TOKEN = "YOUR_TOKEN_HERE"
query = json.dumps({
"trace": "py_tick", "data": {
"symbol_list": [{"code": "700.HK"}, {"code": "AAPL.US"}]
}
}, separators=(',', ':'))
resp = requests.get("https://quote.alltick.co/quote-stock-b-api/trade-tick",
params={"token": TOKEN, "query": query})
print(resp.json())Gogo
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
q, _ := json.Marshal(map[string]interface{}{
"trace": "go_tick", "data": map[string]interface{}{
"symbol_list": []map[string]string{{"code": "700.HK"}, {"code": "AAPL.US"}},
}})
full := fmt.Sprintf("https://quote.alltick.co/quote-stock-b-api/trade-tick?token=%s&query=%s",
"YOUR_TOKEN_HERE", url.QueryEscape(string(q)))
resp, _ := http.Get(full)
// ...C++cpp
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
std::string q = R"({"trace":"cpp_tick","data":{"symbol_list":[{"code":"700.HK"},{"code":"AAPL.US"}]}})";
char* enc = curl_easy_escape(curl, q.c_str(), q.length());
std::string url = "https://quote.alltick.co/quote-stock-b-api/trade-tick?token=YOUR_TOKEN_HERE&query=" + std::string(enc);
// curl_easy_perform ...3.4 æ¿æ å ±ç §äŒ â GET /depth-tick
åžå Žå¥ã®æ¿æ å ±ã®æ·±åºŠ
| åžå Ž | æå€§ã®ã¢æ° | ç¹å¥ãªæç€º |
|---|---|---|
| çºæ¿/貎éå±/åæ²¹/CFDææ° | 1éã®ã¢ | é |
| æå·è³ç£ | 5éã®ã¢ | é |
| éŠæž¯æ ª | 10 ã®ã¢ | é |
| ç±³åœæ ª | 1éã®ã¢ | é |
| äžæµ·ãšæ·±ã»ã³ã®Aæ ª | 5éã®ã¢ | é |
å¿çäŸ
ãããã³ã«text
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
{
"ret": 200,
"data": {
"tick_list": [{
"code": "700.HK",
"bids": [{"price": "136.42", "volume": "100000"}],
"asks": [{"price": "136.43", "volume": "400000"}]
}]
}
}Javajava
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
String query = "{\"trace\":\"j_depth\",\"data\":{\"symbol_list\":[{\"code\":\"700.HK\"}]}}";
String urlStr = "https://quote.alltick.co/quote-stock-b-api/depth-tick?token="
+ URLEncoder.encode(token, "UTF-8") + "&query=" + URLEncoder.encode(query, "UTF-8");
// GET ãªã¯ãšã¹ã...Pythonpython
# AllTick â Real-time Financial Market Data API
# Real-time Forex, Stocks, Crypto, Commodities and Indices market data
query = json.dumps({"trace": "py_depth", "data": {"symbol_list": [{"code": "700.HK"}]}}, separators=(',', ':'))
resp = requests.get("https://quote.alltick.co/quote-stock-b-api/depth-tick",
params={"token": TOKEN, "query": query})
print(resp.json())Gogo
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
q, _ := json.Marshal(map[string]interface{}{
"trace": "go_depth", "data": map[string]interface{}{
"symbol_list": []map[string]string{{"code": "700.HK"}},
}})
full := fmt.Sprintf("https://quote.alltick.co/quote-stock-b-api/depth-tick?token=%s&query=%s",
"YOUR_TOKEN_HERE", url.QueryEscape(string(q)))
// ...C++cpp
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
std::string q = R"({"trace":"cpp_depth","data":{"symbol_list":[{"code":"700.HK"}]}})";
char* enc = curl_easy_escape(curl, q.c_str(), q.length());
std::string url = "https://quote.alltick.co/quote-stock-b-api/depth-tick?token=YOUR_TOKEN_HERE&query=" + std::string(enc);
// ...3.5 æ ªåŒåºæ¬æ å ± â GET /static_info
å¿çããŒãã£ãŒã«ã
| åé | æå³ |
|---|---|
| name_cn / name_en / name_hk | äžåœèª/è±èª/ç¹äœåå |
| currency | ååŒé貚 |
| eps / eps_ttm | 1æ ªåœããå©ç / 1æ ªåœããå©çïŒTTMïŒ |
| bps | äžæ ªåœããçŽè³ç£ |
| dividend_yield | é åœå©åã |
| lot_size | 1ããããããã®æ ªæ° |
| total_shares / circulating_shares | ç·è³æ¬é / æµéæ ªåŒè³æ¬ |
| exchange / board | ååŒæ/ã»ã¯ã¿ãŒ |
Javajava
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
String query = "{\"trace\":\"j_info\",\"data\":{\"symbol_list\":[{\"code\":\"700.HK\"}]}}";
String urlStr = "https://quote.alltick.co/quote-stock-b-api/static_info?token="
+ URLEncoder.encode(token, "UTF-8") + "&query=" + URLEncoder.encode(query, "UTF-8");
// GET...Pythonpython
# AllTick â Real-time Financial Market Data API
# Real-time Forex, Stocks, Crypto, Commodities and Indices market data
query = json.dumps({"trace":"py_info","data":{"symbol_list":[{"code":"700.HK"}]}}, separators=(',',':'))
resp = requests.get("https://quote.alltick.co/quote-stock-b-api/static_info",
params={"token": TOKEN, "query": query})
data = resp.json()
for stock in data["data"]["static_info_list"]:
print(f"{stock['name_cn']}: EPS={stock['eps']}, é
åœå©åã={stock['dividend_yield']}")Gogo
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
q, _ := json.Marshal(map[string]interface{}{
"trace": "go_info", "data": map[string]interface{}{
"symbol_list": []map[string]string{{"code": "700.HK"}},
}})
full := fmt.Sprintf("https://quote.alltick.co/quote-stock-b-api/static_info?token=%s&query=%s",
"YOUR_TOKEN_HERE", url.QueryEscape(string(q)))
// ...C++cpp
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
std::string q = R"({"trace":"cpp_info","data":{"symbol_list":[{"code":"700.HK"}]}})";
char* enc = curl_easy_escape(curl, q.c_str(), q.length());
std::string url = "https://quote.alltick.co/quote-stock-b-api/static_info?token=YOUR_TOKEN_HERE&query=" + std::string(enc);
// ...3.6 ååŒåæ¢æ å ±ã®ç §äŒ â GET /api/suspension
3ã€ã®ãšã³ããã€ã³ã
| 亀æ | URL | 説æãã |
|---|---|---|
| äžæµ·èšŒåžååŒæ SSE | https://quote.alltick.co/api/suspension/sse | äžæµ·èšŒåžååŒæ |
| ãã¥ãŒãšãŒã¯èšŒåžååŒæ | https://quote.alltick.co/api/suspension/nyse | ãã¥ãŒãšãŒã¯èšŒåžååŒæ |
| ãã¹ãã㯠ãã¹ãã㯠| https://quote.alltick.co/api/suspension/nasdaq | ãã¹ããã¯ååŒæ |
ãã©ã¡ãŒã¿
| ãã©ã¡ãŒã¿ | ã¿ã€ã | å¿ é | 説æãã |
|---|---|---|---|
| token | string | ã¯ã | ããªãã®Token |
| page | int | ããã | ããŒãžçªå· (ãªãã·ã§ã³ã®ããŒãžããŒã·ã§ã³) |
| size | int | ããã | ããŒãžãããã®ãµã€ãº (ãªãã·ã§ã³ã®ããŒãžããŒã·ã§ã³) |
å¿çäŸïŒSSEïŒ
JSONjson
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
{
"success": true,
"timestamp": "2024-01-15T10:30:00",
"totalCount": 125,
"data": [
{
"symbol": "600000",
"symbolName": "äžæµ·æµŠæ±çºå±éè¡",
"haltReason": "éèŠäºé
ã«ããååŒåæ¢",
"haltDate": "2024-01-15",
"haltTime": "09:30:00",
"haltPeriod": "çµæ¥ååŒåæ¢",
"resumeDate": "2024-01-16",
"resumeTime": "09:30:00",
"publishDate": "2024-01-14 18:00:00"
}
]
}Javajava
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
String urlStr = "https://quote.alltick.co/api/suspension/sse?token="
+ URLEncoder.encode(token, "UTF-8") + "&page=1&size=10";
// GET...Pythonpython
# AllTick â Real-time Financial Market Data API
# Real-time Forex, Stocks, Crypto, Commodities and Indices market data
resp = requests.get("https://quote.alltick.co/api/suspension/sse",
params={"token": TOKEN, "page": 1, "size": 10})
print(resp.json())Gogo
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
resp, _ := http.Get("https://quote.alltick.co/api/suspension/sse?token=YOUR_TOKEN_HERE&page=1&size=10")
// ...C++cpp
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
curl_easy_setopt(curl, CURLOPT_URL, "https://quote.alltick.co/api/suspension/sse?token=YOUR_TOKEN_HERE&page=1&size=10");
// ...04
WebSocket API 詳现ã¬ã€ã
WebSocket æ¥ç¶ã¢ãã¬ã¹
| ããŒã¿å | äœæ |
|---|---|
| æ ªåŒ/åºç¯ãªåžå Ž | wss://quote.alltick.co/quote-stock-b-ws-api?token=YOUR_TOKEN_HERE |
| å€åœçºæ¿ / ä»®æ³é貚 / ã³ã¢ãã£ã㣠/ CFD ã€ã³ããã¯ã¹ | wss://quote.alltick.co/quote-b-ws-api?token=YOUR_TOKEN_HERE |
4ã€ã®ãããã³ã« ID
| (cmd_id) ãéä¿¡ããŸã | ãµãŒããŒå¿ç (cmd_id) | ãµãŒããŒããã·ã¥ (cmd_id) | äœ¿çš |
|---|---|---|---|
| 22000 | 22001 | â | å¿ææ° |
| 22002 | 22003 | 22999 | æ¿æ å ±ã«ç»é²ãã |
| 22004 | 22005 | 22998 | çŽå®äŸ¡æ Œã賌èªãã |
| 22006 | 22007 | â | 賌èªãè§£é€ãã |
å ±éã¡ãã»ãŒãžåœ¢åŒ
ãããã³ã«text
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
// ãã¹ãŠã®ãªã¯ãšã¹ã
{
"cmd_id": 22002, // ãããã³ã« ID
"seq_id": 123, // ã·ãŒã±ã³ã¹ IDïŒã¯ã©ã€ã¢ã³ãåŽã§å®çŸ©ïŒ
"trace": "uuid-xxxx", // ãã¬ãŒã¹ IDïŒæå€§64æåïŒ
"data": { /* ... */ }
}
// ãã¹ãŠã®ã¬ã¹ãã³ã¹ãšããã·ã¥
{
"ret": 200,
"msg": "ok",
"cmd_id": 22003,
"seq_id": 123,
"trace": "uuid-xxxx",
"data": { /* ... */ }
}éèŠãªæ³šæäºé
- ãµãã¹ã¯ãªãã·ã§ã³ã®äžæžãã«ãŒã«: åãµãã¹ã¯ãªãã·ã§ã³èŠæ±ã¯ãåã®ãµãã¹ã¯ãªãã·ã§ã³èŠæ±ãäžæžãããŸãã code ã远å ããã«ã¯ããã¹ãŠãåéä¿¡ããå¿ èŠããããŸãã
- 10 ç§ã®ããŒãããŒã: ãµãã¹ã¯ãªãã·ã§ã³ãæåãããšãããŒãããŒãã 10 ç§ããšã«éä¿¡ãããŸãã 30 ç§éããŒãããŒãããªãå Žåãæ¥ç¶ã¯åæãããŸãã
- ãªã¯ãšã¹ãéé: åã WebSocket å ã® 2 ã€ã®ãªã¯ãšã¹ãéã®ééã¯å°ãªããšã 1 ç§ã§ããè€æ°ã® WebSocket éã®ééã¯å°ãªããšã 3 ç§ã§ãã
- èªå忥ç¶: åæåŸã®èªååæ¥ç¶ + 忥ç¶åŸã®èªååãµãã¹ã¯ãªãã·ã§ã³ãå®è£ ããããšã匷ããå§ãããŸãã
- K ã©ã€ã³ã¯ããã·ã¥ããµããŒãããŠããŸãããWebSocket 㯠K ã©ã€ã³ã«å å ¥ã§ãããK ã©ã€ã³ã¯ HTTP ãéããŠã®ã¿ååŸã§ããŸãã
4.1 ããŒãããŒã â cmd_id 22000/22001
ãããã³ã«text
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
// éä¿¡ïŒ22000ïŒ
{"cmd_id":22000, "seq_id":123, "trace":"hb", "data":{}}
// ã¬ã¹ãã³ã¹ïŒ22001ïŒ
{"ret":200, "msg":"ok", "cmd_id":22001, "seq_id":123, "trace":"hb", "data":{}}Java (javax.websocket / Tyrus)
JAVAjava
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
if (session != null && session.isOpen()) {
session.getBasicRemote().sendText(
"{\"cmd_id\":22000,\"seq_id\":123,\"trace\":\"hb\",\"data\":{}}");
}
}
}, 0, 10_000);Python (websocket-client)
PYTHONpython
# AllTick â Real-time Financial Market Data API
# Real-time Forex, Stocks, Crypto, Commodities and Indices market data
import websocket, json, time, threading
ws = websocket.WebSocketApp("wss://quote.alltick.co/quote-stock-b-ws-api?token=YOUR_TOKEN_HERE")
def on_open(ws):
def heartbeat():
while ws.sock and ws.sock.connected:
time.sleep(10)
ws.send(json.dumps({"cmd_id":22000,"seq_id":123,"trace":"hb","data":{}}))
threading.Thread(target=heartbeat, daemon=True).start()
ws.on_open = on_open
ws.run_forever()Go (gorilla/websocket)
GOgo
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
import (
"github.com/gorilla/websocket"
"time"
)
conn, _, _ := websocket.DefaultDialer.Dial("wss://quote.alltick.co/quote-stock-b-ws-api?token=YOUR_TOKEN_HERE", nil)
defer conn.Close()
go func() {
ticker := time.NewTicker(10 * time.Second)
for range ticker.C {
msg := `{"cmd_id":22000,"seq_id":123,"trace":"hb","data":{}}`
conn.WriteMessage(websocket.TextMessage, []byte(msg))
}
}()C++ (IXWebSocket)
CPPcpp
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
#include <ixwebsocket/IXWebSocket.h>
#include <thread>
ix::WebSocket ws;
ws.setUrl("wss://quote.alltick.co/quote-stock-b-ws-api?token=YOUR_TOKEN_HERE");
ws.setOnMessageCallback([](const ix::WebSocketMessagePtr& msg) {
if (msg->type == ix::WebSocketMessageType::Message)
std::cout << "åä¿¡: " << msg->str << std::endl;
});
ws.start();
while (true) {
std::this_thread::sleep_for(std::chrono::seconds(10));
ws.send(R"({"cmd_id":22000,"seq_id":123,"trace":"hb","data":{}})");
}4.2 çŽå®äŸ¡æ Œè³Œèª â cmd_id 22004/22005 â ããã·ã¥ 22998
賌èªã¡ãã»ãŒãž
JSONjson
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
{
"cmd_id": 22004,
"seq_id": 123,
"trace": "sub_trade",
"data": {
"symbol_list": [
{"code": "700.HK"},
{"code": "AAPL.US"}
]
}
}ããã·ã¥ã¡ãã»ãŒãž (cmd_id: 22998)
JSONjson
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
{
"cmd_id": 22998,
"data": {
"code": "700.HK",
"seq": 1605509068000001,
"tick_time": 1605509068,
"price": "651.12",
"volume": "300",
"turnover": "12345.6",
"trade_direction": 1
}
}Javajava
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
String subMsg = "{"
+ "\"cmd_id\":22004,\"seq_id\":123,\"trace\":\"trade_sub\","
+ "\"data\":{\"symbol_list\":[{\"code\":\"700.HK\"},{\"code\":\"AAPL.US\"}]}}";
session.getBasicRemote().sendText(subMsg);Pythonpython
# AllTick â Real-time Financial Market Data API
# Real-time Forex, Stocks, Crypto, Commodities and Indices market data
def on_open(ws):
sub = {
"cmd_id": 22004, "seq_id": 123, "trace": "trade_sub",
"data": {"symbol_list": [{"code": "700.HK"}, {"code": "AAPL.US"}]}
}
ws.send(json.dumps(sub))Gogo
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
sub := `{"cmd_id":22004,"seq_id":123,"trace":"trade_sub","data":{"symbol_list":[{"code":"700.HK"},{"code":"AAPL.US"}]}}`
conn.WriteMessage(websocket.TextMessage, []byte(sub))C++cpp
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
ws.send(R"({"cmd_id":22004,"seq_id":123,"trace":"trade_sub","data":{"symbol_list":[{"code":"700.HK"},{"code":"AAPL.US"}]}})");4.3 æ¿æ å ±è³Œèª â cmd_id 22002/22003 â ããã·ã¥ 22999
賌èªã¡ãã»ãŒãžïŒdepth_level ãã£ãŒã«ãã远å ïŒ
JSONjson
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
{
"cmd_id": 22002,
"seq_id": 123,
"trace": "sub_depth",
"data": {
"symbol_list": [
{"code": "700.HK", "depth_level": 5},
{"code": "AAPL.US", "depth_level": 1}
]
}
}ããã·ã¥ã¡ãã»ãŒãž (cmd_id: 22999)
JSONjson
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
{
"cmd_id": 22999,
"data": {
"code": "700.HK",
"seq": 1605509068000001,
"tick_time": 1605509068,
"bids": [{"price": "9.12", "volume": "1000"}],
"asks": [{"price": "9.13", "volume": "500"}]
}
}Javajava
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
String subMsg = "{"
+ "\"cmd_id\":22002,\"seq_id\":123,\"trace\":\"depth_sub\","
+ "\"data\":{\"symbol_list\":["
+ "{\"code\":\"700.HK\",\"depth_level\":5},"
+ "{\"code\":\"AAPL.US\",\"depth_level\":1}"
+ "]}}";
session.getBasicRemote().sendText(subMsg);Pythonpython
# AllTick â Real-time Financial Market Data API
# Real-time Forex, Stocks, Crypto, Commodities and Indices market data
def on_open(ws):
sub = {
"cmd_id": 22002, "seq_id": 123, "trace": "depth_sub",
"data": {"symbol_list": [
{"code": "700.HK", "depth_level": 5},
{"code": "AAPL.US", "depth_level": 1}
]}
}
ws.send(json.dumps(sub))Gogo
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
sub := `{"cmd_id":22002,"seq_id":123,"trace":"depth_sub","data":{"symbol_list":[{"code":"700.HK","depth_level":5},{"code":"AAPL.US","depth_level":1}]}}`
conn.WriteMessage(websocket.TextMessage, []byte(sub))C++cpp
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
ws.send(R"({"cmd_id":22002,"seq_id":123,"trace":"depth_sub","data":{"symbol_list":[{"code":"700.HK","depth_level":5},{"code":"AAPL.US","depth_level":1}]}})");4.4 賌èªè§£é€ â cmd_id 22006/22007
ãããã³ã«text
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
// éä¿¡ïŒ22006ïŒ
{
"cmd_id": 22006, "seq_id": 123, "trace": "cancel",
"data": { "cancel_type": 0 } // 0=ãã¹ãŠè§£é€, 1=æ¿æ
å ±ã®ã¿è§£é€, 2=çŽå®äŸ¡æ Œã®ã¿è§£é€
}Javajava
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
session.getBasicRemote().sendText(
"{\"cmd_id\":22006,\"seq_id\":123,\"trace\":\"cancel\",\"data\":{\"cancel_type\":0}}");Pythonpython
# AllTick â Real-time Financial Market Data API
# Real-time Forex, Stocks, Crypto, Commodities and Indices market data
ws.send(json.dumps({"cmd_id":22006,"seq_id":123,"trace":"cancel","data":{"cancel_type":0}}))Gogo
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
conn.WriteMessage(websocket.TextMessage, []byte(`{"cmd_id":22006,"seq_id":123,"trace":"cancel","data":{"cancel_type":0}}`))C++cpp
// AllTick â Real-time Financial Market Data API
// Real-time Forex, Stocks, Crypto, Commodities and Indices market data
ws.send(R"({"cmd_id":22006,"seq_id":123,"trace":"cancel","data":{"cancel_type":0}})");05
ãšã©ãŒã³ãŒãæ©èŠè¡š
| ãšã©ãŒã³ãŒã | ãšã©ãŒã¡ãã»ãŒãž | æå³ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ææ¡ |
|---|---|---|
| 200 | ok | æå |
| 400 | request header param invalid | JSON 第 1 å±€ãã©ã¡ãŒã¿ ãšã©ãŒ â ãã¬ãŒã¹ ãã£ãŒã«ããšããŒã¿ ãã£ãŒã«ããååšããå®å šãªæ§é ã«ãªã£ãŠãããã©ããã確èªããŠãã ããã |
| 400 | request data param invalid | ããŒã¿ãã£ãŒã«ãã®å 容ãééã£ãŠãã â ãã©ã¡ãŒã¿ãã€ã³ã¿ãŒãã§ãŒã¹ã®ããã¥ã¡ã³ããšç §åããŠç¢ºèªããŠãã ãã |
| 401 | token invalid | Token ãç¡å¹ â 圢åŒãæ£ãããã©ãããæå¹æéãåããŠããªãã確èªããŠãã ãã |
| 402 | query invalid | GET ãã©ã¡ãŒã¿ ãšã©ãŒ â URL ãšã³ã³ãŒããšç¹æ®æåãšã¹ã±ãŒãã確èªããŠãã ãã |
| 429 | rate limit | ãªãŒããŒã¯ããã¯ããªã¯ãšã¹ã â é »åºŠãäžãããããã©ã³ãã¢ããã°ã¬ãŒãããŠãã ãã |
| 600 | code invalid | ååã³ãŒããç¡å¹ã§ã â URLãã¹ãæ£ãããïŒæ ªåŒãã¹â å€åœçºæ¿ãã¹ïŒãcodeã®å€§æåãšå°æåããªã¹ããšäžèŽããŠããã確èªããŠãã ããã |
| 601 | body empty | POST ãªã¯ãšã¹ãããã£ã空 â /batch-kline ãªã©ã®ã€ã³ã¿ãŒãã§ãŒã¹ããããã£ãæ¬ èœããŠããªããç¢ºèª |
| 603 | token level not enough | ãã©ã³å¶éãè¶ ããŠãã â ååæ°ã/Kã«æžããããè¡æ°ãæžãããããã©ã³ãã¢ããã°ã¬ãŒãããŠãã ãã |
| 604 | code unauthorized | Token ã«ã¯ãã® code ã«ã¢ã¯ã»ã¹ããæš©éããããŸãã â ãµããŒãã«é£çµ¡ããŠãã ãã |
| 605 | too many requests | HTTP APIã®é »åºŠãå¶éãè¶ ããŠãã â é »åºŠãæé©åãããã¢ããã°ã¬ãŒãããŠãã ãã |
| 606 | too many requestsâŠconnection will be closed | WebSocket é »åºŠãå¶éãè¶ ããŠãã â åæããããããæ¥ç¶æ°ãšãªã¯ãšã¹ãééã確èªããŠãã ãã |
06
ã¬ãŒããšå¶éã®æ©èŠè¡š
ãã©ã³å¥ HTTP API é »åºŠäžèЧ
| ã€ã³ã¿ãã§ãŒã¹ | ç¡æ | ããŒã¹ | é«åºŠãª | ãããã§ãã·ã§ãã« / ãã¹ãŠã®éŠæž¯æ ª / ãã¹ãŠã® A æ ª / ãã¹ãŠã®ç±³åœæ ª |
|---|---|---|---|---|
| /kline | 10ç§ããšã«1å | 1ç§éã«1å | 1ç§ããã10å | 1ç§ããã20å |
| /batch-kline | 10ç§ããšã«1å | 3ç§ã«1å | 2ç§ã«1å | 1ç§éã«1å |
| /depth-tick | 10ç§ããšã«1å | 1ç§éã«1å | 1ç§ããã10å | 1ç§ããã20å |
| /trade-tick | 10ç§ããšã«1å | 1ç§éã«1å | 1ç§ããã10å | 1ç§ããã20å |
| /static_info | 10ç§ããšã«1å | 1ç§éã«1å | 1ç§ããã10å | 1ç§ããã20å |
| ãã¹ãŠã®ã€ã³ã¿ãŒãã§ãŒã¹ã®åèš (1 åããã) | 10å | 60å | 600å | 1200å |
| 1 æ¥ãããã®åèšãªã¯ãšã¹ãã®äžé | 1,000 | 86,400 | 864,000 | 1,728,000 |
ãã©ã³å¥ HTTP ãªã¯ãšã¹ãã®æå€§ã³ãŒãæ°
| ã€ã³ã¿ãã§ãŒã¹ | ç¡æ | ããŒã·ãã¯+ | è¿°ã¹ã |
|---|---|---|---|
| /trade-tick | 5 | æšå¥š50ã³ãŒãä»¥äž | GET URL é·ãå¶é |
| /depth-tick | 5 | æšå¥š50ã³ãŒãä»¥äž | WebSocket ã®äœ¿çšããå§ãããŸãã |
| /static_info | 5 | æšå¥š50ã³ãŒãä»¥äž | â |
| /batch-kline | 5ã»ãã | 100ïœ500ã°ã«ãŒã | 1ã°ã«ãŒã = 1åå + 1Kã©ã€ã³ã¿ã€ã |
WebSocket ã®å¶éäºé
| å¶é | ç¡æ | ããŒã¹ | é«åºŠãª | ãããã§ãã·ã§ãã«/ãã¹ãŠã®éŠæž¯æ ª/ãã¹ãŠã®Aæ ª/ãã¹ãŠã®ç±³åœæ ª |
|---|---|---|---|---|
| æ¥ç¶æ° | 1 | 1 | 3 | 10 |
| çŽå®äŸ¡æ Œã®è³Œèªã³ãŒãæ° | 5 | 100 | 200 | 3000 |
| æ¿æ å ±ã®è³Œèªã³ãŒãæ° | 5 | 100 | 200 | 3000 |
| ããŒãããŒãéé | 10ç§ | 10ç§ | 10ç§ | 10ç§ |
| ãªã¯ãšã¹ãéé | 1ç§ä»¥äž | 1ç§ä»¥äž | 1ç§ä»¥äž | 1ç§ä»¥äž |
| è€æ°ã®æ¥ç¶éé | 3ç§ä»¥äž | 3ç§ä»¥äž | 3ç§ä»¥äž | 3ç§ä»¥äž |
07
ãããã質å
äžè¬çãªå°å ¥
Q1: ç¡æãã©ã³ã§ååã§ããïŒ
Q2: ååããµããŒããããŠãããã©ããã¯ã©ã®ããã«ç¢ºèªããŸããïŒ
Q3: ãšã©ãŒ 600ãcode ãç¡å¹ã§ããã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°æ¹æ³ãæããŠãã ããã
Q4: Token ãå ¥æããã«ã¯ã©ãããã°ããã§ããïŒ
K ã©ã€ã³é¢é£
Q5: WebSocket 㯠K ã©ã€ã³ãããã·ã¥ã§ããŸãã?
Q6: K ã©ã€ã³ãå¹ççã«ååŸã»æŽæ°ããã«ã¯ã©ãããã°ããã§ããïŒ
Q7: æ ªåŒã 2 æé足㚠4 æé足㮠K ã©ã€ã³ããµããŒãããŠããªãã®ã¯ãªãã§ãã?
äŸ¡æ Œãšéš°èœç
Q8ïŒéš°èœçã¯ã©ã®ããã«èšç®ããŸããïŒ
- æ¥æ¬¡éš°èœçïŒ
(åœæ¥ã®æ¥è¶³ close_price - åæ¥ã®æ¥è¶³ close_price) / åæ¥ã®æ¥è¶³ close_price à 100% - 24æééš°èœçïŒ WebSocket ã§çŽå®äŸ¡æ Œã賌èªãã24 æéåã®äŸ¡æ Œãä¿åããæ¬¡ã®åŒ
(ææ°äŸ¡æ Œ - 24æéåã®äŸ¡æ Œ) / 24æéåã®äŸ¡æ Œ à 100%ã䜿çšããŸãã
Q9ïŒååŒäžã® close_price ã¯äœã衚ããŸããïŒ
- ååŒæéäžãææ°ã®Kã©ã€ã³ã®
close_priceïŒææ°ã®çŽå®äŸ¡æ Œ - äŒå Žäžãææ°ã®Kã©ã€ã³ã®
close_price= ãã®æ¥ã®çµå€
æ¿æ å ±ãšã¹ãããé«ã»ã¹ãããå®
Q10ïŒã¹ãããé«ãšã¹ãããå®ã¯ã©ã®ããã«å€æããŸããïŒ
- ã¹ãããé«ïŒ
bidsã«ããŒã¿ããããasksã®äŸ¡æ Œãšæ°éããã¹ãŠ 0 - ã¹ãããå®ïŒ
asksã«ããŒã¿ããããbidsã®äŸ¡æ Œãšæ°éããã¹ãŠ 0
Q11: äžå Žå»æ¢ãã©ããã¯ã©ããã£ãŠå€æããã®ã§ããïŒ
Q12ïŒäžéšã®ååã§æ¿æ å ±ã®æ®µæ°ãæå€§å€ããå°ãªãã®ã¯ãªãã§ããïŒ
WebSocket é¢é£
Q13ïŒè³Œèªã³ãŒãã远å ããã«ã¯ã©ãããã°ããã§ããïŒ
Q14ïŒæ¥ç¶ãç¹°ãè¿ãåæãããå Žåã¯ã©ãããã°ããã§ããïŒ
Q15ïŒæ ªåŒãšå€åœçºæ¿ã»æå·è³ç£ã¯åã WebSocket æ¥ç¶ãå ±æã§ããŸããïŒ
ååŒæéãšäŒæ¥
Q16ïŒååŒæéãšäŒå Žæ¥ã¯ã©ãã§ç¢ºèªã§ããŸããïŒ
- äžåœèªãã£ã³ãã«: https://t.me/alltick_cn
- è±èªãã£ã³ãã«: https://t.me/alltick_en
Q17: CFD ææ°ãšåžå Žææ°ã®éãã¯äœã§ãã?
ååŒåæ¢ãšæ°èŠäžå Ž
Q18ïŒååŒåæ¢äžã®éæã¯ã©ã®ããã«ç¢ºèªããŸããïŒ
Q19: æ°ããæ ªåŒãäžå Žããããã©ããã¯ã©ã®ããã«ç¢ºèªããŸããïŒ
æè¡è©³çް
Q20: trace ãã£ãŒã«ãã¯äœã«äœ¿çšããŸããïŒ
Q21ïŒGET ãªã¯ãšã¹ãã® query ãã©ã¡ãŒã¿ã¯ URL ãšã³ã³ãŒããå¿ èŠã§ããïŒ
Q22ïŒè€æ°ã® API ãåæã«ãªã¯ãšã¹ãã§ããŸããïŒ
ãåãåãããšãµããŒã
| ãã£ãã« | äœæ |
|---|---|
| å ¬åŒãµã€ã | https://alltick.co |
| 代æ¿å ¬åŒãŠã§ããµã€ã | https://alltick.io |
| support@alltick.co | |
| Telegram äžåœèªãã£ã³ãã« | https://t.me/alltick_cn |
| Telegram è±èªãã£ã³ãã« | https://t.me/alltick_en |
| GitHub | github.com/AllTick-Official |