
计算方法公开透明,非黑箱。左侧切换分类,接口内通过选项卡查看字段说明、计算方法、返回示例与 Playground;调用前需开通因子模块(factor_module)。 麦蕊智数所有接口均支持 HTTP GET 直接调用,也可通过官方多语言 SDK(Python / JS / Java / Go / C#)调用,鉴权与限流规则完全一致,可按习惯任选。
本页无匹配接口,可尝试上方「全站搜索结果」或更换关键词。
| 参数名称 | 说明 |
|---|---|
| category | 否;valuation/quality/growth/momentum/capital/signal/risk/dividend/scale/sentiment |
| tier | 否;free / plus / pro |
| licence | 用户证书码(路径参数) |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| factor_id | string | 因子唯一 ID,如 pe_ttm |
| name | string | 中文名 |
| category | string | 主题英文标识 |
| category_name | string | 主题中文名 |
| unit | string | 单位 |
| tier | string | 最低套餐 |
| direction | string | lower_better / higher_better / neutral |
| description | string | 一句话说明 |
| operators | array | 筛选运算符 |
| typical_range | string | A 股典型范围 |
| update_freq | string | daily / weekly / quarterly / realtime |
| calc_version | string | 当前计算方法版本 |
本接口不计算行情因子;返回的是元数据。各 factor_id 的公式见对应主题接口「计算方法」及规范 §3.21。
{"code":200,"msg":"success","data":{"list":[{"factor_id":"pe_ttm","name":"市盈率(TTM)","category":"valuation","category_name":"估值","unit":"倍","tier":"free","direction":"lower_better","description":"市盈率TTM","operators":[">","<",">=","<=","=","between"],"typical_range":"5-50","update_freq":"daily","calc_version":"1.0"}]}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/list/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/list/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/list/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/list/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/list/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| licence | 用户证书码(路径参数) |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| category | string | 主题 ID |
| name | string | 主题中文名 |
| count | int | 该主题因子数 |
无。count 来自 factor_meta 统计。
{"code":200,"msg":"success","data":[{"category":"valuation","name":"估值","count":8}]}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/categories/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/categories/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/categories/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/categories/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/categories/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| code | 股票代码,如 600519 |
| licence | 用户证书码(路径参数) |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| code | string | 股票代码,如 600519 |
| name | string | 股票名称 |
| trade_date | string | 因子交易日,YYYYMMDD |
| update_time | string | 服务端计算完成时间,YYYY-MM-DD HH:mm:ss |
| report_period | string | 财务类可选,如 2026Q2 |
| calc_version | string | 口径版本,如 1.0 |
| pe_ttm | number/null | 市盈率(TTM),倍 |
| pe_ttm_rank | int/null | pe_ttm 全市场升序排名(越小越便宜) |
| pb | number/null | 市净率,倍 |
| pb_rank | int/null | pb 升序排名 |
| ps_ttm | number/null | 市销率(TTM),倍 |
| ps_ttm_rank | int/null | ps_ttm 升序排名 |
| pcf_ttm | number/null | 市现率(TTM),倍 |
| pcf_ttm_rank | int/null | pcf_ttm 升序排名 |
| ev_ebitda | number/null | 企业价值倍数(第三步) |
| ev_ebitda_rank | int/null | ev_ebitda 升序排名(第三步) |
| peg | number/null | 市盈增长比 |
| peg_rank | int/null | peg 升序排名 |
| graham_value | number/null | 格雷厄姆内在价值,元 |
| price_vs_graham | number/null | 相对格雷厄姆偏离,% |
| graham_rank | int/null | price_vs_graham 升序排名 |
计算方法(calc_version=1.0) 1. 总市值:total_shares(/hsstock/instrument)× 日终收盘价(前复权日线或 spot,日终统一用收盘价)。 2. pe_ttm:总市值 ÷ 近 4 个单季度归母净利润之和(/hsstock/financial/income)。净利润合计 ≤0 → null,不参与排名。 3. pb:总市值 ÷ 最新一期归母净资产(balance)。净资产 ≤0 → null。 4. ps_ttm:总市值 ÷ 近 4 季营业收入之和。 5. pcf_ttm:总市值 ÷ 近 4 季经营活动现金流净额之和(cashflow)。 6. peg:pe_ttm / max(eps_cagr_3y×100, 0.01);利润复合增速 ≤0 → null。 7. graham_value:sqrt(22.5 × eps_ttm × bvps);EPS 或 BVPS ≤0 → null。 8. price_vs_graham:(close - graham_value) / graham_value × 100。 9. ev_ebitda(第三步):(总市值 + 有息负债 - 货币资金) / EBITDA;有息负债与 EBITDA 来自原料 API /hsstock/finance/valuation_components。第一步可返回 null。
{"code":200,"msg":"success","data":{"code":"600519","name":"贵州茅台","trade_date":"20260722","pe_ttm":28.5,"pe_ttm_rank":120,"pb":8.2,"calc_version":"1.0"}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/valuation/{code}/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/valuation/{code}/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/valuation/{code}/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/valuation/{code}/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/valuation/{code}/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| code | 股票代码,如 600519 |
| licence | 用户证书码(路径参数) |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| code | string | 股票代码,如 600519 |
| name | string | 股票名称 |
| trade_date | string | 因子交易日,YYYYMMDD |
| update_time | string | 服务端计算完成时间,YYYY-MM-DD HH:mm:ss |
| report_period | string | 财务类可选,如 2026Q2 |
| calc_version | string | 口径版本,如 1.0 |
| roe_ttm | number/null | 净资产收益率(TTM),% |
| roe_ttm_rank | int/null | 降序排名 |
| roa_ttm | number/null | 总资产收益率(TTM),% |
| roa_ttm_rank | int/null | 降序排名 |
| gross_margin | number/null | 毛利率,% |
| gross_margin_rank | int/null | 降序排名 |
| net_margin | number/null | 净利率,% |
| net_margin_rank | int/null | 降序排名 |
| debt_ratio | number/null | 资产负债率,% |
| debt_ratio_rank | int/null | 升序排名 |
| current_ratio | number/null | 流动比率 |
| current_ratio_rank | int/null | 降序排名 |
| asset_turnover | number/null | 总资产周转率,次 |
| asset_turnover_rank | int/null | 降序排名 |
| accrual_ratio | number/null | 应计项比率 |
| accrual_ratio_rank | int/null | 升序排名(越低利润质量通常越好) |
计算方法(calc_version=1.0) 1. roe_ttm:归母净利润(TTM) ÷ 平均归母净资产 × 100;平均=(期初+期末)/2。原料:income + balance。 2. roa_ttm:归母净利润(TTM) ÷ 平均总资产 × 100。 3. gross_margin:(营收 - 营业成本) / 营收 × 100(最新报告期)。 4. net_margin:归母净利润 / 营收 × 100。 5. debt_ratio:总负债 / 总资产 × 100。银行保险默认不参与全市场排名(或单独 universe)。 6. current_ratio:流动资产 / 流动负债。 7. asset_turnover:营收(TTM) / 平均总资产。 8. accrual_ratio:(净利润 - 经营现金流) / 总资产(TTM 或最新期,与引擎一致)。
{"code":200,"msg":"success","data":{"code":"600519","roe_ttm":32.1,"gross_margin":91.5,"calc_version":"1.0"}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/quality/{code}/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/quality/{code}/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/quality/{code}/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/quality/{code}/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/quality/{code}/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| code | 股票代码,如 600519 |
| licence | 用户证书码(路径参数) |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| code | string | 股票代码,如 600519 |
| name | string | 股票名称 |
| trade_date | string | 因子交易日,YYYYMMDD |
| update_time | string | 服务端计算完成时间,YYYY-MM-DD HH:mm:ss |
| report_period | string | 财务类可选,如 2026Q2 |
| calc_version | string | 口径版本,如 1.0 |
| rev_yoy | number/null | 营收同比,% |
| rev_yoy_rank | int/null | 降序排名 |
| rev_cagr_3y | number/null | 营收 3 年复合增速,% |
| rev_cagr_3y_rank | int/null | 降序排名 |
| profit_yoy | number/null | 归母净利润同比,% |
| profit_yoy_rank | int/null | 降序排名 |
| profit_cagr_3y | number/null | 利润 3 年复合增速,% |
| profit_cagr_3y_rank | int/null | 降序排名 |
| eps_yoy | number/null | EPS 同比,% |
| eps_yoy_rank | int/null | 降序排名 |
| eps_cagr_3y | number/null | EPS 3 年复合增速,% |
| eps_cagr_3y_rank | int/null | 降序排名 |
| rev_profit_scissors | number/null | 营收利润剪刀差 = rev_yoy - profit_yoy |
计算方法(calc_version=1.0) 1. 同比:(本期 - 去年同期) / abs(去年同期) × 100;去年同期基数为 0 或符号导致无意义 → null。 2. 3 年 CAGR:(本期/三年前)^(1/3) - 1) × 100;历史不足 3 年或分母 ≤0 → null。 3. 原料:/hsstock/financial/income、pershareindex(EPS)。
{"code":200,"msg":"success","data":{"code":"600519","rev_yoy":12.3,"profit_yoy":15.6,"calc_version":"1.0"}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/growth/{code}/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/growth/{code}/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/growth/{code}/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/growth/{code}/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/growth/{code}/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| code | 股票代码,如 600519 |
| licence | 用户证书码(路径参数) |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| code | string | 股票代码,如 600519 |
| name | string | 股票名称 |
| trade_date | string | 因子交易日,YYYYMMDD |
| update_time | string | 服务端计算完成时间,YYYY-MM-DD HH:mm:ss |
| report_period | string | 财务类可选,如 2026Q2 |
| calc_version | string | 口径版本,如 1.0 |
| momentum_5d | number/null | 5 日收益率,% |
| momentum_20d | number/null | 20 日收益率,% |
| momentum_60d | number/null | 60 日收益率,% |
| momentum_120d | number/null | 120 日收益率,% |
| momentum_20d_rank | int/null | momentum_20d 降序排名 |
| rs_20d | number/null | 20 日相对强度(相对沪深300) |
| rs_20d_rank | int/null | 降序排名 |
| high52_distance | number/null | 距 52 周高点,% |
| high52_distance_rank | int/null | 降序排名 |
| ma_deviation | number/null | 相对 MA250 偏离,% |
计算方法(calc_version=1.0) 1. momentum_Nd:(close_today / close_N_trading_days_ago - 1) × 100,前复权日线(/hsstock/history/.../f/ 或引擎等价除权)。停牌日不计入交易日窗口。 2. rs_20d:(1 + mom20/100) / (1 + hs300_mom20/100)。 3. high52_distance:(close / max(high,252交易日) - 1) × 100。 4. ma_deviation:(close / MA250 - 1) × 100。
{"code":200,"msg":"success","data":{"code":"600519","momentum_20d":3.2,"rs_20d":1.05,"calc_version":"1.0"}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/momentum/{code}/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/momentum/{code}/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/momentum/{code}/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/momentum/{code}/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/momentum/{code}/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| code | 股票代码,如 600519 |
| licence | 用户证书码(路径参数) |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| code | string | 股票代码,如 600519 |
| name | string | 股票名称 |
| trade_date | string | 因子交易日,YYYYMMDD |
| update_time | string | 服务端计算完成时间,YYYY-MM-DD HH:mm:ss |
| report_period | string | 财务类可选,如 2026Q2 |
| calc_version | string | 口径版本,如 1.0 |
| north_5d_net | number/null | 北向 5 日净买入,元(第三步) |
| north_20d_net | number/null | 北向 20 日净买入,元(第三步) |
| north_holding_ratio | number/null | 北向持股占流通股,%(第三步) |
| main_5d_net | number/null | 主力 5 日净流入,元 |
| main_20d_net | number/null | 主力 20 日净流入,元 |
| flow_5d_ratio | number/null | 5 日资金流向比 |
| flow_20d_ratio | number/null | 20 日资金流向比 |
| big_order_net_5d | number/null | 5 日特大单净额,元 |
计算方法(calc_version=1.0)
1. main_Nd_net:近 N 日「大单+特大单」净额之和;原料 /hsstock/history/transaction/{code}(字段口径与现网资金流一致)。
2. flow_Nd_ratio:main_Nd_net / 同期成交额合计。
3. big_order_net_5d:近 5 日特大单净额之和。
4. north_*(第三步):对 /hsgt/stock/{code} 日序列求和或取最新持股占比;第一步返回 null。
{"code":200,"msg":"success","data":{"code":"600519","main_5d_net":1.2e8,"flow_5d_ratio":0.03,"north_5d_net":null,"calc_version":"1.0"}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/capital/{code}/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/capital/{code}/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/capital/{code}/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/capital/{code}/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/capital/{code}/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| code | 股票代码,如 600519 |
| licence | 用户证书码(路径参数) |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| code | string | 股票代码,如 600519 |
| name | string | 股票名称 |
| trade_date | string | 因子交易日,YYYYMMDD |
| update_time | string | 服务端计算完成时间,YYYY-MM-DD HH:mm:ss |
| report_period | string | 财务类可选,如 2026Q2 |
| calc_version | string | 口径版本,如 1.0 |
| macd_signal | string | golden_cross / death_cross / bull_divergence / bear_divergence / none |
| ma5_ma20_cross | string | golden / death / long / short |
| ma20_ma60_cross | string | golden / death / long / short |
| kdj_signal | string | oversold / overbought / golden_cross / death_cross / none |
| boll_position | string | upper / middle / lower / breakout_upper / breakout_lower |
| volume_ratio | number/null | 量比 |
| rsi_14 | number/null | 14 日 RSI |
| ma_trend | string | up / down / consolidation |
| boll_squeeze | bool | 布林收口 |
| volume_price_divergence | string | bull_divergence / bear_divergence / none |
计算方法(calc_version=1.0) 原料优先:/hsstock/history/macd|ma|boll|kdj/... 或等价前复权日线自算。 1. macd_signal:DIF 上穿/下穿 DEA → 金叉/死叉;价格新低/新高而 MACD 未确认 → 底/顶背离;否则 none。 2. ma5_ma20_cross / ma20_ma60_cross:今日交叉优先标 golden/death,否则按多空排列 long/short。 3. kdj_signal:K<20 oversold;K>80 overbought;交叉优先;否则 none。 4. boll_position:收盘相对中轨/上下轨位置与突破。 5. volume_ratio:今日成交量 / 近 5 日均量。 6. rsi_14:标准 Wilder RSI(14)。 7. ma_trend:MA5>MA20>MA60 → up;反之为 down;否则 consolidation。 8. boll_squeeze:带宽 < 近 60 日带宽中位数的 50%。 9. volume_price_divergence:价涨量缩 / 价跌量增等规则判定。
{"code":200,"msg":"success","data":{"code":"600519","macd_signal":"golden_cross","rsi_14":55.2,"calc_version":"1.0"}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/signal/{code}/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/signal/{code}/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/signal/{code}/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/signal/{code}/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/signal/{code}/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| code | 股票代码,如 600519 |
| licence | 用户证书码(路径参数) |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| code | string | 股票代码,如 600519 |
| name | string | 股票名称 |
| trade_date | string | 因子交易日,YYYYMMDD |
| update_time | string | 服务端计算完成时间,YYYY-MM-DD HH:mm:ss |
| report_period | string | 财务类可选,如 2026Q2 |
| calc_version | string | 口径版本,如 1.0 |
| beta_252d | number/null | 252 日 Beta(对沪深300) |
| beta_rank | int/null | 升序排名 |
| volatility_20d | number/null | 20 日年化波动率,% |
| volatility_60d | number/null | 60 日年化波动率,% |
| sharpe_252d | number/null | 252 日夏普 |
| sharpe_rank | int/null | 降序排名 |
| max_drawdown_252d | number/null | 252 日最大回撤,% |
| max_drawdown_rank | int/null | 降序排名(越接近 0 越好) |
| var_95 | number/null | 95% VaR(年化表述见公式) |
计算方法(calc_version=1.0) 1. 日收益率序列来自前复权收盘价;基准为沪深300。 2. beta_252d:cov(r_stock, r_hs300) / var(r_hs300),窗口 252。 3. volatility_Nd:stdev(r, N) × sqrt(252) × 100。 4. sharpe_252d:(mean(r)×252 - rf) / (stdev(r)×sqrt(252)),rf 默认 0.025(可配置)。 5. max_drawdown_252d:净值曲线相对前高的最大跌幅 ×100。 6. var_95:近 252 日收益率第 5 百分位 × √252(与产品规范一致)。
{"code":200,"msg":"success","data":{"code":"600519","beta_252d":0.85,"volatility_20d":18.2,"sharpe_252d":1.1,"calc_version":"1.0"}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/risk/{code}/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/risk/{code}/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/risk/{code}/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/risk/{code}/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/risk/{code}/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| code | 股票代码,如 600519 |
| licence | 用户证书码(路径参数) |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| code | string | 股票代码,如 600519 |
| name | string | 股票名称 |
| trade_date | string | 因子交易日,YYYYMMDD |
| update_time | string | 服务端计算完成时间,YYYY-MM-DD HH:mm:ss |
| report_period | string | 财务类可选,如 2026Q2 |
| calc_version | string | 口径版本,如 1.0 |
| dividend_yield | number/null | 股息率,%(第一步试用/第三步正式) |
| dividend_yield_rank | int/null | 降序排名 |
| payout_ratio | number/null | 股利支付率,%(第一步试用/第三步正式) |
| payout_ratio_rank | int/null | 降序排名 |
| dividend_continuous_years | int/null | 连续分红年数(第一步试用/第三步正式) |
| dividend_growth_3y | number/null | 3 年分红复合增速,%(第一步试用/第三步正式) |
| dividend_avg_3y | number/null | 3 年平均股息率,%(第一步试用/第三步正式) |
计算方法(calc_version=1.0)
【第一步(试用)】
1. 原料:/hscp/jnfh/{code} + 现价。
2. dividend_yield:近 12 个月每股现金分红合计 / 现价 ×100。
3. payout_ratio:近 12 个月现金分红总额 / 归母净利润 ×100。
4. dividend_continuous_years:自最近一年向前连续有现金分红的年数;缺年即断档。
5. dividend_growth_3y / dividend_avg_3y:按年度分红额或股息率序列计算;样本不足 → null。
文档须标注:source=hscp_jnfh。
【第三步(正式)】
改用 /hsstock/dividend/events 与 dividend_yearly;升 calc_version,字段含义不变。
{"code":200,"msg":"success","data":{"code":"600519","dividend_yield":1.8,"dividend_continuous_years":10,"calc_version":"1.0"}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/dividend/{code}/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/dividend/{code}/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/dividend/{code}/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/dividend/{code}/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/dividend/{code}/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| code | 股票代码,如 600519 |
| licence | 用户证书码(路径参数) |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| code | string | 股票代码,如 600519 |
| name | string | 股票名称 |
| trade_date | string | 因子交易日,YYYYMMDD |
| update_time | string | 服务端计算完成时间,YYYY-MM-DD HH:mm:ss |
| report_period | string | 财务类可选,如 2026Q2 |
| calc_version | string | 口径版本,如 1.0 |
| total_market_cap | number/null | 总市值,元 |
| float_market_cap | number/null | 流通市值,元 |
| cap_rank | int/null | 总市值降序排名 |
| float_ratio | number/null | 流通比例,% |
| turnover_20d_avg | number/null | 20 日平均换手率,% |
| amihud_20d | number/null | Amihud 流动性 |
| cap_scale | string | 超大盘/大盘/中盘/小盘/微盘 |
计算方法(calc_version=1.0) 1. total_market_cap = 总股本 × 收盘价;float_market_cap = 流通股本 × 收盘价(instrument)。 2. float_ratio = 流通股本 / 总股本 ×100。 3. turnover_20d_avg = 近 20 日换手率均值(日线或 spot 衍生)。 4. amihud_20d = mean(|日收益| / 日成交额, 20)。 5. cap_scale:>2000亿超大盘;500–2000大盘;100–500中盘;30–100小盘;<30微盘。
{"code":200,"msg":"success","data":{"code":"600519","total_market_cap":2.1e12,"cap_scale":"超大盘","calc_version":"1.0"}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/scale/{code}/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/scale/{code}/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/scale/{code}/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/scale/{code}/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/scale/{code}/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| code | 股票代码,如 600519 |
| licence | 用户证书码(路径参数) |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| code | string | 股票代码,如 600519 |
| name | string | 股票名称 |
| trade_date | string | 因子交易日,YYYYMMDD |
| update_time | string | 服务端计算完成时间,YYYY-MM-DD HH:mm:ss |
| report_period | string | 财务类可选,如 2026Q2 |
| calc_version | string | 口径版本,如 1.0 |
| limit_up_count_20d | int/null | 近 20 日涨停次数 |
| limit_down_count_20d | int/null | 近 20 日跌停次数 |
| attention_score | int/null | 关注度 0–100(第三步) |
| attention_rank | int/null | 关注度降序排名(第三步) |
| recent_event | string/null | 近期重要事件类型或 none(第三步) |
| event_date | string/null | 事件日 YYYYMMDD(第三步) |
| event_impact | string/null | positive / negative / neutral(第三步) |
计算方法(calc_version=1.0)
1. limit_up_count_20d / limit_down_count_20d(第一步正式):
- 原料:GET /hsstock/lup/limit/{code}/{licence}
- 取近 20 个交易日:count(dr==1) / count(dr==2)(dr:0无/1涨停/2跌停)。
2. attention_score(第三步):对 /hsstock/attention/{code} 分项加权归一到 0–100。
3. recent_event*(第三步):取 /hsstock/events/{code} 最近一条;影响映射见事件表版本。
{"code":200,"msg":"success","data":{"code":"600519","limit_up_count_20d":0,"limit_down_count_20d":0,"attention_score":null,"calc_version":"1.0"}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/sentiment/{code}/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/sentiment/{code}/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/sentiment/{code}/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/sentiment/{code}/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/sentiment/{code}/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| code | 股票代码,如 600519 |
| licence | 用户证书码(路径参数) |
| fields | 否;逗号分隔字段白名单;不传返回已开通全部 |
| exclude_rank | 否;1=去掉 *_rank 字段 |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| code | string | 股票代码,如 600519 |
| name | string | 股票名称 |
| trade_date | string | 因子交易日,YYYYMMDD |
| update_time | string | 服务端计算完成时间,YYYY-MM-DD HH:mm:ss |
| report_period | string | 财务类可选,如 2026Q2 |
| calc_version | string | 口径版本,如 1.0 |
| valuation | object | 估值主题字段,同估值因子接口 |
| quality | object | 质量主题字段,同质量因子接口 |
| growth | object | 成长主题字段,同成长因子接口 |
| momentum | object | 动量主题字段,同动量因子接口 |
| capital | object | 资金面主题字段,同资金面因子接口 |
| signal | object | 技术信号主题字段,同技术信号因子接口 |
| risk | object | 风险主题字段,同风险因子接口 |
| dividend | object | 分红主题字段,同分红因子接口 |
| scale | object | 规模流动性主题字段,同规模流动性因子接口 |
| sentiment | object | 情绪事件主题字段,同情绪事件因子接口 |
不新增公式;聚合各主题已计算值。各字段公式见对应主题「计算方法」。
{"code":200,"msg":"success","data":{"code":"600519","valuation":{"pe_ttm":28.5},"quality":{"roe_ttm":32.1},"calc_version":"1.0"}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/all/{code}/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/all/{code}/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/all/{code}/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/all/{code}/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/all/{code}/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| licence | 用户证书码(路径参数) |
| codes | 请求体;股票代码数组,最多 50 |
| factor_ids | 请求体;因子 ID 数组,最多 20 |
| trade_date | 请求体;可选,YYYYMMDD,默认最新截面 |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| code | string | 股票代码 |
| name | string | 名称 |
| factors | object | key=factor_id,value=数值或字符串信号 |
按 factor_ids 取已落库截面;公式同各因子定义。
{"code":200,"msg":"success","data":{"list":[{"code":"600519","name":"贵州茅台","factors":{"pe_ttm":28.5,"roe_ttm":32.1}}]}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/batch/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/batch/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/batch/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/batch/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/batch/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| factor_id | 因子 ID,如 roe_ttm |
| licence | 用户证书码(路径参数) |
| order | 否;desc|asc |
| page | 否;页码 |
| page_size | 否;默认 50,最大 200 |
| board | 否;main|star|gem|bj|all |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| rank | int | 名次 |
| code | string | 代码 |
| name | string | 名称 |
| value | number/null | 因子值 |
对当日有效样本按 direction 排序;null 不入榜。
{"code":200,"msg":"success","data":{"list":[{"rank":1,"code":"600519","name":"贵州茅台","value":32.1}],"total":4500}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/rank/{factor_id}/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/rank/{factor_id}/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/rank/{factor_id}/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/rank/{factor_id}/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/rank/{factor_id}/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| factor_id | 因子 ID,如 roe_ttm |
| n | 返回条数,建议 ≤200 |
| licence | 用户证书码(路径参数) |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| rank | int | 名次 |
| code | string | 代码 |
| name | string | 名称 |
| value | number/null | 因子值 |
同排名接口,截取前 N。
{"code":200,"msg":"success","data":{"list":[{"rank":1,"code":"600519","name":"贵州茅台","value":32.1}],"total":20}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/top/{factor_id}/{n}/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/top/{factor_id}/{n}/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/top/{factor_id}/{n}/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/top/{factor_id}/{n}/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/top/{factor_id}/{n}/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| factor_id | 因子 ID,如 pe_ttm |
| code | 股票代码,如 600519 |
| licence | 用户证书码(路径参数) |
| st | 否;开始日 YYYYMMDD |
| et | 否;结束日 YYYYMMDD |
| limit | 否;返回点数上限 |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| trade_date | string | YYYYMMDD |
| value | number/null | 当日因子值 |
读取 factor_value_daily;点值公式与当日截面一致。
{"code":200,"msg":"success","data":{"list":[{"trade_date":"20260722","value":28.5},{"trade_date":"20260721","value":28.8}]}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/history/{factor_id}/{code}/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/history/{factor_id}/{code}/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/history/{factor_id}/{code}/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/history/{factor_id}/{code}/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/history/{factor_id}/{code}/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| factor_id | 因子 ID,如 pe_ttm |
| code | 股票代码,如 600519 |
| licence | 用户证书码(路径参数) |
| period | 否;窗口天数,默认 252 |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| current_value | number/null | 当前值 |
| period | int | 窗口天数 |
| percentile | number/null | 0–100 历史分位 |
| description | string | 白话说明 |
| history_min | number/null | 窗口最小值 |
| history_max | number/null | 窗口最大值 |
| history_median | number/null | 窗口中位数 |
| history_mean | number/null | 窗口均值 |
在近 period 个有效历史值中,计算当前值的经验分位;无效样本不足则 null。
{"code":200,"msg":"success","data":{"current_value":28.5,"period":252,"percentile":45.2,"description":"处于近一年中等偏低分位","history_min":18.0,"history_max":42.0,"history_median":29.0,"history_mean":28.8}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/percentile/{factor_id}/{code}/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/percentile/{factor_id}/{code}/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/percentile/{factor_id}/{code}/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/percentile/{factor_id}/{code}/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/percentile/{factor_id}/{code}/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
| 参数名称 | 说明 |
|---|---|
| licence | 用户证书码(路径参数) |
| conditions | 请求体;条件数组,每项含 factor_id/operator/value |
| order_by | 请求体;可选,排序因子 ID |
| order | 请求体;可选,asc|desc |
| page | 请求体;可选,页码 |
| page_size | 请求体;可选,页大小 |
| fields | 请求体;可选,返回列白名单 |
| trade_date | 请求体;可选,截面日 YYYYMMDD |
| 字段名称 | 数据类型 | 字段说明 |
|---|---|---|
| code | string | 股票代码 |
| name | string | 名称 |
| (fields) | mixed | fields 指定的因子列 |
对各 factor_id 取截面值做条件过滤;不现场重算因子公式。仅允许已上线且客户套餐可见的因子。
{"code":200,"msg":"success","data":{"list":[{"code":"600519","name":"贵州茅台","pe_ttm":28.5,"roe_ttm":32.1}],"total":1}}
选择语言后,上方为 GET 请求示例,下方为官方 SDK 示例(鉴权与限流规则一致)
# pip install mairui 或使用 requests
import requests
LICENCE = "YOUR-LICENCE" # 替换为您的证书
url = 'https://api.mairuiapi.com/factor/screen/{licence}'.replace("YOUR-LICENCE", LICENCE)
resp = requests.get(url, timeout=15)
print(resp.status_code)
print(resp.json())
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
const licence = "YOUR-LICENCE";
const url = 'https://api.mairuiapi.com/factor/screen/{licence}'.replace("YOUR-LICENCE", licence);
const resp = await fetch(url);
console.log(resp.status);
console.log(await resp.json());
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class MairuiDemo {
public static void main(String[] args) throws Exception {
String licence = "YOUR-LICENCE";
String url = "https://api.mairuiapi.com/factor/screen/{licence}".replace("YOUR-LICENCE", licence);
HttpRequest req = HttpRequest.newBuilder(URI.create(url)).GET().build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.statusCode());
System.out.println(resp.body());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
licence := "YOUR-LICENCE"
url := strings.ReplaceAll('https://api.mairuiapi.com/factor/screen/{licence}', "YOUR-LICENCE", licence)
resp, err := http.Get(url)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var licence = "YOUR-LICENCE";
var url = "https://api.mairuiapi.com/factor/screen/{licence}".Replace("YOUR-LICENCE", licence);
using var http = new HttpClient();
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
当前接口在官方多语言 SDK(v1.0.0;C# 包 v1.1.0)中暂无专用方法封装,请使用本页「HTTP 请求」方式调用;鉴权与限流规则与 SDK 完全一致。