一、基本说明
1. API 概述
- API 地址:
https://swtool.com/wp-json/swtool/v1/query/
- 请求方式:
GET
- 认证方式: 通过
api_key
进行认证 - 数据格式:
JSON
- 支持18种以上语言API:提供语言包括但不限于MT4、MT5、麦语言、Python、C、C++、PHP、Java、shell等等。
2. API 密钥生成
点击这里生成:https://swtool.com/test_tool
生成后,用户可以在个人页面查看和管理API密钥。
3. 可调用的市场配置
以下是支持的市场及其配置:
python
markets = [ {'prefix': 'gold', 'allow_short': True, 'leverage': 1}, # 黄金市场 {'prefix': 'forex', 'allow_short': True, 'leverage': 10}, # 外汇市场 {'prefix': 'cnindex', 'allow_short': False}, # 指数市场 {'prefix': 'cnstock', 'allow_short': False}, # A 股市场 {'prefix': 'cbond', 'allow_short': False}, # 可转债市场 {'prefix': 'futures', 'allow_short': True, 'leverage': 5}, # 期货市场 {'prefix': 'fund', 'allow_short': False}, # 基金市场 {'prefix': 'cnoption', 'allow_short': True, 'leverage': 10}, # 期权市场 ]
4. API 参数说明
参数名 | 必填 | 说明 |
---|---|---|
api_key | 是 | 用户的API密钥,用于认证和权限控制。 |
market | 是 | 市场名称(如 gold , forex , cnindex 等)。 |
ts_code | 是 | 合约代码(如 XAUUSD .fxcm, EURUSD .fxcm, 000001.SH 等)。 |
start_date | 否 | 查询的开始日期(格式:YYYY-MM-DD ),仅对 market 表查询有效。 |
end_date | 否 | 查询的结束日期(格式:YYYY-MM-DD ),仅对 market 表查询有效。 |
table_type | 是 | 查询的表类型,可选值为 market 或 basic 。 |
5. HTTP 请求示例
查询 market
表数据
GET https://swtool.com/wp-json/swtool/v1/query/?api_key=YOUR_API_KEY&market=gold&ts_code=XAUUSD.fxcm&start_date=2023-01-01&end_date=2023-12-31&table_type=market
查询 basic
表数据
GET https://swtool.com/wp-json/swtool/v1/query/?api_key=YOUR_API_KEY&market=gold&ts_code=XAUUSD.fxcm&table_type=basic
测试工具
二、各语言接口说明
MT4 (MQL4) 示例
以下是一个简单的 MQL4 脚本,用于向 API 发送 HTTP GET 请求并获取数据。
mql4
//+------------------------------------------------------------------+
//| Script to send HTTP GET request in MT4 |
//+------------------------------------------------------------------+
void OnStart()
{
string url = "https://swtool.com/wp-json/swtool/v1/query/";
string api_key = "YOUR_API_KEY";
string market = "forex";
string ts_code = "XAUUSD.fxcm";
string start_date = "2023-01-01";
string end_date = "2023-12-31";
string table_type = "market";
// 构造请求参数
string params = StringFormat("api_key=%s&market=%s&ts_code=%s&start_date=%s&end_date=%s&table_type=%s",
api_key, market, ts_code, start_date, end_date, table_type);
// 发送 HTTP GET 请求
string headers;
char post[], result[];
string result_str;
int res = WebRequest("GET", url + "?" + params, headers, 5000, post, result, headers);
// 检查请求是否成功
if (res == 200) // HTTP 状态码 200 表示成功
{
result_str = CharArrayToString(result);
Print("API Response: ", result_str);
}
else
{
Print("Error: HTTP request failed with code ", res);
}
}
说明:
WebRequest
函数:- 用于发送 HTTP 请求。
- 需要启用
Allow WebRequest
选项(在 MT4 设置中)。
- 参数构造:
- 使用
StringFormat
构造查询字符串。
- 使用
- 响应处理:
- 如果请求成功(
res == 200
),将响应数据转换为字符串并打印。
- 如果请求成功(
MT5 (MQL5) 示例
以下是一个简单的 MQL5 脚本,用于向 API 发送 HTTP GET 请求并获取数据。
mql5
//+------------------------------------------------------------------+
//| Script to send HTTP GET request in MT5 |
//+------------------------------------------------------------------+
void OnStart()
{
string url = "https://swtool.com/wp-json/swtool/v1/query/";
string api_key = "YOUR_API_KEY";
string market = "forex";
string ts_code = "XAUUSD.fxcm";
string start_date = "2023-01-01";
string end_date = "2023-12-31";
string table_type = "market";
// 构造请求参数
string params = StringFormat("api_key=%s&market=%s&ts_code=%s&start_date=%s&end_date=%s&table_type=%s",
api_key, market, ts_code, start_date, end_date, table_type);
// 发送 HTTP GET 请求
string headers;
char result[];
string result_str;
int res = WebRequest("GET", url + "?" + params, NULL, 5000, result, headers);
// 检查请求是否成功
if (res == 200) // HTTP 状态码 200 表示成功
{
result_str = CharArrayToString(result);
Print("API Response: ", result_str);
}
else
{
Print("Error: HTTP request failed with code ", res);
}
}
说明:
WebRequest
函数:- 与 MT4 类似,但 MQL5 的
WebRequest
函数参数略有不同。 - 需要启用
Allow WebRequest
选项(在 MT5 设置中)。
- 与 MT4 类似,但 MQL5 的
- 参数构造:
- 使用
StringFormat
构造查询字符串。
- 使用
- 响应处理:
- 如果请求成功(
res == 200
),将响应数据转换为字符串并打印。
- 如果请求成功(
金字塔(麦语言)示例
以下是一个简单的麦语言脚本,用于向 API 发送 HTTP GET 请求并获取数据。
麦语言
// 定义API地址和参数
API_URL = "https://swtool.com/wp-json/swtool/v1/query/";
API_KEY = "YOUR_API_KEY";
MARKET = "forex";
TS_CODE = "XAUUSD.fxcm";
START_DATE = "2023-01-01";
END_DATE = "2023-12-31";
TABLE_TYPE = "market";
// 构造请求参数
PARAMS = "api_key=" + API_KEY + "&market=" + MARKET + "&ts_code=" + TS_CODE + "&start_date=" + START_DATE + "&end_date=" + END_DATE + "&table_type=" + TABLE_TYPE;
// 发送HTTP GET请求
RESPONSE = HTTPGET(API_URL + "?" + PARAMS);
// 检查请求是否成功
IF (STRFIND(RESPONSE, "\"status\":\"success\"") > 0) THEN
BEGIN
PRINT("API请求成功!");
PRINT("API响应数据:", RESPONSE);
END
ELSE
BEGIN
PRINT("API请求失败!");
PRINT("错误信息:", RESPONSE);
END;
代码说明
HTTPGET
函数:- 用于发送 HTTP GET 请求。
- 返回 API 的响应数据(字符串格式)。
- 参数构造:
- 使用字符串拼接构造查询参数。
- 响应处理:
- 使用
STRFIND
函数检查响应中是否包含"status":"success"
,以判断请求是否成功。 - 如果成功,打印响应数据;否则,打印错误信息。
- 使用
Python
import requests
# API 配置
api_url = "https://swtool.com/wp-json/swtool/v1/query/"
api_key = "YOUR_API_KEY"
market = "forex"
ts_code = "XAUUSD.fxcm"
start_date = "2023-01-01"
end_date = "2023-12-31"
table_type = "market" # 或 "basic"
# 构造请求参数
params = {
"api_key": api_key,
"market": market,
"ts_code": ts_code,
"start_date": start_date,
"end_date": end_date,
"table_type": table_type
}
# 发送请求
response = requests.get(api_url, params=params)
# 处理响应
if response.status_code == 200:
data = response.json()
print(data)
else:
print(f"Error: {response.status_code}, {response.text}")
C 语言
#include <stdio.h>
#include <curl/curl.h>
int main(void) {
CURL *curl;
CURLcode res;
// API 配置
char *api_url = "https://swtool.com/wp-json/swtool/v1/query/";
char *api_key = "YOUR_API_KEY";
char *market = "forex";
char *ts_code = "XAUUSD.fxcm";
char *start_date = "2023-01-01";
char *end_date = "2023-12-31";
char *table_type = "market"; // 或 "basic"
// 构造请求URL
char url[512];
snprintf(url, sizeof(url), "%s?api_key=%s&market=%s&ts_code=%s&start_date=%s&end_date=%s&table_type=%s",
api_url, api_key, market, ts_code, start_date, end_date, table_type);
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, url);
// 发送请求
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
curl_easy_cleanup(curl);
}
return 0;
}
PHP
<?php
// API 配置
$api_url = "https://swtool.com/wp-json/swtool/v1/query/";
$api_key = "YOUR_API_KEY";
$market = "forex";
$ts_code = "XAUUSD.fxcm";
$start_date = "2023-01-01";
$end_date = "2023-12-31";
$table_type = "market"; // 或 "basic"
// 构造请求URL
$url = $api_url . "?api_key=" . $api_key . "&market=" . $market . "&ts_code=" . $ts_code . "&start_date=" . $start_date . "&end_date=" . $end_date . "&table_type=" . $table_type;
// 发送请求
$response = file_get_contents($url);
// 处理响应
if ($response !== FALSE) {
$data = json_decode($response, true);
print_r($data);
} else {
echo "Error: Unable to fetch data.";
}
?>
MATLAB
% API 配置
api_url = 'https://swtool.com/wp-json/swtool/v1/query/';
api_key = 'YOUR_API_KEY';
market = 'forex';
ts_code = 'XAUUSD.fxcm';
start_date = '2023-01-01';
end_date = '2023-12-31';
table_type = 'market'; % 或 'basic'
% 构造请求URL
url = sprintf('%s?api_key=%s&market=%s&ts_code=%s&start_date=%s&end_date=%s&table_type=%s', ...
api_url, api_key, market, ts_code, start_date, end_date, table_type);
% 发送请求
options = weboptions('ContentType', 'json');
response = webread(url, options);
% 处理响应
disp(response);
Java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class Main {
public static void main(String[] args) {
try {
// API 配置
String apiUrl = "https://swtool.com/wp-json/swtool/v1/query/";
String apiKey = "YOUR_API_KEY";
String market = "forex";
String tsCode = "XAUUSD.fxcm";
String startDate = "2023-01-01";
String endDate = "2023-12-31";
String tableType = "market"; // 或 "basic"
// 构造请求URL
String urlString = String.format("%s?api_key=%s&market=%s&ts_code=%s&start_date=%s&end_date=%s&table_type=%s",
apiUrl, apiKey, market, tsCode, startDate, endDate, tableType);
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
// 发送请求
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuilder content = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
conn.disconnect();
// 处理响应
System.out.println(content.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
R 语言
# 加载必要的库
library(httr)
# API 配置
api_url <- "https://swtool.com/wp-json/swtool/v1/query/"
api_key <- "YOUR_API_KEY"
market <- "forex"
ts_code <- "XAUUSD.fxcm"
start_date <- "2023-01-01"
end_date <- "2023-12-31"
table_type <- "market" # 或 "basic"
# 构造请求参数
params <- list(
api_key = api_key,
market = market,
ts_code = ts_code,
start_date = start_date,
end_date = end_date,
table_type = table_type
)
# 发送请求
response <- GET(api_url, query = params)
# 处理响应
if (status_code(response) == 200) {
data <- content(response, "parsed")
print(data)
} else {
cat("Error:", status_code(response), content(response, "text"), "\n")
}
易语言
.版本 2
.子程序 调用API
.局部变量 api_url, 文本型
.局部变量 api_key, 文本型
.局部变量 market, 文本型
.局部变量 ts_code, 文本型
.局部变量 start_date, 文本型
.局部变量 end_date, 文本型
.局部变量 table_type, 文本型
.局部变量 请求URL, 文本型
.局部变量 响应文本, 文本型
api_url = "https://swtool.com/wp-json/swtool/v1/query/"
api_key = "YOUR_API_KEY"
market = "forex"
ts_code = "XAUUSD.fxcm"
start_date = "2023-01-01"
end_date = "2023-12-31"
table_type = "market" ' 或 "basic"
' 构造请求URL
请求URL = api_url + "?api_key=" + api_key + "&market=" + market + "&ts_code=" + ts_code + "&start_date=" + start_date + "&end_date=" + end_date + "&table_type=" + table_type
' 发送请求
响应文本 = HTTP读文件(请求URL)
' 处理响应
输出调试文本(响应文本)
Go 语言
go
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
// API 配置
apiUrl := "https://swtool.com/wp-json/swtool/v1/query/"
apiKey := "YOUR_API_KEY"
market := "forex"
tsCode := "XAUUSD.fxcm"
startDate := "2023-01-01"
endDate := "2023-12-31"
tableType := "market" // 或 "basic"
// 构造请求URL
url := fmt.Sprintf("%s?api_key=%s&market=%s&ts_code=%s&start_date=%s&end_date=%s&table_type=%s",
apiUrl, apiKey, market, tsCode, startDate, endDate, tableType)
// 发送请求
resp, err := http.Get(url)
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
// 处理响应
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading response:", err)
return
}
fmt.Println(string(body))
}
Ruby
require 'net/http'
require 'uri'
# API 配置
api_url = "https://swtool.com/wp-json/swtool/v1/query/"
api_key = "YOUR_API_KEY"
market = "forex"
ts_code = "XAUUSD.fxcm"
start_date = "2023-01-01"
end_date = "2023-12-31"
table_type = "market" # 或 "basic"
# 构造请求URL
uri = URI(api_url)
params = {
api_key: api_key,
market: market,
ts_code: ts_code,
start_date: start_date,
end_date: end_date,
table_type: table_type
}
uri.query = URI.encode_www_form(params)
# 发送请求
response = Net::HTTP.get_response(uri)
# 处理响应
if response.is_a?(Net::HTTPSuccess)
data = response.body
puts data
else
puts "Error: #{response.code}, #{response.message}"
end
Swift
import Foundation
// API 配置
let apiUrl = "https://swtool.com/wp-json/swtool/v1/query/"
let apiKey = "YOUR_API_KEY"
let market = "forex"
let tsCode = "XAUUSD.fxcm"
let startDate = "2023-01-01"
let endDate = "2023-12-31"
let tableType = "market" // 或 "basic"
// 构造请求URL
var components = URLComponents(string: apiUrl)!
components.queryItems = [
URLQueryItem(name: "api_key", value: apiKey),
URLQueryItem(name: "market", value: market),
URLQueryItem(name: "ts_code", value: tsCode),
URLQueryItem(name: "start_date", value: startDate),
URLQueryItem(name: "end_date", value: endDate),
URLQueryItem(name: "table_type", value: tableType)
]
// 发送请求
let task = URLSession.shared.dataTask(with: components.url!) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data {
print(String(data: data, encoding: .utf8)!)
}
}
task.resume()
Kotlin
import java.net.URL
fun main() {
// API 配置
val apiUrl = "https://swtool.com/wp-json/swtool/v1/query/"
val apiKey = "YOUR_API_KEY"
val market = "forex"
val tsCode = "XAUUSD.fxcm"
val startDate = "2023-01-01"
val endDate = "2023-12-31"
val tableType = "market" // 或 "basic"
// 构造请求URL
val url = "$apiUrl?api_key=$apiKey&market=$market&ts_code=$tsCode&start_date=$startDate&end_date=$endDate&table_type=$tableType"
// 发送请求
val response = URL(url).readText()
println(response)
}
TypeScript
import axios from 'axios';
// API 配置
const apiUrl = 'https://swtool.com/wp-json/swtool/v1/query/';
const apiKey = 'YOUR_API_KEY';
const market = 'forex';
const tsCode = 'XAUUSD.fxcm';
const startDate = '2023-01-01';
const endDate = '2023-12-31';
const tableType = 'market'; // 或 'basic'
// 发送请求
axios.get(apiUrl, {
params: {
api_key: apiKey,
market: market,
ts_code: tsCode,
start_date: startDate,
end_date: endDate,
table_type: tableType
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('Error:', error.response?.data || error.message);
});
Shell
#!/bin/bash
# API 配置
API_URL="https://swtool.com/wp-json/swtool/v1/query/"
API_KEY="YOUR_API_KEY"
MARKET="forex"
TS_CODE="XAUUSD.fxcm"
START_DATE="2023-01-01"
END_DATE="2023-12-31"
TABLE_TYPE="market" # 或 "basic"
# 构造请求URL
URL="${API_URL}?api_key=${API_KEY}&market=${MARKET}&ts_code=${TS_CODE}&start_date=${START_DATE}&end_date=${END_DATE}&table_type=${TABLE_TYPE}"
# 发送请求
curl -s "$URL"
Perl
use strict;
use warnings;
use LWP::UserAgent;
# API 配置
my $api_url = "https://swtool.com/wp-json/swtool/v1/query/";
my $api_key = "YOUR_API_KEY";
my $market = "forex";
my $ts_code = "XAUUSD.fxcm";
my $start_date = "2023-01-01";
my $end_date = "2023-12-31";
my $table_type = "market"; # 或 "basic"
# 构造请求URL
my $url = "$api_url?api_key=$api_key&market=$market&ts_code=$ts_code&start_date=$start_date&end_date=$end_date&table_type=$table_type";
# 发送请求
my $ua = LWP::UserAgent->new;
my $response = $ua->get($url);
# 处理响应
if ($response->is_success) {
print $response->decoded_content;
} else {
die "Error: " . $response->status_line;
}
Rust
use reqwest;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// API 配置
let api_url = "https://swtool.com/wp-json/swtool/v1/query/";
let api_key = "YOUR_API_KEY";
let market = "forex";
let ts_code = "XAUUSD.fxcm";
let start_date = "2023-01-01";
let end_date = "2023-12-31";
let table_type = "market"; // 或 "basic"
// 构造请求URL
let url = format!(
"{}?api_key={}&market={}&ts_code={}&start_date={}&end_date={}&table_type={}",
api_url, api_key, market, ts_code, start_date, end_date, table_type
);
// 发送请求
let response = reqwest::get(&url).await?;
let body = response.text().await?;
println!("{}", body);
Ok(())
}
三、返回数据说明
1. 返回数据格式
API 返回的数据为 JSON 格式,示例如下:
market
表查询结果
json
[ { "ts_code": "XAUUSD", "trade_date": "2023-01-01", "open": 1800.50, "high": 1810.20, "low": 1795.30, "close": 1805.10 }, ... ]
basic
表查询结果
json
[ { "ts_code": "XAUUSD", "name": "Gold Spot", "exchange": "OTC", "currency": "USD" }, ... ]
2. 错误码说明
错误码 | 说明 |
---|---|
400 | 缺少必要参数或参数格式错误。 |
401 | 无效的API密钥。 |
403 | 用户没有有效的VIP级别。 |
404 | 未找到符合条件的数据。 |
429 | API调用次数超出限制。 |
通过以上文档,用户可以轻松集成API,并根据VIP级别调用市场数据。