小果量化数据助手 Skill
一、概述与核心价值
小果量化数据API是一个功能强大的量化数据接口,专为量化投资研究者设计。它解决了传统数据获取方式中数据清洗、因子计算耗时耗力的问题,将原始行情、技术指标、财务数据、Alpha因子、主力资金流等数百种因子通过统一接口直接输出,让研究者能够专注于策略研发而非数据搬运。
核心优势:
- 🚀 开箱即用:无需本地安装数据库,无需编写复杂的数据清洗代码
- 📊 因子丰富:涵盖价格因子、技术指标(MACD/KDJ/RSI/布林带等)、191个Alpha因子、主力资金指标、智能交易信号等
- 💰 财务全面:支持资产负债表、利润表、现金流量表、估值、成长/盈利/营运/偿债能力等9大类财务数据
- 📈 组合分析:内置协方差矩阵、相关性矩阵、投资组合优化(均值-方差/风险平价)及完整绩效归因
- ⏱️ 分钟数据:支持5/15/30/60分钟K线,满足日内策略需求
二、触发关键词
当用户的问题或指令中包含以下关键词时,应优先调用本Skill:
| 类别 | 关键词 | | :--- | :--- | | 平台/产品 | 小果、xg、xg_quant、小果量化、小果数据 | | 数据获取 | 获取行情、历史数据、K线数据、日线数据、分钟数据、实时数据 | | 因子数据 | 因子数据、技术指标、Alpha因子、Alpha001、MACD、KDJ、RSI、布林带、均线、主力资金、庄家指标、智能交易信号 | | 财务数据 | 财务数据、资产负债表、利润表、现金流量表、估值、市盈率、市净率、ROE、成长能力、盈利能力、偿债能力 | | 组合分析 | 投资组合、相关性、协方差、组合优化、夏普比率、最大回撤、绩效分析、多标的分析 | | 代码生成 | 写代码、生成策略、Python代码、量化代码、数据获取代码 |
一、介绍
小果量化数据API是一个基于量化数据接口,提供股票历史数据、因子数据、财务数据以及多种量化策略回测功能。 主要功能 📊 历史行情数据获取 📈 因子数据提取 💰 财务数据查询 更多数据在更新中
安装客户端
参考教程https://gitcode.com/qq_50882340/xg_quant_data
用户操作
1获取用户信息
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例49:获取用户信息
# ============================================================
"""
参数说明:
user: str = '' - 用户名称
返回数据:
username - 用户名
expiry - 账户到期时间
days_until_expiry - 剩余天数
expiry_warning - 是否即将到期
"""
print("\n" + "=" * 60)
print("📊 获取用户信息")
print("=" * 60)
result = client.get_user_info()
print("用户信息:")
print(result)
2检查授权码有效性
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例50:检查授权码有效性
# ============================================================
"""
参数说明:
user: str = '小果' - 用户名称
返回数据:
status - 状态(success/failed)
message - 消息
user_info - 用户信息
"""
print("\n" + "=" * 60)
print("📊 检查授权码有效性")
print("=" * 60)
result = client.check_password_is_av_user()
print("授权码检查结果:")
print(result)
# 二、使用教程
## 1. 安装依赖并初始化
```python
# ============================================================
# 完整示例1:初始化客户端
# ============================================================
"""
参数说明:
url: str = "1服务器地址" - 服务器地址
port: int = 8888 - 服务器端口
user: str = "" - 用户名
password: str = "" - 密码
auth_code: str = "" - 授权码
"""
import requests
import json
import pandas as pd
import numpy as np
from typing import Optional, Dict, Any, List, Union
from datetime import datetime
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
print("✅ 客户端初始化成功!")
print(f"📡 服务器地址: http://1服务器地址:8888")
2. 获取股票历史行情数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例2:获取历史行情数据
# ============================================================
"""
参数说明:
stock: str = '600031.SH' - 股票代码,格式:代码.市场(SH/SZ)
start_date: str = '20200101' - 开始日期,格式YYYYMMDD
end_date: str = '20261231' - 结束日期,格式YYYYMMDD
返回字段:
date - 交易日期
open - 开盘价
high - 最高价
low - 最低价
close - 收盘价
volume - 成交量
amount - 成交金额
zdf - 涨跌幅
pct_chg - 百分比变化
"""
print("\n" + "=" * 60)
print("📊 获取历史行情数据")
print("=" * 60)
# 获取单只股票历史数据
result = client.get_stock_hist_data(
stock='513100.SH', # 平安银行
start_date='20240101',
end_date='20500101'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
print(f"\n数据列: {df.columns.tolist()}")
3读取ETF基金历史行情数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例2:获取历史行情数据
# ============================================================
"""
参数说明:
stock: str = '513100.SH' - 股票代码,格式:代码.市场(SH/SZ)
start_date: str = '20200101' - 开始日期,格式YYYYMMDD
end_date: str = '20261231' - 结束日期,格式YYYYMMDD
返回字段:
date - 交易日期
open - 开盘价
high - 最高价
low - 最低价
close - 收盘价
volume - 成交量
amount - 成交金额
zdf - 涨跌幅
pct_chg - 百分比变化
"""
print("\n" + "=" * 60)
print("📊 获取历史行情数据")
print("=" * 60)
# 获取单只股票历史数据
result = client.get_stock_hist_data(
stock='513100.SH', # 平安银行
start_date='20240101',
end_date='20500101'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
print(f"\n数据列: {df.columns.tolist()}")
4读取可转债历史行情数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例2:获取历史行情数据
# ============================================================
"""
参数说明:
stock: str = '513100.SH' - 股票代码,格式:代码.市场(SH/SZ)
start_date: str = '20200101' - 开始日期,格式YYYYMMDD
end_date: str = '20261231' - 结束日期,格式YYYYMMDD
返回字段:
date - 交易日期
open - 开盘价
high - 最高价
low - 最低价
close - 收盘价
volume - 成交量
amount - 成交金额
zdf - 涨跌幅
pct_chg - 百分比变化
"""
print("\n" + "=" * 60)
print("📊 获取历史行情数据")
print("=" * 60)
# 获取单只股票历史数据
result = client.get_stock_hist_data(
stock='128136.SZ',
start_date='20240101',
end_date='20500101'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
print(f"\n数据列: {df.columns.tolist()}")
5. 获取股票因子数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例3:获取因子数据
# ============================================================
"""
参数说明:
stock: str = '600031.SH' - 股票代码
start_date: str = '20200101' - 开始日期,格式YYYYMMDD
end_date: str = '20261231' - 结束日期,格式YYYYMMDD
columns: str = 'date,close,open,high,low,volume,amount' - 选择字段,逗号分隔
【基础因子字段】
date - 交易日期
证券代码 - 股票代码
close - 收盘价
open - 开盘价
high - 最高价
low - 最低价
volume - 成交量
amount - 成交金额
zdf - 涨跌幅
【涨跌幅因子】
5日涨跌幅 - 5日涨跌幅
10日涨跌幅 - 10日涨跌幅
20日涨跌幅 - 20日涨跌幅
30日涨跌幅 - 30日涨跌幅
60日涨跌幅 - 60日涨跌幅
120日涨跌幅 - 120日涨跌幅
250日涨跌幅 - 250日涨跌幅
【价格距离均线涨跌幅】
价格距离5日均线涨跌幅 - 价格距离5日均线涨跌幅
价格距离10日均线涨跌幅 - 价格距离10日均线涨跌幅
价格距离20日均线涨跌幅 - 价格距离20日均线涨跌幅
价格距离30日均线涨跌幅 - 价格距离30日均线涨跌幅
价格距离60日均线涨跌幅 - 价格距离60日均线涨跌幅
价格距离120日均线涨跌幅 - 价格距离120日均线涨跌幅
【均线距离涨跌幅】
5日均线距离10日均线涨跌幅 - 5日均线距离10日均线涨跌幅
10日均线距离20日均线涨跌幅 - 10日均线距离20日均线涨跌幅
20日均线距离30日均线涨跌幅 - 20日均线距离30日均线涨跌幅
30日均线距离60日均线涨跌幅 - 30日均线距离60日均线涨跌幅
60日均线距离120日均线涨跌幅 - 60日均线距离120日均线涨跌幅
【移动平均线】
5日均线 - 5日均线
10日均线 - 10日均线
20日均线 - 20日均线
30日均线 - 30日均线
60日均线 - 60日均线
120日均线 - 120日均线
【均线交叉信号】
5日10日金叉 - 5日10日均线金叉
10日20日金叉 - 10日20日均线金叉
20日30日金叉 - 20日30日均线金叉
30日60日金叉 - 30日60日均线金叉
60日120日金叉 - 60日120日均线金叉
5日10日死叉 - 5日10日均线死叉
10日20日死叉 - 10日20日均线死叉
20日30日死叉 - 20日30日均线死叉
30日60日死叉 - 30日60日均线死叉
60日120日死叉 - 60日120日均线死叉
【价格位置判断】
价格在5均线上 - 价格是否在5日均线上
价格在10均线上 - 价格是否在10日均线上
价格在20均线上 - 价格是否在20日均线上
价格在30均线上 - 价格是否在30日均线上
价格在60均线上 - 价格是否在60日均线上
价格在120均线上 - 价格是否在120日均线上
5均线在10均线上 - 5日均线是否在10日均线上
10均线在20均线上 - 10日均线是否在20日均线上
20均线在30均线上 - 20日均线是否在30日均线上
30均线在60均线上 - 30日均线是否在60日均线上
60均线在120均线上 - 60日均线是否在120日均线上
【技术指标 - KDJ】
KDJ_K - KDJ指标K值
KDJ_D - KDJ指标D值
KDJ_J - KDJ指标J值
KDJ_KD金叉 - KDJ金叉信号
KDJ_KD死叉 - KDJ死叉信号
【技术指标 - MACD】
MACD_DIF - MACD平滑异同平均线DIF
MACD_DEA - MACD平滑异同平均线DEA
MACD_MACD - MACD平滑异同平均线MACD
MACD_金叉 - MACD金叉信号
MACD_死叉 - MACD死叉信号
【技术指标 - RSI】
RSI1 - RSI相对强弱RSI1
RSI2 - RSI相对强弱RSI2
RSI3 - RSI相对强弱RSI3
RSI_金叉 - RSI金叉信号
RSI_死叉 - RSI死叉信号
【技术指标 - BOLL布林线】
BOLL_BOLL - BOLL布林线中轨
BOLL_UB - BOLL布林线上轨
BOLL_LB - BOLL布林线下轨
【技术指标 - CCI】
CCI - CCI商品路径指标
【技术指标 - MFI】
MFI - MFI资金流量指标
【技术指标 - MTM】
MTM_MTM - MTM动量线MTM值
MTM_MTMMA - MTM动量线MTMMA值
【技术指标 - SKDJ】
SKDJ_K - SKDJ慢速随机K值
SKDJ_D - SKDJ慢速随机D值
【技术指标 - WR】
WR1 - WR威廉指标WR1
WR2 - WR威廉指标WR2
WR_金叉 - WR金叉信号
WR_死叉 - WR死叉信号
【技术指标 - PSY】
PSY_PSY - PSY心理线PSY
PSY_PSYMA - PSY心理线PSYMA
PSY_金叉 - PSY金叉信号
PSY_死叉 - PSY死叉信号
【技术指标 - BIAS乖离率】
BIAS1 - BIAS乖离率BIAS1
BIAS2 - BIAS乖离率BIAS2
BIAS3 - BIAS乖离率BIAS3
BIAS_QL_BIAS - BIAS_QL乖离率传统版BIAS值
BIAS_QL_BIASMA - BIAS_QL乖离率传统版BIASMA值
BIAS36_BIAS36 - BIAS36三六乖离BIAS36
BIAS36_BIAS612 - BIAS36三六乖离BIAS612
BIAS36_MABIAS - BIAS36三六乖离MABIAS
【技术指标 - DMI】
DMI_PDI - DMI趋向指标PDI
DMI_MDI - DMI趋向指标MDI
DMI_ADX - DMI趋向指标ADX
DMI_ADXR - DMI趋向指标ADXR
【技术指标 - DMA】
DMA_XT_DIF - DMA_XT平均差DIF
DMA_XT_DIFMA - DMA_XT平均差DIFMA
【技术指标 - DPO】
DPO_DPO - DPO区间震荡线DPO
DPO_MADPO - DPO区间震荡线MADPO
【技术指标 - EMV】
EMV_EMV - EMV简易波动指标EMV
EMV_MAEMV - EMV简易波动指标MAEMV
【技术指标 - TRIX】
TRIX_TRIX - TRIX三重指数平均线TRIX
TRIX_MATRIX - TRIX三重指数平均线MATRIX
【技术指标 - UOS】
UOS_UOS - UOS终极指标UOS
UOS_MAUOS - UOS终极指标MAUOS
【技术指标 - VPT】
VTP_VPT - VPT量价曲线VPT
VTP_MAVP - VPT量价曲线MAVP
【技术指标 - WVAD】
WVAD_WVAD - WVAD威廉变异离散量WVAD
WVAD_MAWVAD - WVAD威廉变异离散量MAWVAD
【技术指标 - BRAR】
BRAR_BR - BRAR情绪指标BR
BRAR_AR - BRAR情绪指标AR
【技术指标 - CR】
CR_CR - CR带状能量线CR
CR_MA1 - CR带状能量线MA1
CR_MA2 - CR带状能量线MA2
CR_MA3 - CR带状能量线MA3
CR_MA4 - CR带状能量线MA4
【技术指标 - MASS】
MASS_MASS - MASS梅斯线MASS
MASS_MAMASS - MASS梅斯线MAMASS
【技术指标 - VR】
VR_VR - VR成交量变异率VR
VR_MAVR - VR成交量变异率MAVR
【技术指标 - OBV】
OBV_OBV - OBV累积能量线OBV
OBV_MAOBV - OBV累积能量线MAOBV
【技术指标 - VOL成交量】
VOL_XT_MAVOL1 - VOL成交量MAVOL1
VOL_XT_MAVOL2 - VOL成交量MAVOL2
【技术指标 - VRSI】
VRSI1 - VRSI相对强弱量RSI1
VRSI2 - VRSI相对强弱量RSI2
VRSI3 - VRSI相对强弱量RSI3
【技术指标 - HSL换手线】
HSL_HSL - HSL换手线HSL
HSL_MAHSL - HSL换手线MAHSL
【技术指标 - ACD】
ACD_ACD - ACD升降线ACD
ACD_MAACD - ACD升降线MAACD
【技术指标 - BBI】
BBI - BBI多空均线
【技术指标 - EXPMA】
EXPMA_EXP1 - EXPMA指数平均线EXP1
EXPMA_EXP2 - EXPMA指数平均线EXP2
【技术指标 - SAR】
SAR - SAR抛物线指标
【技术指标 - AMO成交金额】
AMO_AMOW - AMO成交金额AMOW
AMO_AMO1 - AMO成交金额AMO1
AMO_AMO2 - AMO成交金额AMO2
【技术指标 - MIKE】
MIKE_STOR - MIKE麦克支撑压力STOR
MIKE_MIDR - MIKE麦克支撑压力MIDR
MIKE_WEKR - MIKE麦克支撑压力WEKR
MIKE_WEKS - MIKE麦克支撑压力WEKS
MIKE_MIDS - MIKE麦克支撑压力MIDS
MIKE_STOS - MIKE麦克支撑压力STOS
【技术指标 - ENE】
ENE_UPPER - ENE轨道线上轨
ENE_LOWER - ENE轨道线下轨
ENE_ENE - ENE轨道线ENE
【技术指标 - PBX瀑布线】
PBX_PBX1 - PBX瀑布线PBX1
PBX_PBX2 - PBX瀑布线PBX2
PBX_PBX3 - PBX瀑布线PBX3
PBX_PBX4 - PBX瀑布线PBX4
PBX_PBX5 - PBX瀑布线PBX5
PBX_PBX6 - PBX瀑布线PBX6
【技术指标 - XS薛斯通道】
XS_SUP - XS薛斯通道SUP
XS_SDN - XS薛斯通道SDN
XS_LUP - XS薛斯通道LUP
XS_LDN - XS薛斯通道LDN
【技术指标 - TQN唐奇安通道】
TQN_周期高点 - TQN唐奇安通道周期高点
TQN_周期低点 - TQN唐奇安通道周期低点
TQN_平空开多 - TQN唐奇安通道平空开多信号
TQN_平多开空 - TQN唐奇安通道平多开空信号
【技术指标 - ALLIGAT鳄鱼线】
ALLIGAT_上唇 - ALLIGAT鳄鱼线上唇
ALLIGAT_牙齿 - ALLIGAT鳄鱼线牙齿
ALLIGAT_下颚 - ALLIGAT鳄鱼线下颚
【技术指标 - GMMA顾比均线】
GMMA_MA3 - GMMA顾比均线MA3
GMMA_MA5 - GMMA顾比均线MA5
GMMA_MA8 - GMMA顾比均线MA8
GMMA_MA10 - GMMA顾比均线MA10
GMMA_MA12 - GMMA顾比均线MA12
GMMA_MA15 - GMMA顾比均线MA15
GMMA_MA30 - GMMA顾比均线MA30
GMMA_MA35 - GMMA顾比均线MA35
GMMA_MA40 - GMMA顾比均线MA40
GMMA_MA45 - GMMA顾比均线MA45
GMMA_MA50 - GMMA顾比均线MA50
GMMA_MA60 - GMMA顾比均线MA60
【技术指标 - VMACD】
VMACD_DIF - VMACD量平滑异同平均线DIF
VMACD_DEA - VMACD量平滑异同平均线DEA
VMACD_MACD - VMACD量平滑异同平均线MACD
【技术指标 - SMACD】
SMACD_DEA - SMACD单线平滑异同平均线DEA
SMACD_MACD - SMACD单线平滑异同平均线MACD
【技术指标 - QACD】
QACD_DIF - QACD快速异同平均线DIF
QACD_MACD - QACD快速异同平均线MACD
QACD_DDIF - QACD快速异同平均线DDIF
【技术指标 - 成交量相关】
连续上涨天数 - 连续上涨天数
连续下跌天数 - 连续下跌天数
【技术指标 - 偏度峰度】
5日偏度 - 5日偏度
10日偏度 - 10日偏度
20日偏度 - 20日偏度
30日偏度 - 30日偏度
60日偏度 - 60日偏度
120日偏度 - 120日偏度
5日峰度 - 5日峰度
10日峰度 - 10日峰度
20日峰度 - 20日峰度
30日峰度 - 30日峰度
60日峰度 - 60日峰度
120日峰度 - 120日峰度
【Alpha因子 - 世界金融实验室101因子】
Alpha001 至 Alpha191 - 世界金融实验室101因子(共191个)
【交易信号因子】
六脉神剑 - 六脉神剑交易信号
小波段交易 - 小波段交易信号
大波段交易 - 大波段交易信号
波段超级买卖 - 波段超级买卖信号
【回归分析因子】
3日回归动量 - 3日回归动量
5日回归动量 - 5日回归动量
7日回归动量 - 7日回归动量
9日回归动量 - 9日回归动量
12日回归动量 - 12日回归动量
15日回归动量 - 15日回归动量
18日回归动量 - 18日回归动量
20日回归动量 - 20日回归动量
23日回归动量 - 23日回归动量
25日回归动量 - 25日回归动量
28日回归动量 - 28日回归动量
30日回归动量 - 30日回归动量
35日回归动量 - 35日回归动量
40日回归动量 - 40日回归动量
45日回归动量 - 45日回归动量
50日回归动量 - 50日回归动量
60日回归动量 - 60日回归动量
【回归斜率】
5日回归斜率 - 5日回归斜率
10日回归斜率 - 10日回归斜率
20日回归斜率 - 20日回归斜率
30日回归斜率 - 30日回归斜率
60日回归斜率 - 60日回归斜率
120日回归斜率 - 120日回归斜率
【标准差】
5日标准差 - 5日标准差
10日标准差 - 10日标准差
20日标准差 - 20日标准差
30日标准差 - 30日标准差
60日标准差 - 60日标准差
120日标准差 - 120日标准差
【最高最低值周期】
5日最高值到当前周期 - 5日最高值到当前周期
10日最高值到当前周期 - 10日最高值到当前周期
20日最高值到当前周期 - 20日最高值到当前周期
30日最高值到当前周期 - 30日最高值到当前周期
60日最高值到当前周期 - 60日最高值到当前周期
120日最高值到当前周期 - 120日最高值到当前周期
5日最低值到当前周期 - 5日最低值到当前周期
10日最低值到当前周期 - 10日最低值到当前周期
20日最低值到当前周期 - 20日最低值到当前周期
30日最低值到当前周期 - 30日最低值到当前周期
60日最低值到当前周期 - 60日最低值到当前周期
120日最低值到当前周期 - 120日最低值到当前周期
【Alpha系数】
5日Alpha - 5日Alpha
10日Alpha - 10日Alpha
20日Alpha - 20日Alpha
30日Alpha - 30日Alpha
60日Alpha - 60日Alpha
120日Alpha - 120日Alpha
【Beta系数】
5日Beta - 5日Beta
10日Beta - 10日Beta
20日Beta - 20日Beta
30日Beta - 30日Beta
60日Beta - 60日Beta
120日Beta - 120日Beta
【夏普比率】
5日夏普比率 - 5日夏普比率
10日夏普比率 - 10日夏普比率
20日夏普比率 - 20日夏普比率
30日夏普比率 - 30日夏普比率
60日夏普比率 - 60日夏普比率
120日夏普比率 - 120日夏普比率
【年化波动率】
5日年化波动率 - 5日年化波动率
10日年化波动率 - 10日年化波动率
20日年化波动率 - 20日年化波动率
30日年化波动率 - 30日年化波动率
60日年化波动率 - 60日年化波动率
120日年化波动率 - 120日年化波动率
【最大回撤】
5日最大回撤 - 5日最大回撤
10日最大回撤 - 10日最大回撤
20日最大回撤 - 20日最大回撤
30日最大回撤 - 30日最大回撤
60日最大回撤 - 60日最大回撤
120日最大回撤 - 120日最大回撤
【上涨/下跌捕获率】
5日上涨捕获率 - 5日上涨捕获率
10日上涨捕获率 - 10日上涨捕获率
20日上涨捕获率 - 20日上涨捕获率
30日上涨捕获率 - 30日上涨捕获率
60日上涨捕获率 - 60日上涨捕获率
120日上涨捕获率 - 120日上涨捕获率
5日下跌捕获率 - 5日下跌捕获率
10日下跌捕获率 - 10日下跌捕获率
20日下跌捕获率 - 20日下跌捕获率
30日下跌捕获率 - 30日下跌捕获率
60日下跌捕获率 - 60日下跌捕获率
120日下跌捕获率 - 120日下跌捕获率
【庄家/主力指标】
ZJTJ_无庄控盘 - ZJTJ庄家抬轿无庄控盘
ZJTJ_开始控盘 - ZJTJ庄家抬轿开始控盘
ZJTJ_有庄控盘 - ZJTJ庄家抬轿有庄控盘
ZJTJ_主力出货 - ZJTJ庄家抬轿主力出货
CYW - CYW主力控盘
ZLJC_JCS - ZLJC主力进出JCS
ZLJC_JCM - ZLJC主力进出JCM
ZLJC_JCL - ZLJC主力进出JCL
ZLMM_MMS - ZLMM主力买卖MMS
ZLMM_MMM - ZLMM主力买卖MMM
ZLMM_MML - ZLMM主力买卖MML
LHXJ_主力弃盘 - LHXJ猎狐先觉主力弃盘
LHXJ_主力控盘 - LHXJ猎狐先觉主力控盘
LYJH_机构做空能量线 - LYJH猎鹰歼狐机构做空能量线
LYJH_机构做多能量线 - LYJH猎鹰歼狐机构做多能量线
【智能交易信号】
BDZX_AK - BDZX波段之星AK
BDZX_AD1 - BDZX波段之星AD1
BDZX_AJ - BDZX波段之星AJ
BDZX_买进 - BDZX波段之星买进信号
BDZX_卖出 - BDZX波段之星卖出信号
CYHT_SK - CYHT财运亨通SK
CYHT_SD - CYHT财运亨通SD
CYHT_卖出 - CYHT财运亨通卖出信号
CYHT_买进 - CYHT财运亨通买进信号
BSQJ_B买 - BSQJ买卖区间B买信号
BSQJ_持仓 - BSQJ买卖区间持仓信号
BSQJ_S卖 - BSQJ买卖区间S卖信号
BSQJ_空仓 - BSQJ买卖区间空仓信号
JFZX_多头力量 - JFZX飓风智能中线多头力量
JFZX_空头力量 - JFZX飓风智能中线空头力量
XJDX_J - XJDX超级短线J
XJDX_D - XJDX超级短线D
XJDX_K - XJDX超级短线K
【其他特色指标】
CYS - CYS市场盈亏
CYR_CYR - CYR市场强弱CYR
CYR_MACYR - CYR市场强弱MACYR
CYE_CYEL - CYE市场趋势CYEL
CYE_CYES - CYE市场趋势CYES
CYS - CYS市场盈亏
RAD_RADER1 - RAD威力雷达RADER1
RAD_RADERMA - RAD威力雷达RADERMA
SG_XDT_QR - SG_XDT心电图QR
SG_XDT_MQR1 - SG_XDT心电图MQR1
SG_XDT_MQR2 - SG_XDT心电图MQR2
SG_NDB_DK - SG_NDB脑电波DK
SG_NDB_MDK1 - SG_NDB脑电波MDK1
SG_NDB_MDK2 - SG_NDB脑电波MDK2
SG_SMX_ZY1 - SG_SMX生命线ZY1
SG_SMX_ZY2 - SG_SMX生命线ZY2
SG_SMX_ZY3 - SG_SMX生命线ZY3
SG_LB_量比 - SG_LB量比
SG_LB_MA5 - SG_LB量比MA5
SG_LB_MA10 - SG_LB量比MA10
SG_PF - SG_PF强势股评分
SLZT_白龙 - SLZT神龙在天白龙
SLZT_黄龙 - SLZT神龙在天黄龙
SLZT_紫龙 - SLZT神龙在天紫龙
SLZT_青龙 - SLZT神龙在天青龙
SLZT_红龙 - SLZT神龙在天红龙
SLZT_蓝龙 - SLZT神龙在天蓝龙
ADVOL_ADVOL - ADVOL龙系离散量ADVOL
ADVOL_MA1 - ADVOL龙系离散量MA1
ADVOL_MA2 - ADVOL龙系离散量MA2
JAX_J - JAX济安线J
JAX_A - JAX济安线A
JAX_X - JAX济安线X
LON_LON - LON龙系长线LON
LON_LONMA - LON龙系长线LONMA
LON_LONT - LON龙系长线LONT
SHT_SHT - SHT龙系短线SHT
SHT_SHTMA - SHT龙系短线SHTMA
CDP_STD_CDP - CDP_STD逆势操作CDP
CDP_STD_AH - CDP_STD逆势操作AH
CDP_STD_NH - CDP_STD逆势操作NH
CDP_STD_NL - CDP_STD逆势操作NL
CDP_STD_AL - CDP_STD逆势操作AL
"""
print("\n" + "=" * 60)
print("📈 获取因子数据")
print("=" * 60)
# 获取基础因子数据
result = client.get_stock_factor_data(
stock='513100.SH', # 纳指ETF
start_date='20240101',
end_date='20500101',
columns='date,证券代码,close,high,low,volume,amount'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
# 获取涨跌幅因子数据
print("\n" + "-" * 40)
result = client.get_stock_factor_data(
stock='159915.SZ', # 创业板ETF
start_date='20220101',
end_date='20241231',
columns='date,证券代码,5日涨跌幅,10日涨跌幅,20日涨跌幅,60日涨跌幅'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
# 获取技术指标因子数据
print("\n" + "-" * 40)
result = client.get_stock_factor_data(
stock='513100.SH',
start_date='20240101',
end_date='20500101',
columns='date,证券代码,close,MACD_DIF,MACD_DEA,MACD_MACD,KDJ_K,KDJ_D,KDJ_J,RSI1,RSI2,RSI3,BOLL_BOLL,BOLL_UB,BOLL_LB'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据(技术指标)")
print(df.head())
# 获取均线系统因子
print("\n" + "-" * 40)
result = client.get_stock_factor_data(
stock='513100.SH',
start_date='20240101',
end_date='20500101',
columns='date,证券代码,close,5日均线,10日均线,20日均线,30日均线,60日均线,120日均线'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据(均线系统)")
print(df.head())
# 获取Alpha因子
print("\n" + "-" * 40)
result = client.get_stock_factor_data(
stock='513100.SH',
start_date='20240101',
end_date='20500101',
columns='date,证券代码,close,Alpha001,Alpha002,Alpha003,Alpha004,Alpha005'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据(Alpha因子)")
print(df.head())
# 获取动量因子
print("\n" + "-" * 40)
result = client.get_stock_factor_data(
stock='513100.SH',
start_date='20240101',
end_date='20500101',
columns='date,证券代码,close,3日回归动量,5日回归动量,10日回归动量,20日回归动量,30日回归动量,60日回归动量'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据(动量因子)")
print(df.head())
6读取ETF基金因子数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例3:获取因子数据
# ============================================================
"""
参数说明:
stock: str = '600031.SH' - 股票代码
start_date: str = '20200101' - 开始日期,格式YYYYMMDD
end_date: str = '20261231' - 结束日期,格式YYYYMMDD
columns: str = 'date,close,open,high,low,volume,amount' - 选择字段,逗号分隔
【基础因子字段】
date - 交易日期
证券代码 - 股票代码
close - 收盘价
open - 开盘价
high - 最高价
low - 最低价
volume - 成交量
amount - 成交金额
zdf - 涨跌幅
【涨跌幅因子】
5日涨跌幅 - 5日涨跌幅
10日涨跌幅 - 10日涨跌幅
20日涨跌幅 - 20日涨跌幅
30日涨跌幅 - 30日涨跌幅
60日涨跌幅 - 60日涨跌幅
120日涨跌幅 - 120日涨跌幅
250日涨跌幅 - 250日涨跌幅
【价格距离均线涨跌幅】
价格距离5日均线涨跌幅 - 价格距离5日均线涨跌幅
价格距离10日均线涨跌幅 - 价格距离10日均线涨跌幅
价格距离20日均线涨跌幅 - 价格距离20日均线涨跌幅
价格距离30日均线涨跌幅 - 价格距离30日均线涨跌幅
价格距离60日均线涨跌幅 - 价格距离60日均线涨跌幅
价格距离120日均线涨跌幅 - 价格距离120日均线涨跌幅
【均线距离涨跌幅】
5日均线距离10日均线涨跌幅 - 5日均线距离10日均线涨跌幅
10日均线距离20日均线涨跌幅 - 10日均线距离20日均线涨跌幅
20日均线距离30日均线涨跌幅 - 20日均线距离30日均线涨跌幅
30日均线距离60日均线涨跌幅 - 30日均线距离60日均线涨跌幅
60日均线距离120日均线涨跌幅 - 60日均线距离120日均线涨跌幅
【移动平均线】
5日均线 - 5日均线
10日均线 - 10日均线
20日均线 - 20日均线
30日均线 - 30日均线
60日均线 - 60日均线
120日均线 - 120日均线
【均线交叉信号】
5日10日金叉 - 5日10日均线金叉
10日20日金叉 - 10日20日均线金叉
20日30日金叉 - 20日30日均线金叉
30日60日金叉 - 30日60日均线金叉
60日120日金叉 - 60日120日均线金叉
5日10日死叉 - 5日10日均线死叉
10日20日死叉 - 10日20日均线死叉
20日30日死叉 - 20日30日均线死叉
30日60日死叉 - 30日60日均线死叉
60日120日死叉 - 60日120日均线死叉
【价格位置判断】
价格在5均线上 - 价格是否在5日均线上
价格在10均线上 - 价格是否在10日均线上
价格在20均线上 - 价格是否在20日均线上
价格在30均线上 - 价格是否在30日均线上
价格在60均线上 - 价格是否在60日均线上
价格在120均线上 - 价格是否在120日均线上
5均线在10均线上 - 5日均线是否在10日均线上
10均线在20均线上 - 10日均线是否在20日均线上
20均线在30均线上 - 20日均线是否在30日均线上
30均线在60均线上 - 30日均线是否在60日均线上
60均线在120均线上 - 60日均线是否在120日均线上
【技术指标 - KDJ】
KDJ_K - KDJ指标K值
KDJ_D - KDJ指标D值
KDJ_J - KDJ指标J值
KDJ_KD金叉 - KDJ金叉信号
KDJ_KD死叉 - KDJ死叉信号
【技术指标 - MACD】
MACD_DIF - MACD平滑异同平均线DIF
MACD_DEA - MACD平滑异同平均线DEA
MACD_MACD - MACD平滑异同平均线MACD
MACD_金叉 - MACD金叉信号
MACD_死叉 - MACD死叉信号
【技术指标 - RSI】
RSI1 - RSI相对强弱RSI1
RSI2 - RSI相对强弱RSI2
RSI3 - RSI相对强弱RSI3
RSI_金叉 - RSI金叉信号
RSI_死叉 - RSI死叉信号
【技术指标 - BOLL布林线】
BOLL_BOLL - BOLL布林线中轨
BOLL_UB - BOLL布林线上轨
BOLL_LB - BOLL布林线下轨
【技术指标 - CCI】
CCI - CCI商品路径指标
【技术指标 - MFI】
MFI - MFI资金流量指标
【技术指标 - MTM】
MTM_MTM - MTM动量线MTM值
MTM_MTMMA - MTM动量线MTMMA值
【技术指标 - SKDJ】
SKDJ_K - SKDJ慢速随机K值
SKDJ_D - SKDJ慢速随机D值
【技术指标 - WR】
WR1 - WR威廉指标WR1
WR2 - WR威廉指标WR2
WR_金叉 - WR金叉信号
WR_死叉 - WR死叉信号
【技术指标 - PSY】
PSY_PSY - PSY心理线PSY
PSY_PSYMA - PSY心理线PSYMA
PSY_金叉 - PSY金叉信号
PSY_死叉 - PSY死叉信号
【技术指标 - BIAS乖离率】
BIAS1 - BIAS乖离率BIAS1
BIAS2 - BIAS乖离率BIAS2
BIAS3 - BIAS乖离率BIAS3
BIAS_QL_BIAS - BIAS_QL乖离率传统版BIAS值
BIAS_QL_BIASMA - BIAS_QL乖离率传统版BIASMA值
BIAS36_BIAS36 - BIAS36三六乖离BIAS36
BIAS36_BIAS612 - BIAS36三六乖离BIAS612
BIAS36_MABIAS - BIAS36三六乖离MABIAS
【技术指标 - DMI】
DMI_PDI - DMI趋向指标PDI
DMI_MDI - DMI趋向指标MDI
DMI_ADX - DMI趋向指标ADX
DMI_ADXR - DMI趋向指标ADXR
【技术指标 - DMA】
DMA_XT_DIF - DMA_XT平均差DIF
DMA_XT_DIFMA - DMA_XT平均差DIFMA
【技术指标 - DPO】
DPO_DPO - DPO区间震荡线DPO
DPO_MADPO - DPO区间震荡线MADPO
【技术指标 - EMV】
EMV_EMV - EMV简易波动指标EMV
EMV_MAEMV - EMV简易波动指标MAEMV
【技术指标 - TRIX】
TRIX_TRIX - TRIX三重指数平均线TRIX
TRIX_MATRIX - TRIX三重指数平均线MATRIX
【技术指标 - UOS】
UOS_UOS - UOS终极指标UOS
UOS_MAUOS - UOS终极指标MAUOS
【技术指标 - VPT】
VTP_VPT - VPT量价曲线VPT
VTP_MAVP - VPT量价曲线MAVP
【技术指标 - WVAD】
WVAD_WVAD - WVAD威廉变异离散量WVAD
WVAD_MAWVAD - WVAD威廉变异离散量MAWVAD
【技术指标 - BRAR】
BRAR_BR - BRAR情绪指标BR
BRAR_AR - BRAR情绪指标AR
【技术指标 - CR】
CR_CR - CR带状能量线CR
CR_MA1 - CR带状能量线MA1
CR_MA2 - CR带状能量线MA2
CR_MA3 - CR带状能量线MA3
CR_MA4 - CR带状能量线MA4
【技术指标 - MASS】
MASS_MASS - MASS梅斯线MASS
MASS_MAMASS - MASS梅斯线MAMASS
【技术指标 - VR】
VR_VR - VR成交量变异率VR
VR_MAVR - VR成交量变异率MAVR
【技术指标 - OBV】
OBV_OBV - OBV累积能量线OBV
OBV_MAOBV - OBV累积能量线MAOBV
【技术指标 - VOL成交量】
VOL_XT_MAVOL1 - VOL成交量MAVOL1
VOL_XT_MAVOL2 - VOL成交量MAVOL2
【技术指标 - VRSI】
VRSI1 - VRSI相对强弱量RSI1
VRSI2 - VRSI相对强弱量RSI2
VRSI3 - VRSI相对强弱量RSI3
【技术指标 - HSL换手线】
HSL_HSL - HSL换手线HSL
HSL_MAHSL - HSL换手线MAHSL
【技术指标 - ACD】
ACD_ACD - ACD升降线ACD
ACD_MAACD - ACD升降线MAACD
【技术指标 - BBI】
BBI - BBI多空均线
【技术指标 - EXPMA】
EXPMA_EXP1 - EXPMA指数平均线EXP1
EXPMA_EXP2 - EXPMA指数平均线EXP2
【技术指标 - SAR】
SAR - SAR抛物线指标
【技术指标 - AMO成交金额】
AMO_AMOW - AMO成交金额AMOW
AMO_AMO1 - AMO成交金额AMO1
AMO_AMO2 - AMO成交金额AMO2
【技术指标 - MIKE】
MIKE_STOR - MIKE麦克支撑压力STOR
MIKE_MIDR - MIKE麦克支撑压力MIDR
MIKE_WEKR - MIKE麦克支撑压力WEKR
MIKE_WEKS - MIKE麦克支撑压力WEKS
MIKE_MIDS - MIKE麦克支撑压力MIDS
MIKE_STOS - MIKE麦克支撑压力STOS
【技术指标 - ENE】
ENE_UPPER - ENE轨道线上轨
ENE_LOWER - ENE轨道线下轨
ENE_ENE - ENE轨道线ENE
【技术指标 - PBX瀑布线】
PBX_PBX1 - PBX瀑布线PBX1
PBX_PBX2 - PBX瀑布线PBX2
PBX_PBX3 - PBX瀑布线PBX3
PBX_PBX4 - PBX瀑布线PBX4
PBX_PBX5 - PBX瀑布线PBX5
PBX_PBX6 - PBX瀑布线PBX6
【技术指标 - XS薛斯通道】
XS_SUP - XS薛斯通道SUP
XS_SDN - XS薛斯通道SDN
XS_LUP - XS薛斯通道LUP
XS_LDN - XS薛斯通道LDN
【技术指标 - TQN唐奇安通道】
TQN_周期高点 - TQN唐奇安通道周期高点
TQN_周期低点 - TQN唐奇安通道周期低点
TQN_平空开多 - TQN唐奇安通道平空开多信号
TQN_平多开空 - TQN唐奇安通道平多开空信号
【技术指标 - ALLIGAT鳄鱼线】
ALLIGAT_上唇 - ALLIGAT鳄鱼线上唇
ALLIGAT_牙齿 - ALLIGAT鳄鱼线牙齿
ALLIGAT_下颚 - ALLIGAT鳄鱼线下颚
【技术指标 - GMMA顾比均线】
GMMA_MA3 - GMMA顾比均线MA3
GMMA_MA5 - GMMA顾比均线MA5
GMMA_MA8 - GMMA顾比均线MA8
GMMA_MA10 - GMMA顾比均线MA10
GMMA_MA12 - GMMA顾比均线MA12
GMMA_MA15 - GMMA顾比均线MA15
GMMA_MA30 - GMMA顾比均线MA30
GMMA_MA35 - GMMA顾比均线MA35
GMMA_MA40 - GMMA顾比均线MA40
GMMA_MA45 - GMMA顾比均线MA45
GMMA_MA50 - GMMA顾比均线MA50
GMMA_MA60 - GMMA顾比均线MA60
【技术指标 - VMACD】
VMACD_DIF - VMACD量平滑异同平均线DIF
VMACD_DEA - VMACD量平滑异同平均线DEA
VMACD_MACD - VMACD量平滑异同平均线MACD
【技术指标 - SMACD】
SMACD_DEA - SMACD单线平滑异同平均线DEA
SMACD_MACD - SMACD单线平滑异同平均线MACD
【技术指标 - QACD】
QACD_DIF - QACD快速异同平均线DIF
QACD_MACD - QACD快速异同平均线MACD
QACD_DDIF - QACD快速异同平均线DDIF
【技术指标 - 成交量相关】
连续上涨天数 - 连续上涨天数
连续下跌天数 - 连续下跌天数
【技术指标 - 偏度峰度】
5日偏度 - 5日偏度
10日偏度 - 10日偏度
20日偏度 - 20日偏度
30日偏度 - 30日偏度
60日偏度 - 60日偏度
120日偏度 - 120日偏度
5日峰度 - 5日峰度
10日峰度 - 10日峰度
20日峰度 - 20日峰度
30日峰度 - 30日峰度
60日峰度 - 60日峰度
120日峰度 - 120日峰度
【Alpha因子 - 世界金融实验室101因子】
Alpha001 至 Alpha191 - 世界金融实验室101因子(共191个)
【交易信号因子】
六脉神剑 - 六脉神剑交易信号
小波段交易 - 小波段交易信号
大波段交易 - 大波段交易信号
波段超级买卖 - 波段超级买卖信号
【回归分析因子】
3日回归动量 - 3日回归动量
5日回归动量 - 5日回归动量
7日回归动量 - 7日回归动量
9日回归动量 - 9日回归动量
12日回归动量 - 12日回归动量
15日回归动量 - 15日回归动量
18日回归动量 - 18日回归动量
20日回归动量 - 20日回归动量
23日回归动量 - 23日回归动量
25日回归动量 - 25日回归动量
28日回归动量 - 28日回归动量
30日回归动量 - 30日回归动量
35日回归动量 - 35日回归动量
40日回归动量 - 40日回归动量
45日回归动量 - 45日回归动量
50日回归动量 - 50日回归动量
60日回归动量 - 60日回归动量
【回归斜率】
5日回归斜率 - 5日回归斜率
10日回归斜率 - 10日回归斜率
20日回归斜率 - 20日回归斜率
30日回归斜率 - 30日回归斜率
60日回归斜率 - 60日回归斜率
120日回归斜率 - 120日回归斜率
【标准差】
5日标准差 - 5日标准差
10日标准差 - 10日标准差
20日标准差 - 20日标准差
30日标准差 - 30日标准差
60日标准差 - 60日标准差
120日标准差 - 120日标准差
【最高最低值周期】
5日最高值到当前周期 - 5日最高值到当前周期
10日最高值到当前周期 - 10日最高值到当前周期
20日最高值到当前周期 - 20日最高值到当前周期
30日最高值到当前周期 - 30日最高值到当前周期
60日最高值到当前周期 - 60日最高值到当前周期
120日最高值到当前周期 - 120日最高值到当前周期
5日最低值到当前周期 - 5日最低值到当前周期
10日最低值到当前周期 - 10日最低值到当前周期
20日最低值到当前周期 - 20日最低值到当前周期
30日最低值到当前周期 - 30日最低值到当前周期
60日最低值到当前周期 - 60日最低值到当前周期
120日最低值到当前周期 - 120日最低值到当前周期
【Alpha系数】
5日Alpha - 5日Alpha
10日Alpha - 10日Alpha
20日Alpha - 20日Alpha
30日Alpha - 30日Alpha
60日Alpha - 60日Alpha
120日Alpha - 120日Alpha
【Beta系数】
5日Beta - 5日Beta
10日Beta - 10日Beta
20日Beta - 20日Beta
30日Beta - 30日Beta
60日Beta - 60日Beta
120日Beta - 120日Beta
【夏普比率】
5日夏普比率 - 5日夏普比率
10日夏普比率 - 10日夏普比率
20日夏普比率 - 20日夏普比率
30日夏普比率 - 30日夏普比率
60日夏普比率 - 60日夏普比率
120日夏普比率 - 120日夏普比率
【年化波动率】
5日年化波动率 - 5日年化波动率
10日年化波动率 - 10日年化波动率
20日年化波动率 - 20日年化波动率
30日年化波动率 - 30日年化波动率
60日年化波动率 - 60日年化波动率
120日年化波动率 - 120日年化波动率
【最大回撤】
5日最大回撤 - 5日最大回撤
10日最大回撤 - 10日最大回撤
20日最大回撤 - 20日最大回撤
30日最大回撤 - 30日最大回撤
60日最大回撤 - 60日最大回撤
120日最大回撤 - 120日最大回撤
【上涨/下跌捕获率】
5日上涨捕获率 - 5日上涨捕获率
10日上涨捕获率 - 10日上涨捕获率
20日上涨捕获率 - 20日上涨捕获率
30日上涨捕获率 - 30日上涨捕获率
60日上涨捕获率 - 60日上涨捕获率
120日上涨捕获率 - 120日上涨捕获率
5日下跌捕获率 - 5日下跌捕获率
10日下跌捕获率 - 10日下跌捕获率
20日下跌捕获率 - 20日下跌捕获率
30日下跌捕获率 - 30日下跌捕获率
60日下跌捕获率 - 60日下跌捕获率
120日下跌捕获率 - 120日下跌捕获率
【庄家/主力指标】
ZJTJ_无庄控盘 - ZJTJ庄家抬轿无庄控盘
ZJTJ_开始控盘 - ZJTJ庄家抬轿开始控盘
ZJTJ_有庄控盘 - ZJTJ庄家抬轿有庄控盘
ZJTJ_主力出货 - ZJTJ庄家抬轿主力出货
CYW - CYW主力控盘
ZLJC_JCS - ZLJC主力进出JCS
ZLJC_JCM - ZLJC主力进出JCM
ZLJC_JCL - ZLJC主力进出JCL
ZLMM_MMS - ZLMM主力买卖MMS
ZLMM_MMM - ZLMM主力买卖MMM
ZLMM_MML - ZLMM主力买卖MML
LHXJ_主力弃盘 - LHXJ猎狐先觉主力弃盘
LHXJ_主力控盘 - LHXJ猎狐先觉主力控盘
LYJH_机构做空能量线 - LYJH猎鹰歼狐机构做空能量线
LYJH_机构做多能量线 - LYJH猎鹰歼狐机构做多能量线
【智能交易信号】
BDZX_AK - BDZX波段之星AK
BDZX_AD1 - BDZX波段之星AD1
BDZX_AJ - BDZX波段之星AJ
BDZX_买进 - BDZX波段之星买进信号
BDZX_卖出 - BDZX波段之星卖出信号
CYHT_SK - CYHT财运亨通SK
CYHT_SD - CYHT财运亨通SD
CYHT_卖出 - CYHT财运亨通卖出信号
CYHT_买进 - CYHT财运亨通买进信号
BSQJ_B买 - BSQJ买卖区间B买信号
BSQJ_持仓 - BSQJ买卖区间持仓信号
BSQJ_S卖 - BSQJ买卖区间S卖信号
BSQJ_空仓 - BSQJ买卖区间空仓信号
JFZX_多头力量 - JFZX飓风智能中线多头力量
JFZX_空头力量 - JFZX飓风智能中线空头力量
XJDX_J - XJDX超级短线J
XJDX_D - XJDX超级短线D
XJDX_K - XJDX超级短线K
【其他特色指标】
CYS - CYS市场盈亏
CYR_CYR - CYR市场强弱CYR
CYR_MACYR - CYR市场强弱MACYR
CYE_CYEL - CYE市场趋势CYEL
CYE_CYES - CYE市场趋势CYES
CYS - CYS市场盈亏
RAD_RADER1 - RAD威力雷达RADER1
RAD_RADERMA - RAD威力雷达RADERMA
SG_XDT_QR - SG_XDT心电图QR
SG_XDT_MQR1 - SG_XDT心电图MQR1
SG_XDT_MQR2 - SG_XDT心电图MQR2
SG_NDB_DK - SG_NDB脑电波DK
SG_NDB_MDK1 - SG_NDB脑电波MDK1
SG_NDB_MDK2 - SG_NDB脑电波MDK2
SG_SMX_ZY1 - SG_SMX生命线ZY1
SG_SMX_ZY2 - SG_SMX生命线ZY2
SG_SMX_ZY3 - SG_SMX生命线ZY3
SG_LB_量比 - SG_LB量比
SG_LB_MA5 - SG_LB量比MA5
SG_LB_MA10 - SG_LB量比MA10
SG_PF - SG_PF强势股评分
SLZT_白龙 - SLZT神龙在天白龙
SLZT_黄龙 - SLZT神龙在天黄龙
SLZT_紫龙 - SLZT神龙在天紫龙
SLZT_青龙 - SLZT神龙在天青龙
SLZT_红龙 - SLZT神龙在天红龙
SLZT_蓝龙 - SLZT神龙在天蓝龙
ADVOL_ADVOL - ADVOL龙系离散量ADVOL
ADVOL_MA1 - ADVOL龙系离散量MA1
ADVOL_MA2 - ADVOL龙系离散量MA2
JAX_J - JAX济安线J
JAX_A - JAX济安线A
JAX_X - JAX济安线X
LON_LON - LON龙系长线LON
LON_LONMA - LON龙系长线LONMA
LON_LONT - LON龙系长线LONT
SHT_SHT - SHT龙系短线SHT
SHT_SHTMA - SHT龙系短线SHTMA
CDP_STD_CDP - CDP_STD逆势操作CDP
CDP_STD_AH - CDP_STD逆势操作AH
CDP_STD_NH - CDP_STD逆势操作NH
CDP_STD_NL - CDP_STD逆势操作NL
CDP_STD_AL - CDP_STD逆势操作AL
"""
print("\n" + "=" * 60)
print("📈 获取因子数据")
print("=" * 60)
# 获取基础因子数据
result = client.get_stock_factor_data(
stock='513100.SH', # 纳指ETF
start_date='20240101',
end_date='20500101',
columns='date,证券代码,close,high,low,volume,amount'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
# 获取涨跌幅因子数据
print("\n" + "-" * 40)
result = client.get_stock_factor_data(
stock='159915.SZ', # 创业板ETF
start_date='20220101',
end_date='20241231',
columns='date,证券代码,5日涨跌幅,10日涨跌幅,20日涨跌幅,60日涨跌幅'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
# 获取技术指标因子数据
print("\n" + "-" * 40)
result = client.get_stock_factor_data(
stock='513100.SH',
start_date='20240101',
end_date='20500101',
columns='date,证券代码,close,MACD_DIF,MACD_DEA,MACD_MACD,KDJ_K,KDJ_D,KDJ_J,RSI1,RSI2,RSI3,BOLL_BOLL,BOLL_UB,BOLL_LB'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据(技术指标)")
print(df.head())
# 获取均线系统因子
print("\n" + "-" * 40)
result = client.get_stock_factor_data(
stock='513100.SH',
start_date='20240101',
end_date='20500101',
columns='date,证券代码,close,5日均线,10日均线,20日均线,30日均线,60日均线,120日均线'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据(均线系统)")
print(df.head())
# 获取Alpha因子
print("\n" + "-" * 40)
result = client.get_stock_factor_data(
stock='513100.SH',
start_date='20240101',
end_date='20500101',
columns='date,证券代码,close,Alpha001,Alpha002,Alpha003,Alpha004,Alpha005'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据(Alpha因子)")
print(df.head())
# 获取动量因子
print("\n" + "-" * 40)
result = client.get_stock_factor_data(
stock='513100.SH',
start_date='20240101',
end_date='20500101',
columns='date,证券代码,close,3日回归动量,5日回归动量,10日回归动量,20日回归动量,30日回归动量,60日回归动量'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据(动量因子)")
print(df.head())
7读取可转债因子数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例3:获取因子数据
# ============================================================
"""
参数说明:
stock: str = '600031.SH' - 股票代码
start_date: str = '20200101' - 开始日期,格式YYYYMMDD
end_date: str = '20261231' - 结束日期,格式YYYYMMDD
columns: str = 'date,close,open,high,low,volume,amount' - 选择字段,逗号分隔
【基础因子字段】
date - 交易日期
证券代码 - 股票代码
close - 收盘价
open - 开盘价
high - 最高价
low - 最低价
volume - 成交量
amount - 成交金额
zdf - 涨跌幅
【涨跌幅因子】
5日涨跌幅 - 5日涨跌幅
10日涨跌幅 - 10日涨跌幅
20日涨跌幅 - 20日涨跌幅
30日涨跌幅 - 30日涨跌幅
60日涨跌幅 - 60日涨跌幅
120日涨跌幅 - 120日涨跌幅
250日涨跌幅 - 250日涨跌幅
【价格距离均线涨跌幅】
价格距离5日均线涨跌幅 - 价格距离5日均线涨跌幅
价格距离10日均线涨跌幅 - 价格距离10日均线涨跌幅
价格距离20日均线涨跌幅 - 价格距离20日均线涨跌幅
价格距离30日均线涨跌幅 - 价格距离30日均线涨跌幅
价格距离60日均线涨跌幅 - 价格距离60日均线涨跌幅
价格距离120日均线涨跌幅 - 价格距离120日均线涨跌幅
【均线距离涨跌幅】
5日均线距离10日均线涨跌幅 - 5日均线距离10日均线涨跌幅
10日均线距离20日均线涨跌幅 - 10日均线距离20日均线涨跌幅
20日均线距离30日均线涨跌幅 - 20日均线距离30日均线涨跌幅
30日均线距离60日均线涨跌幅 - 30日均线距离60日均线涨跌幅
60日均线距离120日均线涨跌幅 - 60日均线距离120日均线涨跌幅
【移动平均线】
5日均线 - 5日均线
10日均线 - 10日均线
20日均线 - 20日均线
30日均线 - 30日均线
60日均线 - 60日均线
120日均线 - 120日均线
【均线交叉信号】
5日10日金叉 - 5日10日均线金叉
10日20日金叉 - 10日20日均线金叉
20日30日金叉 - 20日30日均线金叉
30日60日金叉 - 30日60日均线金叉
60日120日金叉 - 60日120日均线金叉
5日10日死叉 - 5日10日均线死叉
10日20日死叉 - 10日20日均线死叉
20日30日死叉 - 20日30日均线死叉
30日60日死叉 - 30日60日均线死叉
60日120日死叉 - 60日120日均线死叉
【价格位置判断】
价格在5均线上 - 价格是否在5日均线上
价格在10均线上 - 价格是否在10日均线上
价格在20均线上 - 价格是否在20日均线上
价格在30均线上 - 价格是否在30日均线上
价格在60均线上 - 价格是否在60日均线上
价格在120均线上 - 价格是否在120日均线上
5均线在10均线上 - 5日均线是否在10日均线上
10均线在20均线上 - 10日均线是否在20日均线上
20均线在30均线上 - 20日均线是否在30日均线上
30均线在60均线上 - 30日均线是否在60日均线上
60均线在120均线上 - 60日均线是否在120日均线上
【技术指标 - KDJ】
KDJ_K - KDJ指标K值
KDJ_D - KDJ指标D值
KDJ_J - KDJ指标J值
KDJ_KD金叉 - KDJ金叉信号
KDJ_KD死叉 - KDJ死叉信号
【技术指标 - MACD】
MACD_DIF - MACD平滑异同平均线DIF
MACD_DEA - MACD平滑异同平均线DEA
MACD_MACD - MACD平滑异同平均线MACD
MACD_金叉 - MACD金叉信号
MACD_死叉 - MACD死叉信号
【技术指标 - RSI】
RSI1 - RSI相对强弱RSI1
RSI2 - RSI相对强弱RSI2
RSI3 - RSI相对强弱RSI3
RSI_金叉 - RSI金叉信号
RSI_死叉 - RSI死叉信号
【技术指标 - BOLL布林线】
BOLL_BOLL - BOLL布林线中轨
BOLL_UB - BOLL布林线上轨
BOLL_LB - BOLL布林线下轨
【技术指标 - CCI】
CCI - CCI商品路径指标
【技术指标 - MFI】
MFI - MFI资金流量指标
【技术指标 - MTM】
MTM_MTM - MTM动量线MTM值
MTM_MTMMA - MTM动量线MTMMA值
【技术指标 - SKDJ】
SKDJ_K - SKDJ慢速随机K值
SKDJ_D - SKDJ慢速随机D值
【技术指标 - WR】
WR1 - WR威廉指标WR1
WR2 - WR威廉指标WR2
WR_金叉 - WR金叉信号
WR_死叉 - WR死叉信号
【技术指标 - PSY】
PSY_PSY - PSY心理线PSY
PSY_PSYMA - PSY心理线PSYMA
PSY_金叉 - PSY金叉信号
PSY_死叉 - PSY死叉信号
【技术指标 - BIAS乖离率】
BIAS1 - BIAS乖离率BIAS1
BIAS2 - BIAS乖离率BIAS2
BIAS3 - BIAS乖离率BIAS3
BIAS_QL_BIAS - BIAS_QL乖离率传统版BIAS值
BIAS_QL_BIASMA - BIAS_QL乖离率传统版BIASMA值
BIAS36_BIAS36 - BIAS36三六乖离BIAS36
BIAS36_BIAS612 - BIAS36三六乖离BIAS612
BIAS36_MABIAS - BIAS36三六乖离MABIAS
【技术指标 - DMI】
DMI_PDI - DMI趋向指标PDI
DMI_MDI - DMI趋向指标MDI
DMI_ADX - DMI趋向指标ADX
DMI_ADXR - DMI趋向指标ADXR
【技术指标 - DMA】
DMA_XT_DIF - DMA_XT平均差DIF
DMA_XT_DIFMA - DMA_XT平均差DIFMA
【技术指标 - DPO】
DPO_DPO - DPO区间震荡线DPO
DPO_MADPO - DPO区间震荡线MADPO
【技术指标 - EMV】
EMV_EMV - EMV简易波动指标EMV
EMV_MAEMV - EMV简易波动指标MAEMV
【技术指标 - TRIX】
TRIX_TRIX - TRIX三重指数平均线TRIX
TRIX_MATRIX - TRIX三重指数平均线MATRIX
【技术指标 - UOS】
UOS_UOS - UOS终极指标UOS
UOS_MAUOS - UOS终极指标MAUOS
【技术指标 - VPT】
VTP_VPT - VPT量价曲线VPT
VTP_MAVP - VPT量价曲线MAVP
【技术指标 - WVAD】
WVAD_WVAD - WVAD威廉变异离散量WVAD
WVAD_MAWVAD - WVAD威廉变异离散量MAWVAD
【技术指标 - BRAR】
BRAR_BR - BRAR情绪指标BR
BRAR_AR - BRAR情绪指标AR
【技术指标 - CR】
CR_CR - CR带状能量线CR
CR_MA1 - CR带状能量线MA1
CR_MA2 - CR带状能量线MA2
CR_MA3 - CR带状能量线MA3
CR_MA4 - CR带状能量线MA4
【技术指标 - MASS】
MASS_MASS - MASS梅斯线MASS
MASS_MAMASS - MASS梅斯线MAMASS
【技术指标 - VR】
VR_VR - VR成交量变异率VR
VR_MAVR - VR成交量变异率MAVR
【技术指标 - OBV】
OBV_OBV - OBV累积能量线OBV
OBV_MAOBV - OBV累积能量线MAOBV
【技术指标 - VOL成交量】
VOL_XT_MAVOL1 - VOL成交量MAVOL1
VOL_XT_MAVOL2 - VOL成交量MAVOL2
【技术指标 - VRSI】
VRSI1 - VRSI相对强弱量RSI1
VRSI2 - VRSI相对强弱量RSI2
VRSI3 - VRSI相对强弱量RSI3
【技术指标 - HSL换手线】
HSL_HSL - HSL换手线HSL
HSL_MAHSL - HSL换手线MAHSL
【技术指标 - ACD】
ACD_ACD - ACD升降线ACD
ACD_MAACD - ACD升降线MAACD
【技术指标 - BBI】
BBI - BBI多空均线
【技术指标 - EXPMA】
EXPMA_EXP1 - EXPMA指数平均线EXP1
EXPMA_EXP2 - EXPMA指数平均线EXP2
【技术指标 - SAR】
SAR - SAR抛物线指标
【技术指标 - AMO成交金额】
AMO_AMOW - AMO成交金额AMOW
AMO_AMO1 - AMO成交金额AMO1
AMO_AMO2 - AMO成交金额AMO2
【技术指标 - MIKE】
MIKE_STOR - MIKE麦克支撑压力STOR
MIKE_MIDR - MIKE麦克支撑压力MIDR
MIKE_WEKR - MIKE麦克支撑压力WEKR
MIKE_WEKS - MIKE麦克支撑压力WEKS
MIKE_MIDS - MIKE麦克支撑压力MIDS
MIKE_STOS - MIKE麦克支撑压力STOS
【技术指标 - ENE】
ENE_UPPER - ENE轨道线上轨
ENE_LOWER - ENE轨道线下轨
ENE_ENE - ENE轨道线ENE
【技术指标 - PBX瀑布线】
PBX_PBX1 - PBX瀑布线PBX1
PBX_PBX2 - PBX瀑布线PBX2
PBX_PBX3 - PBX瀑布线PBX3
PBX_PBX4 - PBX瀑布线PBX4
PBX_PBX5 - PBX瀑布线PBX5
PBX_PBX6 - PBX瀑布线PBX6
【技术指标 - XS薛斯通道】
XS_SUP - XS薛斯通道SUP
XS_SDN - XS薛斯通道SDN
XS_LUP - XS薛斯通道LUP
XS_LDN - XS薛斯通道LDN
【技术指标 - TQN唐奇安通道】
TQN_周期高点 - TQN唐奇安通道周期高点
TQN_周期低点 - TQN唐奇安通道周期低点
TQN_平空开多 - TQN唐奇安通道平空开多信号
TQN_平多开空 - TQN唐奇安通道平多开空信号
【技术指标 - ALLIGAT鳄鱼线】
ALLIGAT_上唇 - ALLIGAT鳄鱼线上唇
ALLIGAT_牙齿 - ALLIGAT鳄鱼线牙齿
ALLIGAT_下颚 - ALLIGAT鳄鱼线下颚
【技术指标 - GMMA顾比均线】
GMMA_MA3 - GMMA顾比均线MA3
GMMA_MA5 - GMMA顾比均线MA5
GMMA_MA8 - GMMA顾比均线MA8
GMMA_MA10 - GMMA顾比均线MA10
GMMA_MA12 - GMMA顾比均线MA12
GMMA_MA15 - GMMA顾比均线MA15
GMMA_MA30 - GMMA顾比均线MA30
GMMA_MA35 - GMMA顾比均线MA35
GMMA_MA40 - GMMA顾比均线MA40
GMMA_MA45 - GMMA顾比均线MA45
GMMA_MA50 - GMMA顾比均线MA50
GMMA_MA60 - GMMA顾比均线MA60
【技术指标 - VMACD】
VMACD_DIF - VMACD量平滑异同平均线DIF
VMACD_DEA - VMACD量平滑异同平均线DEA
VMACD_MACD - VMACD量平滑异同平均线MACD
【技术指标 - SMACD】
SMACD_DEA - SMACD单线平滑异同平均线DEA
SMACD_MACD - SMACD单线平滑异同平均线MACD
【技术指标 - QACD】
QACD_DIF - QACD快速异同平均线DIF
QACD_MACD - QACD快速异同平均线MACD
QACD_DDIF - QACD快速异同平均线DDIF
【技术指标 - 成交量相关】
连续上涨天数 - 连续上涨天数
连续下跌天数 - 连续下跌天数
【技术指标 - 偏度峰度】
5日偏度 - 5日偏度
10日偏度 - 10日偏度
20日偏度 - 20日偏度
30日偏度 - 30日偏度
60日偏度 - 60日偏度
120日偏度 - 120日偏度
5日峰度 - 5日峰度
10日峰度 - 10日峰度
20日峰度 - 20日峰度
30日峰度 - 30日峰度
60日峰度 - 60日峰度
120日峰度 - 120日峰度
【Alpha因子 - 世界金融实验室101因子】
Alpha001 至 Alpha191 - 世界金融实验室101因子(共191个)
【交易信号因子】
六脉神剑 - 六脉神剑交易信号
小波段交易 - 小波段交易信号
大波段交易 - 大波段交易信号
波段超级买卖 - 波段超级买卖信号
【回归分析因子】
3日回归动量 - 3日回归动量
5日回归动量 - 5日回归动量
7日回归动量 - 7日回归动量
9日回归动量 - 9日回归动量
12日回归动量 - 12日回归动量
15日回归动量 - 15日回归动量
18日回归动量 - 18日回归动量
20日回归动量 - 20日回归动量
23日回归动量 - 23日回归动量
25日回归动量 - 25日回归动量
28日回归动量 - 28日回归动量
30日回归动量 - 30日回归动量
35日回归动量 - 35日回归动量
40日回归动量 - 40日回归动量
45日回归动量 - 45日回归动量
50日回归动量 - 50日回归动量
60日回归动量 - 60日回归动量
【回归斜率】
5日回归斜率 - 5日回归斜率
10日回归斜率 - 10日回归斜率
20日回归斜率 - 20日回归斜率
30日回归斜率 - 30日回归斜率
60日回归斜率 - 60日回归斜率
120日回归斜率 - 120日回归斜率
【标准差】
5日标准差 - 5日标准差
10日标准差 - 10日标准差
20日标准差 - 20日标准差
30日标准差 - 30日标准差
60日标准差 - 60日标准差
120日标准差 - 120日标准差
【最高最低值周期】
5日最高值到当前周期 - 5日最高值到当前周期
10日最高值到当前周期 - 10日最高值到当前周期
20日最高值到当前周期 - 20日最高值到当前周期
30日最高值到当前周期 - 30日最高值到当前周期
60日最高值到当前周期 - 60日最高值到当前周期
120日最高值到当前周期 - 120日最高值到当前周期
5日最低值到当前周期 - 5日最低值到当前周期
10日最低值到当前周期 - 10日最低值到当前周期
20日最低值到当前周期 - 20日最低值到当前周期
30日最低值到当前周期 - 30日最低值到当前周期
60日最低值到当前周期 - 60日最低值到当前周期
120日最低值到当前周期 - 120日最低值到当前周期
【Alpha系数】
5日Alpha - 5日Alpha
10日Alpha - 10日Alpha
20日Alpha - 20日Alpha
30日Alpha - 30日Alpha
60日Alpha - 60日Alpha
120日Alpha - 120日Alpha
【Beta系数】
5日Beta - 5日Beta
10日Beta - 10日Beta
20日Beta - 20日Beta
30日Beta - 30日Beta
60日Beta - 60日Beta
120日Beta - 120日Beta
【夏普比率】
5日夏普比率 - 5日夏普比率
10日夏普比率 - 10日夏普比率
20日夏普比率 - 20日夏普比率
30日夏普比率 - 30日夏普比率
60日夏普比率 - 60日夏普比率
120日夏普比率 - 120日夏普比率
【年化波动率】
5日年化波动率 - 5日年化波动率
10日年化波动率 - 10日年化波动率
20日年化波动率 - 20日年化波动率
30日年化波动率 - 30日年化波动率
60日年化波动率 - 60日年化波动率
120日年化波动率 - 120日年化波动率
【最大回撤】
5日最大回撤 - 5日最大回撤
10日最大回撤 - 10日最大回撤
20日最大回撤 - 20日最大回撤
30日最大回撤 - 30日最大回撤
60日最大回撤 - 60日最大回撤
120日最大回撤 - 120日最大回撤
【上涨/下跌捕获率】
5日上涨捕获率 - 5日上涨捕获率
10日上涨捕获率 - 10日上涨捕获率
20日上涨捕获率 - 20日上涨捕获率
30日上涨捕获率 - 30日上涨捕获率
60日上涨捕获率 - 60日上涨捕获率
120日上涨捕获率 - 120日上涨捕获率
5日下跌捕获率 - 5日下跌捕获率
10日下跌捕获率 - 10日下跌捕获率
20日下跌捕获率 - 20日下跌捕获率
30日下跌捕获率 - 30日下跌捕获率
60日下跌捕获率 - 60日下跌捕获率
120日下跌捕获率 - 120日下跌捕获率
【庄家/主力指标】
ZJTJ_无庄控盘 - ZJTJ庄家抬轿无庄控盘
ZJTJ_开始控盘 - ZJTJ庄家抬轿开始控盘
ZJTJ_有庄控盘 - ZJTJ庄家抬轿有庄控盘
ZJTJ_主力出货 - ZJTJ庄家抬轿主力出货
CYW - CYW主力控盘
ZLJC_JCS - ZLJC主力进出JCS
ZLJC_JCM - ZLJC主力进出JCM
ZLJC_JCL - ZLJC主力进出JCL
ZLMM_MMS - ZLMM主力买卖MMS
ZLMM_MMM - ZLMM主力买卖MMM
ZLMM_MML - ZLMM主力买卖MML
LHXJ_主力弃盘 - LHXJ猎狐先觉主力弃盘
LHXJ_主力控盘 - LHXJ猎狐先觉主力控盘
LYJH_机构做空能量线 - LYJH猎鹰歼狐机构做空能量线
LYJH_机构做多能量线 - LYJH猎鹰歼狐机构做多能量线
【智能交易信号】
BDZX_AK - BDZX波段之星AK
BDZX_AD1 - BDZX波段之星AD1
BDZX_AJ - BDZX波段之星AJ
BDZX_买进 - BDZX波段之星买进信号
BDZX_卖出 - BDZX波段之星卖出信号
CYHT_SK - CYHT财运亨通SK
CYHT_SD - CYHT财运亨通SD
CYHT_卖出 - CYHT财运亨通卖出信号
CYHT_买进 - CYHT财运亨通买进信号
BSQJ_B买 - BSQJ买卖区间B买信号
BSQJ_持仓 - BSQJ买卖区间持仓信号
BSQJ_S卖 - BSQJ买卖区间S卖信号
BSQJ_空仓 - BSQJ买卖区间空仓信号
JFZX_多头力量 - JFZX飓风智能中线多头力量
JFZX_空头力量 - JFZX飓风智能中线空头力量
XJDX_J - XJDX超级短线J
XJDX_D - XJDX超级短线D
XJDX_K - XJDX超级短线K
【其他特色指标】
CYS - CYS市场盈亏
CYR_CYR - CYR市场强弱CYR
CYR_MACYR - CYR市场强弱MACYR
CYE_CYEL - CYE市场趋势CYEL
CYE_CYES - CYE市场趋势CYES
CYS - CYS市场盈亏
RAD_RADER1 - RAD威力雷达RADER1
RAD_RADERMA - RAD威力雷达RADERMA
SG_XDT_QR - SG_XDT心电图QR
SG_XDT_MQR1 - SG_XDT心电图MQR1
SG_XDT_MQR2 - SG_XDT心电图MQR2
SG_NDB_DK - SG_NDB脑电波DK
SG_NDB_MDK1 - SG_NDB脑电波MDK1
SG_NDB_MDK2 - SG_NDB脑电波MDK2
SG_SMX_ZY1 - SG_SMX生命线ZY1
SG_SMX_ZY2 - SG_SMX生命线ZY2
SG_SMX_ZY3 - SG_SMX生命线ZY3
SG_LB_量比 - SG_LB量比
SG_LB_MA5 - SG_LB量比MA5
SG_LB_MA10 - SG_LB量比MA10
SG_PF - SG_PF强势股评分
SLZT_白龙 - SLZT神龙在天白龙
SLZT_黄龙 - SLZT神龙在天黄龙
SLZT_紫龙 - SLZT神龙在天紫龙
SLZT_青龙 - SLZT神龙在天青龙
SLZT_红龙 - SLZT神龙在天红龙
SLZT_蓝龙 - SLZT神龙在天蓝龙
ADVOL_ADVOL - ADVOL龙系离散量ADVOL
ADVOL_MA1 - ADVOL龙系离散量MA1
ADVOL_MA2 - ADVOL龙系离散量MA2
JAX_J - JAX济安线J
JAX_A - JAX济安线A
JAX_X - JAX济安线X
LON_LON - LON龙系长线LON
LON_LONMA - LON龙系长线LONMA
LON_LONT - LON龙系长线LONT
SHT_SHT - SHT龙系短线SHT
SHT_SHTMA - SHT龙系短线SHTMA
CDP_STD_CDP - CDP_STD逆势操作CDP
CDP_STD_AH - CDP_STD逆势操作AH
CDP_STD_NH - CDP_STD逆势操作NH
CDP_STD_NL - CDP_STD逆势操作NL
CDP_STD_AL - CDP_STD逆势操作AL
"""
print("\n" + "=" * 60)
print("📈 获取因子数据")
print("=" * 60)
# 获取基础因子数据
result = client.get_stock_factor_data(
stock='513100.SH', # 纳指ETF
start_date='20240101',
end_date='20500101',
columns='date,证券代码,close,high,low,volume,amount'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
# 获取涨跌幅因子数据
print("\n" + "-" * 40)
result = client.get_stock_factor_data(
stock='159915.SZ', # 创业板ETF
start_date='20220101',
end_date='20241231',
columns='date,证券代码,5日涨跌幅,10日涨跌幅,20日涨跌幅,60日涨跌幅'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
# 获取技术指标因子数据
print("\n" + "-" * 40)
result = client.get_stock_factor_data(
stock='513100.SH',
start_date='20240101',
end_date='20500101',
columns='date,证券代码,close,MACD_DIF,MACD_DEA,MACD_MACD,KDJ_K,KDJ_D,KDJ_J,RSI1,RSI2,RSI3,BOLL_BOLL,BOLL_UB,BOLL_LB'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据(技术指标)")
print(df.head())
# 获取均线系统因子
print("\n" + "-" * 40)
result = client.get_stock_factor_data(
stock='513100.SH',
start_date='20240101',
end_date='20500101',
columns='date,证券代码,close,5日均线,10日均线,20日均线,30日均线,60日均线,120日均线'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据(均线系统)")
print(df.head())
# 获取Alpha因子
print("\n" + "-" * 40)
result = client.get_stock_factor_data(
stock='128137.SZ',
start_date='20240101',
end_date='20500101',
columns='date,证券代码,close,Alpha001,Alpha002,Alpha003,Alpha004,Alpha005'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据(Alpha因子)")
print(df.head())
# 获取动量因子
print("\n" + "-" * 40)
result = client.get_stock_factor_data(
stock='513100.SH',
start_date='20240101',
end_date='20500101',
columns='date,证券代码,close,3日回归动量,5日回归动量,10日回归动量,20日回归动量,30日回归动量,60日回归动量'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据(动量因子)")
print(df.head())
8. 获取财务数据 获取资产负债表
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例4:获取资产负债表(全部字段)
# ============================================================
"""
参数说明:
table: str = '资产负债表' - 财务表类型
date: str = '2026-06-30' - 报告日期,格式YYYY-MM-DD
columns: str = 'secu_code,end_date,total_assets' - 选择字段,逗号分隔
财务表类型:
'资产负债表' - 资产负债表
'利润表' - 利润表
'现金流量表' - 现金流量表
'估值数据' - 估值数据
'成长能力' - 成长能力指标
'盈利能力' - 盈利能力指标
'每股指标' - 每股指标
'营运能力' - 营运能力指标
'偿债能力' - 偿债能力指标
【资产负债表 - balance_statement 全部字段】
secu_code - 股票代码
secu_abbr - 股票简称
company_type - 公司类型
end_date - 截止日期
publ_date - 公告日期
settlement_provi - 结算备付金
client_provi - 客户备付金
deposit_in_interbank - 存放同业款项
r_metal - 贵金属
lend_capital - 拆出资金
derivative_assets - 衍生金融资产
bought_sellback_assets - 买入返售金融资产
loan_and_advance - 发放贷款和垫款
insurance_receivables - 应收保费
receivable_subrogation_fee - 应收代位追偿款
reinsurance_receivables - 应收分保账款
receivable_unearned_r - 应收分保未到期责任准备金
receivable_claims_r - 应收分保未决赔款准备金
receivable_life_r - 应收分保寿险责任准备金
receivable_lt_health_r - 应收分保长期健康险责任准备金
insurer_impawn_loan - 保户质押贷款
fixed_deposit - 定期存款
refundable_capital_deposit - 存出资本保证金
refundable_deposit - 存出保证金
independence_account_assets - 独立账户资产
other_assets - 其他资产
borrowing_from_centralbank - 向中央银行借款
deposit_of_interbank - 同业及其他金融机构存放款项
borrowing_capital - 拆入资金
derivative_liability - 衍生金融负债
sold_buyback_secu_proceeds - 卖出回购金融资产款
deposit - 吸收存款
proxy_secu_proceeds - 代理买卖证券款
sub_issue_secu_proceeds - 代理承销证券款
deposits_received - 存入保证金
advance_insurance - 预收保费
commission_payable - 应付手续费及佣金
reinsurance_payables - 应付分保账款
compensation_payable - 应付赔付款
policy_dividend_payable - 应付保单红利
insurer_deposit_investment - 保户储金及投资款
unearned_premium_reserve - 未到期责任准备金
outstanding_claim_reserve - 未决赔款准备金
life_insurance_reserve - 寿险责任准备金
lt_health_insurance_lr - 长期健康险责任准备金
independence_liability - 独立账户负债
other_liability - 其他负债
cash_equivalents - 货币资金
client_deposit - 客户资金存款
trading_assets - 交易性金融资产
bill_receivable - 应收票据
dividend_receivable - 应收股利
interest_receivable - 应收利息
account_receivable - 应收账款
other_receivable - 其他应收款
advance_payment - 预付款项
inventories - 存货
non_current_asset_in_one_year - 一年内到期的非流动资产
other_current_assets - 其他流动资产
total_current_assets - 流动资产合计
shortterm_loan - 短期借款
impawned_loan - 质押借款
trading_liability - 交易性金融负债
notes_payable - 应付票据
accounts_payable - 应付账款
advance_receipts - 预收款项
salaries_payable - 应付职工薪酬
dividend_payable - 应付股利
taxs_payable - 应交税费
interest_payable - 应付利息
other_payable - 其他应付款
non_current_liability_in_one_year - 一年内到期的非流动负债
other_current_liability - 其他流动负债
total_current_liability - 流动负债合计
hold_for_sale_assets - 可供出售金融资产
hold_to_maturity_investments - 持有至到期投资
investment_property - 投资性房地产
longterm_equity_invest - 长期股权投资
longterm_receivable_account - 长期应收款
fixed_assets - 固定资产
construction_materials - 工程物资
constru_in_process - 在建工程
fixed_assets_liquidation - 固定资产清理
biological_assets - 生产性生物资产
oil_gas_assets - 油气资产
intangible_assets - 无形资产
seat_costs - 交易席位费
development_expenditure - 开发支出
good_will - 商誉
long_deferred_expense - 长期待摊费用
deferred_tax_assets - 递延所得税资产
other_non_current_assets - 其他非流动资产
total_non_current_assets - 非流动资产合计
longterm_loan - 长期借款
bonds_payable - 应付债券
longterm_account_payable - 长期应付款
long_salaries_pay - 长期应付职工薪酬
specific_account_payable - 专项应付款
estimate_liability - 预计负债
deferred_tax_liability - 递延所得税负债
long_defer_income - 长期递延收益
other_non_current_liability - 其他非流动负债
total_non_current_liability - 非流动负债合计
paidin_capital - 实收资本(或股本)
other_equityinstruments - 其他权益工具
capital_reserve_fund - 资本公积
surplus_reserve_fund - 盈余公积
retained_profit - 未分配利润
treasury_stock - 减:库存股
other_composite_income - 其他综合收益
ordinary_risk_reserve_fund - 一般风险准备
foreign_currency_report_conv_diff - 外币报表折算差额
specific_reserves - 专项储备
se_without_mi - 归属母公司股东权益合计
minority_interests - 少数股东权益
total_shareholder_equity - 所有者权益合计
total_liability_and_equity - 负债和权益总计
total_assets - 资产总计
total_liability - 负债总计
contract_liability - 合同负债
total_fixed_asset - 固定资产合计
t_constru_in_process - 在建工程合计
"""
print("\n" + "=" * 60)
print("💰 获取资产负债表")
print("=" * 60)
result = client.get_stock_finance_data(
table='资产负债表',
date='2024-06-30',
columns='secu_code,secu_abbr,end_date,total_assets,total_liability,total_shareholder_equity'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
9. 获取利润表
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例5:获取利润表(全部字段)
# ============================================================
"""
【利润表 - income_statement 全部字段】
secu_code - 股票代码
secu_abbr - 股票简称
company_type - 公司类型
end_date - 截止日期
publ_date - 公告日期
basic_eps - 基本每股收益
diluted_eps - 稀释每股收益
net_profit - 净利润
np_parent_company_owners - 归属于母公司所有者的净利润
minority_profit - 少数股东损益
total_operating_cost - 营业总成本
operating_payout - 营业支出
refunded_premiums - 退保金
compensation_expense - 赔付支出
amortization_expense - 减:摊回赔付支出
premium_reserve - 提取保险责任准备金
amortization_premium_reserve - 减:摊回保险责任准备金
policy_dividend_payout - 保单红利支出
reinsurance_cost - 分保费用
amortization_reinsurance_cost - 减:摊回分保费用
insurance_commission_expense - 保险手续费及佣金支出
other_operating_cost - 其他营业成本
operating_cost - 营业成本
operating_tax_surcharges - 营业税金及附加
operating_expense - 销售费用
administration_expense - 管理费用
financial_expense - 财务费用
asset_impairment_loss - 资产减值损失
operating_profit - 营业利润
non_operating_income - 加:营业收入
non_operating_expense - 减:营业外支出
non_current_assetss_deal_loss - 其中:非流动资产处置净损失
total_operating_revenue - 营业总收入
operating_revenue - 营业收入
net_interest_income - 利息净收入
interest_income - 其中:利息收入
interest_expense - 其中:利息支出
net_commission_income - 手续费及佣金净收入
commission_income - 其中:手续费及佣金收入
commission_expense - 其中:手续费及佣金支出
net_proxy_secu_income - 其中:代理买卖证券业务净收入
net_subissue_secu_income - 其中:证券承销业务净收入
net_trust_income - 其中:受托客户资产管理业务净收入
premiums_earned - 已赚保费
premiums_income - 保险业务收入
reinsurance_income - 其中:分保费收入
reinsurance - 减:分出保费
unearned_premium_reserve - 提取未到期责任准备金
other_operating_revenue - 其他营业收入
other_net_revenue - 非营业性收入
fair_value_change_income - 公允价值变动净收益
invest_income - 投资净收益
invest_income_associates - 其中:对联营合营企业的投资收益
exchange_income - 汇兑收益
total_profit - 利润总额
income_tax_cost - 减:所得税费用
total_composite_income - 综合收益总额
ci_parent_company_owners - 归属于母公司所有者的综合收益总额
ci_minority_owners - 归属于少数股东的综合收益总额
r_and_d - 研发费用
"""
print("\n" + "=" * 60)
print("💰 获取利润表")
print("=" * 60)
result = client.get_stock_finance_data(
table='利润表',
date='2024-06-30',
columns='secu_code,secu_abbr,total_operating_revenue,operating_cost,net_profit,basic_eps'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
10. 现金流量表
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例6:获取现金流量表(全部字段)
# ============================================================
"""
【现金流量表 - cashflow_statement 全部字段】
secu_code - 股票代码
secu_abbr - 股票简称
company_type - 公司类型
end_date - 截止日期
publ_date - 公告日期
goods_sale_service_render_cash - 销售商品、提供劳务收到的现金
tax_levy_refund - 收到的税费返还
net_deposit_increase - 客户存款和同业存放款项净增加额
net_borrowing_from_central_bank - 向中央银行借款净增加额
net_borrowing_from_finance_co - 向其他金融机构拆入资金净增加额
interest_and_commission_cashin - 收取利息、手续费及佣金的现金
net_deal_trading_assets - 处置交易性金融资产净增加额
net_buyback - 回购业务资金净增加额
net_original_insurance_cash - 收到原保险合同保费取得的现金
net_reinsurance_cash - 收到再保业务现金净额
net_insurer_deposit_investment - 保户储金及投资款净增加额
other_cashin_related_operate - 收到其他与经营活动有关的现金
subtotal_operate_cash_inflow - 经营活动现金流入小计
goods_and_services_cash_paid - 购买商品、接受劳务支付的现金
staff_behalf_paid - 支付给职工以及为职工支付的现金
all_taxes_paid - 支付的各项税费
net_loan_and_advance_increase - 客户贷款及垫款净增加额
net_deposit_in_cb_and_ib - 存放中央银行和同业款项净增加额
net_lend_capital - 拆出资金净增加额
commission_cash_paid - 支付手续费及佣金的现金
original_compensation_paid - 支付原保险合同赔付款项的现金
net_cash_for_reinsurance - 支付再保业务现金净额
policy_dividend_cash_paid - 支付保单红利的现金
other_operate_cash_paid - 支付其他与经营活动有关的现金
subtotal_operate_cash_outflow - 经营活动现金流出小计
net_operate_cash_flow - 经营活动产生的现金流量净额
invest_withdrawal_cash - 收回投资收到的现金
invest_proceeds - 取得投资收益收到的现金
fix_intan_other_asset_dispo_cash - 处置固定资产、无形资产和其他长期资产收回的现金净额
net_cash_deal_sub_company - 处置子公司及其他营业单位收到的现金净额
other_cash_from_invest_act - 收到其他与投资活动有关的现金
subtotal_invest_cash_inflow - 投资活动现金流入小计
fix_intan_other_asset_acqui_cash - 购建固定资产、无形资产和其他长期资产支付的现金
invest_cash_paid - 投资支付的现金
net_cash_from_sub_company - 取得子公司及其他营业单位支付的现金净额
impawned_loan_net_increase - 质押贷款净增加额
other_cash_to_invest_act - 支付其他与投资活动有关的现金
subtotal_invest_cash_outflow - 投资活动现金流出小计
net_invest_cash_flow - 投资活动产生的现金流量净额
cash_from_invest - 吸收投资收到的现金
cash_from_bonds_issue - 发行债券收到的现金
cash_from_borrowing - 取得借款收到的现金
other_finance_act_cash - 收到其他与筹资活动有关的现金
subtotal_finance_cash_inflow - 筹资活动现金流入小计
borrowing_repayment - 偿还债务支付的现金
dividend_interest_payment - 分配股利、利润或偿付利息支付的现金
other_finance_act_payment - 支付其他与筹资活动有关的现金
subtotal_finance_cash_outflow - 筹资活动现金流出小计
net_finance_cash_flow - 筹资活动产生的现金流量净额
exchan_rate_change_effect - 汇率变动对现金及现金等价物的影响
cash_equivalent_increase - 现金及现金等价物净增加额
begin_period_cash - 加:期初现金及现金等价物余额
end_period_cash_equivalent - 期末现金及现金等价物余额
net_profit - 净利润
minority_profit - 加:少数股东损益
assets_depreciation_reserves - 加:资产减值准备
fixed_asset_depreciation - 固定资产折旧
intangible_asset_amortization - 收无形资产摊销
deferred_expense_amort - 长期待摊费用摊销
deferred_expense_decreased - 待摊费用减少(减:增加)
accrued_expense_added - 预提费用增加(减:减少)
fix_intanther_asset_dispo_loss - 处置固定资产、无形资产和其他长期资产的损失
fixed_asset_scrap_loss - 固定资产报废损失
loss_from_fair_value_changes - 公允价值变动损失
financial_expense - 财务费用
invest_loss - 投资损失
defered_tax_asset_decrease - 递延所得税资产减少
defered_tax_liability_increase - 递延所得税负债增加
inventory_decrease - 存货的减少
operate_receivable_decrease - 经营性应收项目的减少
operate_payable_increase - 经营性应付项目的增加
others - 其他
net_operate_cash_flow_notes - 经营活动产生的现金流量净额
debt_to_captical - 债务转为资本
cbs_expiring_within_one_year - 一年内到期的可转换公司债券
fixed_assets_finance_leases - 融资租入固定资产
cash_at_end_of_year - 现金的期末余额
cash_at_beginning_of_year - 减:现金的期初余额
cash_equivalents_at_end_of_year - 加:现金等价物的期末余额
cash_equivalents_at_beginning - 减:现金等价物的期初余额
net_incr_in_cash_and_equivalents - 现金及现金等价物净增加额
"""
print("\n" + "=" * 60)
print("💰 获取现金流量表")
print("=" * 60)
result = client.get_stock_finance_data(
table='现金流量表',
date='2024-06-30',
columns='secu_code,secu_abbr,net_operate_cash_flow,net_invest_cash_flow,net_finance_cash_flow'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
11. 获取估值数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例7:获取估值数据(全部字段)
# ============================================================
"""
【估值数据 - valuation 全部字段】
trading_day - 交易日期(固定返回)
total_value - A股总市值(元)(固定返回)
float_value - A股流通市值(元)(自选返回)
naps - 每股净资产/(元/股)(自选返回)
pcf - 市现率(自选返回)
secu_abbr - 证券简称(自选返回)
secu_code - 证券代码(固定返回)
ps - 市销率PS(自选返回)
ps_ttm - 市销率PS(TTM)(自选返回)
pe_ttm - 市盈率PE(TTM)(自选返回)
a_shares - A股股本(自选返回)
a_floats - 可流通A股(自选返回)
pe_dynamic - 动态市盈率(自选返回)
pe_static - 静态市盈率(自选返回)
b_floats - 可流通B股(自选返回)
b_shares - B股股本(自选返回)
h_shares - H股股本(自选返回)
total_shares - 总股本(自选返回)
turnover_rate - 换手率(自选返回)
dividend_ratio - 滚动股息率(自选返回)
pb - 市净率(自选返回)
roe - 净资产收益率(自选返回)
"""
print("\n" + "=" * 60)
print("💰 获取估值数据")
print("=" * 60)
result = client.get_stock_finance_data(
table='估值数据',
date='2024-06-30',
columns='secu_code,secu_abbr,pe_ttm,pb,total_value,roe,turnover_rate'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
12. 获取成长能力数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例8:获取成长能力数据(全部字段)
# ============================================================
"""
【成长能力 - growth_ability 全部字段】
secu_code - 股票代码(固定返回)
secu_abbr - 股票简称(固定返回)
publ_date - 公告日期(固定返回)
end_date - 截止日期(固定返回)
basic_eps_yoy - 基本每股收益同比增长(%)
diluted_eps_yoy - 稀释每股收益同比增长(%)
operating_revenue_grow_rate - 营业收入同比增长(%)
np_parent_company_yoy - 归属母公司股东的净利润同比增长(%)
net_operate_cash_flow_yoy - 经营活动产生的现金流量净额同比增长(%)
oper_profit_grow_rate - 营业利润同比增长(%)
total_profit_grow_rate - 利润总额同比增长(%)
eps_grow_rate_ytd - 每股净资产相对年初增长率(%)
se_without_mi_grow_rate_ytd - 归属母公司股东的权益相对年初增长率(%)
ta_grow_rate_ytd - 资产总计相对年初增长率(%)
np_parent_company_cut_yoy - 归属母公司股东的净利润(扣除)同比增长(%)
avg_np_yoy_past_five_year - 过去五年同期归属母公司净利润平均增幅(%)
oper_cash_ps_grow_rate - 每股经营活动产生的现金流量净额同比增长(%)
naor_yoy - 净资产收益率(摊薄)同比增(%)
net_asset_grow_rate - 净资产同比增长(%)
total_asset_grow_rate - 总资产同比增长(%)
sustainable_grow_rate - 可持续增长率(%)
net_profit_grow_rate - 净利润同比增长(%)
"""
print("\n" + "=" * 60)
print("📈 获取成长能力数据")
print("=" * 60)
result = client.get_stock_finance_data(
table='成长能力',
date='2024-06-30',
columns='secu_code,secu_abbr,operating_revenue_grow_rate,np_parent_company_yoy,oper_profit_grow_rate'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
13. 盈利能力
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例9:获取盈利能力数据(全部字段)
# ============================================================
"""
【盈利能力 - profit_ability 全部字段】
secu_code - 股票代码(固定返回)
secu_abbr - 股票简称(固定返回)
publ_date - 公告日期(固定返回)
end_date - 截止日期(固定返回)
roe_avg - 净资产收益率%平均计算值(%)
roe_weighted - 净资产收益率%加权公布值(%)
roe - 净资产收益率%摊薄公布值(%)
roe_cut - 净资产收益率%扣除摊薄(%)
roe_cut_weighted - 净资产收益率%扣除加权(%)
roe_ttm - 净资产收益率_TTM(%)
roa_ebit - 总资产报酬率(%)
roa_ebit_ttm - 总资产报酬率_TTM(%)
roa - 总资产净利率(%)
roa_ttm - 总资产净利率_TTM(%)
roic - 投入资本回报率(%)
net_profit_ratio - 销售净利率(%)
net_profit_ratio_ttm - 销售净利率_TTM(%)
gross_income_ratio - 销售毛利率(%)
gross_income_ratio_ttm - 销售毛利率_TTM(%)
sales_cost_ratio - 销售成本率(%)
period_costs_rate - 销售期间费用率(%)
period_costs_rate_ttm - 销售期间的费用率_TTM(%)
np_to_tor - 净利润/营业总收入(%)
np_to_tor_ttm - 净利润/营业总收入_TTM(%)
operating_profit_to_tor - 营业利润/营业总收入(%)
operating_profit_to_tor_ttm - 营业利润/营业总收入_TTM(%)
ebit_to_tor - 息税前利润/营业总收入(%)
ebit_to_tor_ttm - 息税前利润/营业总收入_TTM(%)
t_operating_cost_to_tor - 营业总成本/营业总收入(%)
t_operating_cost_to_tor_ttm - 营业总成本/营业总收入_TTM(%)
operating_expense_rate - 销售费用/营业总收入(%)
operating_expense_rate_ttm - 销售费用/营业总收入_TTM(%)
admini_expense_rate - 管理费用/营业总收入(%)
admini_expense_rate_ttm - 管理费用/营业总收入_TTM(%)
financial_expense_rate - 财务费用/营业总收入(%)
financial_expense_rate_ttm - 财务费用/营业总收入_TTM(%)
asset_impa_loss_to_tor - 资产减值损失/营业总收入(%)
asset_impa_loss_to_tor_ttm - 资产减值损失/营业总收入_TTM(%)
net_profit - 归属母公司净利润(元)
net_profit_cut - 扣除非经常性损益后的净利润(元)
ebit - 息税前利润(元)
ebitda - 息税折旧摊销前利润(元)
operating_profit_ratio - 营业利润率(%)
total_profit_cost_ratio - 成本费用利润率
"""
print("\n" + "=" * 60)
print("📈 获取盈利能力数据")
print("=" * 60)
result = client.get_stock_finance_data(
table='盈利能力',
date='2024-06-30',
columns='secu_code,secu_abbr,roe,gross_income_ratio,net_profit_ratio'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
14. 每股指标
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例10:获取每股指标数据(全部字段)
# ============================================================
"""
【每股指标 - eps 全部字段】
secu_code - 股票代码(固定返回)
secu_abbr - 股票简称(固定返回)
publ_date - 公告日期(固定返回)
end_date - 截止日期(固定返回)
basic_eps - 基本每股收益(元/股)
diluted_eps - 稀释每股收益(元/股)
eps - 每股收益_期末股本摊薄(元/股)
eps_ttm - 每股收益_TTM(元/股)
naps - 每股净资产(元/股)
total_operating_revenue_ps - 每股营业总收入(元/股)
main_income_ps - 每股营业收入(元/股)
operating_revenue_ps_ttm - 每股营业收入_TTM(元/股)
oper_profit_ps - 每股营业利润(元/股)
ebitps - 每股息税前利润(元/股)
capital_surplus_fund_ps - 每股资本公积金(元/股)
surplus_reserve_fund_ps - 每股盈余公积(元/股)
accumulation_fund_ps - 每股公积金(元/股)
undivided_profit - 每股未分配利润(元/股)
retained_earnings_ps - 每股留存收益(元/股)
net_operate_cash_flow_ps - 每股经营活动产生的现金流量净额(元/股)
net_operate_cash_flow_ps_ttm - 每股经营活动产生的现金流量净额_TTM(元/股)
cash_flow_ps - 每股现金流量净额(元/股)
cash_flow_ps_ttm - 每股现金流量净额_TTM(元/股)
enterprise_fcf_ps - 每股企业自由现金流量(元/股)
shareholder_fcf_ps - 每股股东自由现金流量(元/股)
"""
print("\n" + "=" * 60)
print("📈 获取每股指标数据")
print("=" * 60)
result = client.get_stock_finance_data(
table='每股指标',
date='2024-06-30',
columns='secu_code,secu_abbr,basic_eps,diluted_eps,naps'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
15. 获取营运能力数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例11:获取营运能力数据(全部字段)
# ============================================================
"""
【营运能力 - operating_ability 全部字段】
secu_code - 股票代码(固定返回)
secu_abbr - 股票简称(固定返回)
publ_date - 公告日期(固定返回)
end_date - 截止日期(固定返回)
oper_cycle - 营业周期(天/次)
inventory_turnover_rate - 存货周转率(次)
inventory_turnover_days - 存货周转天数(天/次)
accounts_receivables_turnover_rate - 应收账款周转率(次)
accounts_receivables_turnover_days - 应收账款周转天数(天/次)
accounts_payables_turnover_rate - 应付账款周转率(次)
accounts_payables_turnover_days - 应付账款周转天数(天/次)
current_assets_turnover_rate - 流动资产周转率(次)
fixed_asset_turnover_rate - 固定资产周转率(次)
equity_turnover_rate - 股东权益周转率(次)
total_asset_turnover_rate - 总资产周转率(次)
"""
print("\n" + "=" * 60)
print("📈 获取营运能力数据")
print("=" * 60)
result = client.get_stock_finance_data(
table='营运能力',
date='2024-06-30',
columns='secu_code,secu_abbr,inventory_turnover_rate,accounts_receivables_turnover_rate,total_asset_turnover_rate'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
16. 获取偿债能力数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例12:获取偿债能力数据(全部字段)
# ============================================================
"""
【偿债能力 - debt_paying_ability 全部字段】
secu_code - 股票代码(固定返回)
secu_abbr - 股票简称(固定返回)
publ_date - 公告日期(固定返回)
end_date - 截止日期(固定返回)
current_ratio - 流动比率
quick_ratio - 速动比率
super_quick_ratio - 超速动比率
debt_equity_ratio - 产权比率(%)
sewmi_to_total_liability - 归属母公司股东的权益/负债合计(%)
sewmi_to_interest_bear_debt - 归属母公司股东的权益/带息债务(%)
debt_tangible_equity_ratio - 有形净值债务率(%)
tangible_a_to_interest_bear_debt - 有形净值/带息债务(%)
tangible_a_to_net_debt - 有形净值/净债务(%)
ebitda_to_t_liability - 息税折旧摊销前利润/负债合计
nocf_to_t_liability - 经营活动产生现金流量净额/负债合计
nocf_to_interest_bear_debt - 经营活动产生现金流量净额/带息债务
nocf_to_current_liability - 经营活动产生现金流量净额/流动负债
nocf_to_net_debt - 经营活动产生现金流量净额/净债务
interest_cover - 利息保障倍数(倍)
long_debt_to_working_capital - 长期负债与营运资金比率
opercashinto_current_debt - 现金流动负债比
"""
print("\n" + "=" * 60)
print("📈 获取偿债能力数据")
print("=" * 60)
result = client.get_stock_finance_data(
table='偿债能力',
date='2024-06-30',
columns='secu_code,secu_abbr,current_ratio,quick_ratio,debt_equity_ratio'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条数据")
print(df.head())
六、多标的量化分析接口
1相关性矩阵
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例45:计算多标的收益率相关性矩阵
# ============================================================
"""
参数说明:
start_date: str = '20260101' - 开始日期
end_date: str = '20500101' - 结束日期
stock_list: str = '159915.SZ,513100.SH,518880.SH' - 股票列表
max_workers: int = 4 - 最大进程数
method: str = 'pearson' - 相关性计算方法:pearson/spearman/kendall
risk_free_rate: float = 0.03 - 无风险利率
返回数据:
correlation_matrix - 相关性矩阵
correlation_matrix_index - 矩阵索引(股票代码列表)
covariance_matrix - 协方差矩阵
stock_list - 股票列表
method - 使用的计算方法
"""
print("\n" + "=" * 60)
print("📊 多标的收益率相关性矩阵")
print("=" * 60)
result = client.xg_stock_cov_correlation(
start_date='20240101',
end_date='20241231',
stock_list='159915.SZ,513100.SH,518880.SH',
max_workers=4,
method='pearson',
risk_free_rate=0.03
)
print(result)
2 协方差矩阵
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例46:计算多标的收益率协方差矩阵
# ============================================================
"""
参数说明:
start_date: str = '20260101' - 开始日期
end_date: str = '20500101' - 结束日期
stock_list: str = '159915.SZ,513100.SH,518880.SH' - 股票列表
max_workers: int = 4 - 最大进程数
method: str = 'pearson' - 相关性计算方法
risk_free_rate: float = 0.03 - 无风险利率
annualized: bool = True - 是否年化协方差矩阵
返回数据:
covariance_matrix - 协方差矩阵
covariance_matrix_index - 矩阵索引
standard_deviations - 标准差(年化)
stock_list - 股票列表
annualized - 是否年化
"""
print("\n" + "=" * 60)
print("📊 多标的收益率协方差矩阵")
print("=" * 60)
result = client.xg_stock_cov_covariance(
start_date='20240101',
end_date='20241231',
stock_list='159915.SZ,513100.SH,518880.SH',
max_workers=4,
method='pearson',
risk_free_rate=0.03,
annualized=True
)
print(result)
3投资组合优化
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例47:多标的投资组合优化
# ============================================================
"""
参数说明:
start_date: str = '20260101' - 开始日期
end_date: str = '20500101' - 结束日期
stock_list: str = '159915.SZ,513100.SH,518880.SH' - 股票列表
max_workers: int = 4 - 最大进程数
method: str = 'pearson' - 相关性计算方法
risk_free_rate: float = 0.03 - 无风险利率
target_return: float = None - 目标收益率(年化),可选
返回组合:
min_variance - 最小方差组合
max_sharpe - 最大夏普比率组合
risk_parity - 风险平价组合
equal_weight - 等权重组合(基准)
target_return_portfolio - 目标收益组合(如果指定target_return)
每个组合包含:
weights - 各标的权重
expected_return - 预期收益率(年化)
volatility - 波动率(年化)
sharpe_ratio - 夏普比率
"""
print("\n" + "=" * 60)
print("📊 多标的投资组合优化")
print("=" * 60)
# 不指定目标收益率
result = client.xg_stock_cov_portfolio(
start_date='20240101',
end_date='20241231',
stock_list='159915.SZ,513100.SH,518880.SH',
max_workers=4,
method='pearson',
risk_free_rate=0.03,
target_return=None
)
print("投资组合优化结果:")
print(result)
# 指定目标收益率
print("\n" + "-" * 40)
print("指定目标收益率 15%")
result = client.xg_stock_cov_portfolio(
start_date='20240101',
end_date='20241231',
stock_list='159915.SZ,513100.SH,518880.SH',
max_workers=4,
method='pearson',
risk_free_rate=0.03,
target_return=0.15
)
print(result)
4股票组合分析接口
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例48:小果股票分析系统 - 组合收益分析
# ============================================================
"""
参数说明:
start_date: str = '20240101' - 开始日期
end_date: str = '20261231' - 结束日期
stock_list: str = '159915.SZ,518880.SH,510300.SH' - 股票列表
stock_weight: str = '0.4,0.3,0.3' - 股票权重(自动归一化)
index_stock: str = '000300.SH' - 基准指数
max_workers: int = 4 - 最大进程数
risk_free_rate: float = 0.03 - 无风险利率
返回数据结构:
summary - 基本摘要信息(日期范围、股票数量等)
performance_metrics - 完整绩效指标(50+项)
annual_performance - 年度绩效
rolling_metrics - 滚动指标(60日窗口)
period_returns - 周期收益(日/周/月/年)
equity_curve - 权益曲线(每日净值)
weight_info - 个股权重信息
raw_data - 原始日度数据
绩效指标包括:
total_return - 总收益率
annual_return - 年化收益率
annual_std - 年化波动率
sharpe_ratio - 夏普比率
max_drawdown - 最大回撤
max_drawdown_duration - 最大回撤持续天数
win_rate - 胜率
positive_ratio - 正收益比例
beta - Beta系数
alpha - Alpha系数
information_ratio - 信息比率
tracking_error - 跟踪误差
calmar_ratio - 卡玛比率
sortino_ratio - 索提诺比率
"""
print("\n" + "=" * 60)
print("📊 小果股票分析系统 - 组合收益分析")
print("=" * 60)
result = client.xg_stock_analysis(
start_date='20240101',
end_date='20241231',
stock_list='159915.SZ,518880.SH,510300.SH',
stock_weight='0.4,0.3,0.3',
index_stock='000300.SH',
max_workers=4,
risk_free_rate=0.03
)
print("股票组合分析结果:")
print(f"状态: {result.get('status')}")
print(f"消息: {result.get('message')}")
# 提取绩效指标
metrics = result.get('performance_metrics', {})
print(f"\n📈 绩效指标:")
print(f" 总收益率: {metrics.get('total_return', 0)*100:.2f}%")
print(f" 年化收益率: {metrics.get('annual_return', 0)*100:.2f}%")
print(f" 年化波动率: {metrics.get('annual_std', 0)*100:.2f}%")
print(f" 夏普比率: {metrics.get('sharpe_ratio', 0):.4f}")
print(f" 最大回撤: {metrics.get('max_drawdown', 0)*100:.2f}%")
print(f" 胜率: {metrics.get('positive_ratio', 0)*100:.2f}%")
if 'beta' in metrics:
print(f" Beta: {metrics.get('beta', 0):.4f}")
if 'alpha' in metrics:
print(f" Alpha: {metrics.get('alpha', 0)*100:.2f}%")
七股票分钟数据
获取5分钟数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例57:获取5分钟数据(mini)
# ============================================================
"""
参数说明:
stock: str = 'sh.600031' - 股票代码(mini格式)
start_date: str = '2026-04-01' - 开始日期
end_date: str = '2050-12-31' - 结束日期
frequency: str = '5' - 频率(5/15/30/60)
adjustflag: str = '2' - 复权类型(1-不复权 2-前复权 3-后复权)
"""
print("\n" + "=" * 60)
print("📊 获取5分钟数据(mini)")
print("=" * 60)
result = client.get_mini_data_5(
stock='sh.600031',
start_date='2026-04-01',
end_date='2050-12-31',
frequency='5',
adjustflag='2'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条5分钟数据(mini)")
print(df.head())
2获取5分钟数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例57:获取5分钟数据(mini)
# ============================================================
"""
参数说明:
stock: str = 'sh.600031' - 股票代码(mini格式)
start_date: str = '2026-04-01' - 开始日期
end_date: str = '2050-12-31' - 结束日期
frequency: str = '5' - 频率(5/15/30/60)
adjustflag: str = '2' - 复权类型(1-不复权 2-前复权 3-后复权)
"""
print("\n" + "=" * 60)
print("📊 获取5分钟数据(mini)")
print("=" * 60)
result = client.get_mini_data_5(
stock='sh.600031',
start_date='2026-04-01',
end_date='2050-12-31',
frequency='5',
adjustflag='2'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条5分钟数据(mini)")
print(df.head())
3获取15分钟数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例58:获取15分钟数据(mini)
# ============================================================
"""
参数说明:
stock: str = 'sh.600031' - 股票代码(mini格式)
start_date: str = '2026-04-01' - 开始日期
end_date: str = '2050-12-31' - 结束日期
frequency: str = '15' - 频率
adjustflag: str = '2' - 复权类型
"""
print("\n" + "=" * 60)
print("📊 获取15分钟数据(mini)")
print("=" * 60)
result = client.get_mini_data_15(
stock='sh.600031',
start_date='2026-04-01',
end_date='2050-12-31',
frequency='15',
adjustflag='2'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条15分钟数据(mini)")
print(df.head()
4 获取30分钟数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例59:获取30分钟数据(mini)
# ============================================================
"""
参数说明:
stock: str = 'sh.600031' - 股票代码(mini格式)
start_date: str = '2026-04-01' - 开始日期
end_date: str = '2050-12-31' - 结束日期
frequency: str = '30' - 频率
adjustflag: str = '2' - 复权类型
"""
print("\n" + "=" * 60)
print("📊 获取30分钟数据(mini)")
print("=" * 60)
result = client.get_mini_data_30(
stock='sh.600031',
start_date='2026-04-01',
end_date='2050-12-31',
frequency='30',
adjustflag='2'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条30分钟数据(mini)")
print(df.head())
5获取60分钟数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例60:获取60分钟数据(mini)
# ============================================================
"""
参数说明:
stock: str = 'sh.600031' - 股票代码(mini格式)
start_date: str = '2026-04-01' - 开始日期
end_date: str = '2050-12-31' - 结束日期
frequency: str = '60' - 频率
adjustflag: str = '2' - 复权类型
"""
print("\n" + "=" * 60)
print("📊 获取60分钟数据(mini)")
print("=" * 60)
result = client.get_mini_data_60(
stock='sh.600031',
start_date='2026-04-01',
end_date='2050-12-31',
frequency='60',
adjustflag='2'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条60分钟数据(mini)")
print(df.head())
6 获取日线数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例61:获取日线数据
# ============================================================
"""
参数说明:
stock: str = 'sh.600031' - 股票代码(mini格式)
start_date: str = '2026-04-01' - 开始日期
end_date: str = '2050-12-31' - 结束日期
frequency: str = 'd' - 频率(d/w/m)
adjustflag: str = '2' - 复权类型(1-不复权 2-前复权 3-后复权)
返回字段:
date, open, high, low, close, volume, amount
"""
print("\n" + "=" * 60)
print("📊 获取日线数据")
print("=" * 60)
result = client.query_history_k_data_plus_d(
stock='sh.600031',
start_date='2026-04-01',
end_date='2050-12-31',
frequency='d',
adjustflag='2'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条日线数据")
print(df.head())
7 获取周线数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例62:获取周线数据
# ============================================================
"""
参数说明:
stock: str = 'sh.600031' - 股票代码(mini格式)
start_date: str = '2026-04-01' - 开始日期
end_date: str = '2050-12-31' - 结束日期
frequency: str = 'w' - 频率
adjustflag: str = '2' - 复权类型
"""
print("\n" + "=" * 60)
print("📊 获取周线数据")
print("=" * 60)
result = client.query_history_k_data_plus_w(
stock='sh.600031',
start_date='2026-04-01',
end_date='2050-12-31',
frequency='w',
adjustflag='2'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条周线数据")
print(df.head())
8获取月线数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例63:获取月线数据
# ============================================================
"""
参数说明:
stock: str = 'sh.600031' - 股票代码(mini格式)
start_date: str = '2026-04-01' - 开始日期
end_date: str = '2050-12-31' - 结束日期
frequency: str = 'm' - 频率
adjustflag: str = '2' - 复权类型
"""
print("\n" + "=" * 60)
print("📊 获取月线数据")
print("=" * 60)
result = client.query_history_k_data_plus_m(
stock='sh.600031',
start_date='2026-04-01',
end_date='2050-12-31',
frequency='m',
adjustflag='2'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条月线数据")
print(df.head())
八指数K线数据接口
1获取指数日线数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例64:获取指数日线数据
# ============================================================
"""
参数说明:
stock: str = 'sh.000001' - 指数代码(sh.000001 上证指数,sz.399001 深证成指)
start_date: str = '2026-04-01' - 开始日期
end_date: str = '2050-12-31' - 结束日期
frequency: str = 'd' - 频率(d/w/m)
"""
print("\n" + "=" * 60)
print("📊 获取指数日线数据")
print("=" * 60)
result = client.query_history_k_data_plus_index_d(
stock='sh.000001',
start_date='2026-04-01',
end_date='2050-12-31',
frequency='d'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条指数日线数据")
print(df.head())
2获取指数周线数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例65:获取指数周线数据
# ============================================================
"""
参数说明:
stock: str = 'sh.000001' - 指数代码
start_date: str = '2026-04-01' - 开始日期
end_date: str = '2050-12-31' - 结束日期
frequency: str = 'w' - 频率
"""
print("\n" + "=" * 60)
print("📊 获取指数周线数据")
print("=" * 60)
result = client.query_history_k_data_plus_index_w(
stock='sh.000001',
start_date='2026-04-01',
end_date='2050-12-31',
frequency='w'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条指数周线数据")
print(df.head())
3获取指数月线数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例66:获取指数月线数据
# ============================================================
"""
参数说明:
stock: str = 'sh.000001' - 指数代码
start_date: str = '2026-04-01' - 开始日期
end_date: str = '2050-12-31' - 结束日期
frequency: str = 'm' - 频率
"""
print("\n" + "=" * 60)
print("📊 获取指数月线数据")
print("=" * 60)
result = client.query_history_k_data_plus_index_m(
stock='sh.000001',
start_date='2026-04-01',
end_date='2050-12-31',
frequency='m'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条指数月线数据")
print(df.head())
九 财务数据
1获取盈利能力数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例1:获取盈利能力数据
# ============================================================
"""
参数说明:
code: str = 'sh.600031' - 股票代码,格式:sh.600031 或 sz.000001
year: str = '2025' - 年份
quarter: str = '1' - 季度(1/2/3/4)
【盈利能力 - query_profit_data 返回字段】
code - 证券代码
pubDate - 公司发布财报的日期
statDate - 财报统计的季度的最后一天,如2017-03-31, 2017-06-30
roeAvg - 净资产收益率(平均)(%),归属母公司股东净利润/[(期初归属母公司股东的权益+期末归属母公司股东的权益)/2]*100%
npMargin - 销售净利率(%),净利润/营业收入*100%
gpMargin - 销售毛利率(%),毛利/营业收入100%=(营业收入-营业成本)/营业收入100%
netProfit - 净利润(元)
epsTTM - 每股收益,归属母公司股东的净利润TTM/最新总股本
MBRevenue - 主营营业收入(元)
totalShare - 总股本
liqaShare - 流通股本
"""
print("\n" + "=" * 60)
print("📊 获取盈利能力数据")
print("=" * 60)
result = client.query_profit_data(
code='sh.600031',
year='2025',
quarter='1'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条盈利能力数据")
print(df.head())
# 打印关键指标
if not df.empty:
print("\n📈 关键盈利能力指标:")
print(f" 净资产收益率(平均): {df['roeAvg'].iloc[0] if 'roeAvg' in df.columns else 'N/A'}")
print(f" 销售净利率: {df['npMargin'].iloc[0] if 'npMargin' in df.columns else 'N/A'}")
print(f" 销售毛利率: {df['gpMargin'].iloc[0] if 'gpMargin' in df.columns else 'N/A'}")
print(f" 净利润: {df['netProfit'].iloc[0] if 'netProfit' in df.columns else 'N/A'}")
2获取营运能力数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例2:获取营运能力数据
# ============================================================
"""
参数说明:
code: str = 'sh.600031' - 股票代码
year: str = '2025' - 年份
quarter: str = '1' - 季度(1/2/3/4)
【营运能力 - query_operation_data 返回字段】
code - 证券代码
pubDate - 公司发布财报的日期
statDate - 财报统计的季度的最后一天
NRTurnRatio - 应收账款周转率(次),营业收入/[(期初应收票据及应收账款净额+期末应收票据及应收账款净额)/2]
NRTurnDays - 应收账款周转天数(天),季报天数/应收账款周转率(一季报:90天,中报:180天,三季报:270天,年报:360天)
INVTurnRatio - 存货周转率(次),营业成本/[(期初存货净额+期末存货净额)/2]
INVTurnDays - 存货周转天数(天),季报天数/存货周转率(一季报:90天,中报:180天,三季报:270天,年报:360天)
CATurnRatio - 流动资产周转率(次),营业总收入/[(期初流动资产+期末流动资产)/2]
AssetTurnRatio - 总资产周转率,营业总收入/[(期初资产总额+期末资产总额)/2]
"""
print("\n" + "=" * 60)
print("📊 获取营运能力数据")
print("=" * 60)
result = client.query_operation_data(
code='sh.600031',
year='2025',
quarter='1'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条营运能力数据")
print(df.head())
if not df.empty:
print("\n📈 关键营运能力指标:")
print(f" 应收账款周转率: {df['NRTurnRatio'].iloc[0] if 'NRTurnRatio' in df.columns else 'N/A'}")
print(f" 存货周转率: {df['INVTurnRatio'].iloc[0] if 'INVTurnRatio' in df.columns else 'N/A'}")
print(f" 总资产周转率: {df['AssetTurnRatio'].iloc[0] if 'AssetTurnRatio' in df.columns else 'N/A'}")
3获取成长能力数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例3:获取成长能力数据
# ============================================================
"""
参数说明:
code: str = 'sh.600031' - 股票代码
year: str = '2025' - 年份
quarter: str = '1' - 季度(1/2/3/4)
【成长能力 - query_growth_data 返回字段】
code - 证券代码
pubDate - 公司发布财报的日期
statDate - 财报统计的季度的最后一天
YOYEquity - 净资产同比增长率,(本期净资产-上年同期净资产)/上年同期净资产的绝对值*100%
YOYAsset - 总资产同比增长率,(本期总资产-上年同期总资产)/上年同期总资产的绝对值*100%
YOYNI - 净利润同比增长率,(本期净利润-上年同期净利润)/上年同期净利润的绝对值*100%
YOYEPSBasic - 基本每股收益同比增长率,(本期基本每股收益-上年同期基本每股收益)/上年同期基本每股收益的绝对值*100%
YOYPNI - 归属母公司股东净利润同比增长率,(本期归属母公司股东净利润-上年同期归属母公司股东净利润)/上年同期归属母公司股东净利润的绝对值*100%
"""
print("\n" + "=" * 60)
print("📊 获取成长能力数据")
print("=" * 60)
result = client.query_growth_data(
code='sh.600031',
year='2025',
quarter='1'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条成长能力数据")
print(df.head())
if not df.empty:
print("\n📈 关键成长能力指标:")
print(f" 净资产同比增长率: {df['YOYEquity'].iloc[0] if 'YOYEquity' in df.columns else 'N/A'}")
print(f" 总资产同比增长率: {df['YOYAsset'].iloc[0] if 'YOYAsset' in df.columns else 'N/A'}")
print(f" 净利润同比增长率: {df['YOYNI'].iloc[0] if 'YOYNI' in df.columns else 'N/A'}")
print(f" 归属母公司股东净利润同比增长率: {df['YOYPNI'].iloc[0] if 'YOYPNI' in df.columns else 'N/A'}")
4 获取偿债能力数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例4:获取偿债能力数据
# ============================================================
"""
参数说明:
code: str = 'sh.600031' - 股票代码
year: str = '2025' - 年份
quarter: str = '1' - 季度(1/2/3/4)
【偿债能力 - query_balance_data 返回字段】
code - 证券代码
pubDate - 公司发布财报的日期
statDate - 财报统计的季度的最后一天
currentRatio - 流动比率,流动资产/流动负债
quickRatio - 速动比率,(流动资产-存货净额)/流动负债
cashRatio - 现金比率,(货币资金+交易性金融资产)/流动负债
YOYLiability - 总负债同比增长率,(本期总负债-上年同期总负债)/上年同期中负债的绝对值*100%
liabilityToAsset - 资产负债率,负债总额/资产总额
assetToEquity - 权益乘数,资产总额/股东权益总额=1/(1-资产负债率)
"""
print("\n" + "=" * 60)
print("📊 获取偿债能力数据")
print("=" * 60)
result = client.query_balance_data(
code='sh.600031',
year='2025',
quarter='1'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条偿债能力数据")
print(df.head())
if not df.empty:
print("\n📈 关键偿债能力指标:")
print(f" 流动比率: {df['currentRatio'].iloc[0] if 'currentRatio' in df.columns else 'N/A'}")
print(f" 速动比率: {df['quickRatio'].iloc[0] if 'quickRatio' in df.columns else 'N/A'}")
print(f" 资产负债率: {df['liabilityToAsset'].iloc[0] if 'liabilityToAsset' in df.columns else 'N/A'}")
5获取现金流量数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例5:获取现金流量数据
# ============================================================
"""
参数说明:
code: str = 'sh.600031' - 股票代码
year: str = '2025' - 年份
quarter: str = '1' - 季度(1/2/3/4)
【现金流量 - query_cash_flow_data 返回字段】
code - 证券代码
pubDate - 公司发布财报的日期
statDate - 财报统计的季度的最后一天
CAToAsset - 流动资产除以总资产
NCAToAsset - 非流动资产除以总资产
tangibleAssetToAsset - 有形资产除以总资产
ebitToInterest - 已获利息倍数,息税前利润/利息费用
CFOToOR - 经营活动产生的现金流量净额除以营业收入
CFOToNP - 经营性现金净流量除以净利润
CFOToGr - 经营性现金净流量除以营业总收入
"""
print("\n" + "=" * 60)
print("📊 获取现金流量数据")
print("=" * 60)
result = client.query_cash_flow_data(
code='sh.600031',
year='2025',
quarter='1'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条现金流量数据")
print(df.head())
if not df.empty:
print("\n📈 关键现金流量指标:")
print(f" 已获利息倍数: {df['ebitToInterest'].iloc[0] if 'ebitToInterest' in df.columns else 'N/A'}")
print(f" 经营性现金净流量/营业收入: {df['CFOToOR'].iloc[0] if 'CFOToOR' in df.columns else 'N/A'}")
6 获取杜邦指数数据
from xg_quant_backtrader_data.xg_quant_backtrader_data import xg_quant_backtrader_data
# 初始化客户端
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
# ============================================================
# 完整示例6:获取杜邦指数数据
# ============================================================
"""
参数说明:
code: str = 'sh.600031' - 股票代码
year: str = '2025' - 年份
quarter: str = '1' - 季度(1/2/3/4)
【杜邦指数 - query_dupont_data 返回字段】
code - 证券代码
pubDate - 公司发布财报的日期
statDate - 财报统计的季度的最后一天
dupontROE - 净资产收益率,归属母公司股东净利润/[(期初归属母公司股东的权益+期末归属母公司股东的权益)/2]*100%
dupontAssetStoEquity - 权益乘数,反映企业财务杠杆效应强弱和财务风险,平均总资产/平均归属于母公司的股东权益
dupontAssetTurn - 总资产周转率,反映企业资产管理效率的指标,营业总收入/[(期初资产总额+期末资产总额)/2]
dupontPnitoni - 归属母公司股东的净利润/净利润,反映母公司控股子公司百分比
dupontNitogr - 净利润/营业总收入,反映企业销售获利率
dupontTaxBurden - 净利润/利润总额,反映企业税负水平,该比值高则税负较低
dupontIntburden - 利润总额/息税前利润,反映企业利息负担,该比值高则税负较低
dupontEbittogr - 息税前利润/营业总收入,反映企业经营利润率
"""
print("\n" + "=" * 60)
print("📊 获取杜邦指数数据")
print("=" * 60)
result = client.query_dupont_data(
code='sh.600031',
year='2025',
quarter='1'
)
df = client._to_dataframe(result)
print(f"✅ 获取到 {len(df)} 条杜邦指数数据")
print(df.head())
if not df.empty:
print("\n📈 关键杜邦指数指标:")
print(f" 净资产收益率(ROE): {df['dupontROE'].iloc[0] if 'dupontROE' in df.columns else 'N/A'}")
print(f" 权益乘数: {df['dupontAssetStoEquity'].iloc[0] if 'dupontAssetStoEquity' in df.columns else 'N/A'}")
print(f" 总资产周转率: {df['dupontAssetTurn'].iloc[0] if 'dupontAssetTurn' in df.columns else 'N/A'}")
print(f" 销售净利率: {df['dupontNitogr'].iloc[0] if 'dupontNitogr' in df.columns else 'N/A'}")
十全部代码
'''
作者:小果
微信:xg_quant
'''
import requests
import json
import pandas as pd
import numpy as np
from typing import Optional, Dict, Any, List, Union
from datetime import datetime
import urllib.parse
class xg_quant_backtrader_data:
"""
小果量化回测系统数据api
小果量化数据 - API对接框架
"""
def __init__(
self,
url: str = "1服务器地址",
port: int = 8888, # 修复:port应该是int类型
user: str = "",
password: str = "",
auth_code: str = "小果"
):
"""
初始化小果量化数据客户端
Args:
url: 服务器地址
port: 服务器端口
user: 用户名称
password: 用户密码
auth_code: 授权码
"""
self.url = url
self.port = port
self.user = user
self.password = password
self.auth_code = auth_code
self.base_url = f"http://{url}:{port}"
self.session = requests.Session()
self.timeout = 120
# 设置默认请求头
self.session.headers.update({
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Accept': 'application/json',
'Accept-Charset': 'utf-8'
})
def _get_params(self, **kwargs) -> Dict[str, Any]:
"""构建请求参数,自动添加用户认证信息"""
params = {
'user': self.user,
'password': self.password,
'auth_code': self.auth_code,
}
params.update(kwargs)
return params
def _request(
self,
endpoint: str,
params: Dict[str, Any],
method: str = 'GET',
timeout: Optional[int] = None,
verbose: bool = True
) -> Dict[str, Any]:
"""
发送HTTP请求
Args:
endpoint: API端点路径
params: 请求参数
method: 请求方法
timeout: 超时时间
verbose: 是否打印详细信息
Returns:
响应数据字典
"""
if timeout is None:
timeout = self.timeout
url = f"{self.base_url}{endpoint}"
# 清理参数中的None值
clean_params = {k: v for k, v in params.items() if v is not None}
try:
if method.upper() == 'GET':
response = self.session.get(url, params=clean_params, timeout=timeout)
else:
response = self.session.post(url, params=clean_params, timeout=timeout)
if verbose:
print(f"📤 请求URL: {response.url[:100]}...")
print(f"📤 状态码: {response.status_code}")
response.raise_for_status()
# 尝试解析JSON
try:
result = response.json()
if verbose and result.get('status') == 'failed':
print(f"❌ 接口返回失败: {result.get('message', result.get('error', '未知错误'))}")
if 'info' in result:
print(f"📄 详细信息: {result.get('info')}")
return result
except json.JSONDecodeError as e:
print(f"❌ JSON解析失败: {e}")
print(f"📄 响应内容: {response.text[:500]}")
return {"status": "failed", "error": "Invalid JSON response", "raw": response.text[:500]}
except requests.exceptions.RequestException as e:
print(f"❌ 请求失败: {e}")
# 尝试获取更多错误信息
if hasattr(e, 'response') and e.response is not None:
try:
error_detail = e.response.json()
print(f"📄 错误详情: {error_detail}")
return {"status": "failed", "error": str(e), "detail": error_detail}
except:
print(f"📄 响应内容: {e.response.text[:500]}")
return {"status": "failed", "error": str(e), "raw": e.response.text[:500]}
return {"status": "failed", "error": str(e)}
def _to_dataframe(self, data: Dict[str, Any]) -> pd.DataFrame:
"""
将API返回的数据转换为DataFrame
处理NaN和Infinity值
"""
if data.get('status') == 'failed':
print(f"⚠️ 数据获取失败: {data.get('message', data.get('error', '未知错误'))}")
return pd.DataFrame()
if 'data' in data and data['data']:
df = pd.DataFrame(data['data'])
# 清理数据:将NaN、Infinity替换为None
df = df.replace([np.inf, -np.inf], np.nan)
df = df.where(pd.notnull(df), None)
return df
return pd.DataFrame()
def _to_dataframe_with_info(self, data: Dict[str, Any]) -> Dict[str, Any]:
"""将API返回的数据转换为包含元信息的DataFrame"""
if data.get('status') == 'failed':
return {
'status': 'failed',
'data': pd.DataFrame(),
'info': data.get('message', data.get('error', '未知错误'))
}
df = pd.DataFrame(data.get('data', []))
# 清理数据
df = df.replace([np.inf, -np.inf], np.nan)
df = df.where(pd.notnull(df), None)
result = {
'status': data.get('status', 'success'),
'data': df,
'total': data.get('total', len(df)),
'message': data.get('message', ''),
'available_columns': data.get('available_columns', []),
'selected_columns': data.get('selected_columns', []),
}
for key in ['stock', 'start_date', 'end_date', 'table', 'report_date']:
if key in data:
result[key] = data[key]
return result
# ============================================================
# 一、回测接口(类方法名不带数字,但请求路径带 _1)
# ============================================================
def xg_dt_backtrader(
self,
start_date: str = '20260701',
end_date: str = '20500101',
stock_list: str = '513100.SH,513500.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
dt_interval: int = 20,
dt_type: str = '金额',
dt_value: float = 1000,
sell_zdf: float = 0.03,
buy_zdf: float = -0.03,
trade_value: float = 1000,
comm: float = 0.0001
) -> Dict[str, Any]:
"""定投回测接口"""
params = self._get_params(
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, dt_interval=dt_interval,
dt_type=dt_type, dt_value=dt_value, sell_zdf=sell_zdf,
buy_zdf=buy_zdf, trade_value=trade_value, comm=comm
)
return self._request('/xg_dt_backtrader_1', params)
def xg_mom_backtrader(
self,
start_date: str = '20260101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
mom_type: str = '百分比',
mom_value: float = 1,
mom_daily: int = 25,
min_mom: float = 0,
max_mom: float = 5,
buy_rank: int = 1,
sell_zdf: float = 0.03,
sell_amount: float = 1000
) -> Dict[str, Any]:
"""动量回测接口"""
params = self._get_params(
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
mom_type=mom_type, mom_value=mom_value, mom_daily=mom_daily,
min_mom=min_mom, max_mom=max_mom, buy_rank=buy_rank,
sell_zdf=sell_zdf, sell_amount=sell_amount
)
return self._request('/xg_mom_backtrader_1', params)
def xg_pz_backtrader(
self,
start_date: str = '20260101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
dt_type: str = '百分比',
weight_list: str = '0.4,0.4,0.2',
index_stock: str = '000300.SH',
cash: float = 100000,
sell_zdf: float = 0.03,
buy_zdf: float = -0.03,
trade_value: float = 1000,
comm: float = 0.0001
) -> Dict[str, Any]:
"""资产配置回测接口"""
params = self._get_params(
start_date=start_date, end_date=end_date, stock_list=stock_list,
dt_type=dt_type, weight_list=weight_list, index_stock=index_stock,
cash=cash, sell_zdf=sell_zdf, buy_zdf=buy_zdf,
trade_value=trade_value, comm=comm
)
return self._request('/xg_pz_backtrader_1', params)
def xg_zcph_backtrader(
self,
start_date: str = '20260101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
dt_type: str = '百分比',
weight_list: str = '0.35,0.35,0.3',
deviation_list: str = '0.1,0.1,0.05',
interval: int = 20,
index_stock: str = '000300.SH',
cash: float = 100000,
sell_zdf: float = 0.03,
buy_zdf: float = -0.03,
trade_value: float = 1000,
comm: float = 0.0001
) -> Dict[str, Any]:
"""资产配置平衡策略回测接口"""
params = self._get_params(
start_date=start_date, end_date=end_date, stock_list=stock_list,
dt_type=dt_type, weight_list=weight_list, deviation_list=deviation_list,
interval=interval, index_stock=index_stock, cash=cash,
sell_zdf=sell_zdf, buy_zdf=buy_zdf, trade_value=trade_value, comm=comm
)
return self._request('/xg_zcph_backtrader_1', params)
def xg_gd_backtrader(
self,
start_date: str = '20250701',
end_date: str = '20500101',
stock_list: str = '513100.SH,513500.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
gd_interval: int = 1,
gd_bc_type_list: str = '百分比,百分比',
gd_buy_bc_list: str = '0.03,0.02',
gd_sell_bc_list: str = '-0.02,-0.015',
gd_atr_ratio_list: str = '2.0,2.0',
gd_atr_period_list: str = '14,14',
gd_type_list: str = '金额,金额',
gd_value_list: str = '1000,1500',
init_position_ratio_list: str = '0.1,0.15',
sell_zdf: float = 0.03,
buy_zdf: float = -0.03,
trade_value: float = 1000,
comm: float = 0.0001,
max_workers: int = 4
) -> Dict[str, Any]:
"""网格策略回测接口"""
params = self._get_params(
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, gd_interval=gd_interval,
gd_bc_type_list=gd_bc_type_list, gd_buy_bc_list=gd_buy_bc_list,
gd_sell_bc_list=gd_sell_bc_list, gd_atr_ratio_list=gd_atr_ratio_list,
gd_atr_period_list=gd_atr_period_list, gd_type_list=gd_type_list,
gd_value_list=gd_value_list, init_position_ratio_list=init_position_ratio_list,
sell_zdf=sell_zdf, buy_zdf=buy_zdf, trade_value=trade_value,
comm=comm, max_workers=max_workers
)
return self._request('/xg_gd_backtrader_1', params)
def xg_hg_backtrader(
self,
start_date: str = '20240101',
end_date: str = '20500101',
stock_list: str = '513100.SH,513500.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
max_workers: int = 4,
entry_period: int = 20,
exit_period: int = 10,
n_period: int = 20,
risk_per_trade: float = 0.01,
risk_per_unit: float = 0.02,
max_units: int = 4,
add_unit_threshold: float = 0.5,
sell_zdf: float = 0.03,
buy_zdf: float = -0.03,
trade_value: float = 1000
) -> Dict[str, Any]:
"""海龟策略回测接口"""
params = self._get_params(
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
max_workers=max_workers, entry_period=entry_period,
exit_period=exit_period, n_period=n_period,
risk_per_trade=risk_per_trade, risk_per_unit=risk_per_unit,
max_units=max_units, add_unit_threshold=add_unit_threshold,
sell_zdf=sell_zdf, buy_zdf=buy_zdf, trade_value=trade_value
)
return self._request('/xg_hg_backtrader_1', params)
def xg_more_mom_backtrader(
self,
start_date: str = '20250101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
max_workers: int = 4,
enable_index_timing: bool = False,
index_mean_line: int = 20,
index_not_trader: str = '513100.SH,518880.SH',
index_condition_type: str = '大于均线',
index_offset: float = 0.0,
mom_type: str = '百分比',
mom_value: float = 0.1,
mom_models: str = '动量1',
mom_daily: int = 25,
period: int = 20,
short_ma: int = 3,
long_ma: int = 20,
enable_mom_filter: bool = False,
max_value: float = 5,
mini_value: float = 0,
max_rank: int = 1,
min_rank: int = 2,
enable_buy_condition: bool = False,
enable_sell_condition: bool = False,
buy_condition_type: str = '涨幅',
buy_period: int = 20,
buy_period_ratio: float = 0.1,
buy_offset: float = 0.0,
sell_condition_type: str = '跌幅',
sell_period: int = 20,
sell_period_ratio: float = -0.1,
sell_offset: float = 0.0,
sell_zdf: float = 0.03,
sell_amount: float = 1000,
interval: int = 1
) -> Dict[str, Any]:
"""综合动量回测接口"""
params = self._get_params(
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
max_workers=max_workers, enable_index_timing=enable_index_timing,
index_mean_line=index_mean_line, index_not_trader=index_not_trader,
index_condition_type=index_condition_type, index_offset=index_offset,
mom_type=mom_type, mom_value=mom_value, mom_models=mom_models,
mom_daily=mom_daily, period=period, short_ma=short_ma,
long_ma=long_ma, enable_mom_filter=enable_mom_filter,
max_value=max_value, mini_value=mini_value,
max_rank=max_rank, min_rank=min_rank,
enable_buy_condition=enable_buy_condition,
enable_sell_condition=enable_sell_condition,
buy_condition_type=buy_condition_type, buy_period=buy_period,
buy_period_ratio=buy_period_ratio, buy_offset=buy_offset,
sell_condition_type=sell_condition_type, sell_period=sell_period,
sell_period_ratio=sell_period_ratio, sell_offset=sell_offset,
sell_zdf=sell_zdf, sell_amount=sell_amount, interval=interval
)
return self._request('/xg_more_mom_backtrader_1', params)
def xg_condi_factor_backtrader(
self,
start_date: str = '20250101',
end_date: str = '20261201',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
min_commission: float = 0,
trader_type: str = '百分比',
trader_value: float = 0.5,
hold_stock_limit: int = 2,
is_open_user_factor: bool = True,
user_factor_list: str = 'close,high,low,open,amount,volume,zdf',
user_factor_cacal: str = '''{
"收盘价大于5日均线": "IF(df['close']>MA(df['close'],5),True,False)",
"均线评分": "IF(MA(df['close'],3)>MA(df['close'],5),25,0)+IF(MA(df['close'],5)>MA(df['close'],10),25,0)+IF(MA(df['close'],10)>MA(df['close'],20),25,0)+IF(MA(df['close'],20)>MA(df['close'],30),25,0)"
}''',
buy_condi_factor: str = '''{
"收盘价大于5日均线": {"选择类型": "and", "选择方向": "等于", "值": true},
"连续上涨天数": {"选择类型": "and", "选择方向": "大于", "值": 2}
}''',
rank_factor: str = '''{
"均线评分": "降序"
}''',
sell_condi_factor: str = '''{
"收盘价大于5日均线": {"选择类型": "or", "选择方向": "等于", "值": false},
"连续下跌天数": {"选择类型": "or", "选择方向": "大于", "值": 2}
}''',
sell_type: str = '金额',
sell_zdf: float = 0.03,
sell_value: float = 1000,
max_workers: int = 4,
interval: int = 1,
min_hold_days: int = 1,
risk_free_rate: float = 0.02,
slippage: float = 0,
enable_limit_up_down_filter: bool = True,
max_single_position_ratio: float = 1.0
) -> Dict[str, Any]:
"""条件因子回测接口"""
params = self._get_params(
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
min_commission=min_commission, trader_type=trader_type,
trader_value=trader_value, hold_stock_limit=hold_stock_limit,
is_open_user_factor=is_open_user_factor,
user_factor_list=user_factor_list,
user_factor_cacal=user_factor_cacal,
buy_condi_factor=buy_condi_factor,
rank_factor=rank_factor,
sell_condi_factor=sell_condi_factor,
sell_type=sell_type, sell_zdf=sell_zdf, sell_value=sell_value,
max_workers=max_workers, interval=interval,
min_hold_days=min_hold_days, risk_free_rate=risk_free_rate,
slippage=slippage,
enable_limit_up_down_filter=enable_limit_up_down_filter,
max_single_position_ratio=max_single_position_ratio
)
return self._request('/xg_condi_factor_backtrader_1', params)
def xg_rank_factor_backtrader(
self,
start_date: str = '20250101',
end_date: str = '20261201',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
min_commission: float = 0,
trader_type: str = '百分比',
trader_value: float = 0.5,
hold_stock_limit: int = 2,
is_open_user_factor: bool = True,
user_factor_list: str = 'close,high,low,open,amount,volume,zdf',
user_factor_cacal: str = '''{
"收盘价大于5日均线": "IF(df['close']>MA(df['close'],5),0,1)",
"均线评分": "IF(MA(df['close'],3)>MA(df['close'],5),25,0)+IF(MA(df['close'],5)>MA(df['close'],10),25,0)+IF(MA(df['close'],10)>MA(df['close'],20),25,0)+IF(MA(df['close'],20)>MA(df['close'],30),25,0)"
}''',
is_open_buy_condi: bool = True,
buy_condi_factor: str = '''{
"25日回归动量": {"选择类型": "and", "选择方向": "大于", "值": 0},
"25日回归动量": {"选择类型": "and", "选择方向": "小于", "值": 5}
}''',
rank_factor: str = '''{
"25日回归动量": {"相关性": "正相关", "权重": 1}
}''',
total_factor_rank: str = '降序',
sell_type: str = '金额',
sell_zdf: float = 0.03,
sell_value: float = 1000,
max_workers: int = 4,
interval: int = 1,
min_hold_days: int = 1,
risk_free_rate: float = 0.02,
slippage: float = 0,
enable_limit_up_down_filter: bool = True,
max_single_position_ratio: float = 1.0
) -> Dict[str, Any]:
"""排序多因子回测接口"""
params = self._get_params(
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
min_commission=min_commission, trader_type=trader_type,
trader_value=trader_value, hold_stock_limit=hold_stock_limit,
is_open_user_factor=is_open_user_factor,
user_factor_list=user_factor_list,
user_factor_cacal=user_factor_cacal,
is_open_buy_condi=is_open_buy_condi,
buy_condi_factor=buy_condi_factor,
rank_factor=rank_factor,
total_factor_rank=total_factor_rank,
sell_type=sell_type, sell_zdf=sell_zdf, sell_value=sell_value,
max_workers=max_workers, interval=interval,
min_hold_days=min_hold_days, risk_free_rate=risk_free_rate,
slippage=slippage,
enable_limit_up_down_filter=enable_limit_up_down_filter,
max_single_position_ratio=max_single_position_ratio
)
return self._request('/xg_rank_factor_backtrader_1', params)
# ============================================================
# 二、策略模拟交易接口(moni,不带 _1)
# ============================================================
def xg_dt_backtrader_moni(
self,
st_name: str = '小果测试',
open_show: str = '是',
start_date: str = '20260701',
end_date: str = '20500101',
stock_list: str = '513100.SH,513500.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
dt_interval: int = 20,
dt_type: str = '金额',
dt_value: float = 1000,
sell_zdf: float = 0.03,
buy_zdf: float = -0.03,
trade_value: float = 1000,
comm: float = 0.0001
) -> Dict[str, Any]:
"""定投策略模拟交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, dt_interval=dt_interval,
dt_type=dt_type, dt_value=dt_value, sell_zdf=sell_zdf,
buy_zdf=buy_zdf, trade_value=trade_value, comm=comm
)
return self._request('/xg_dt_backtrader_moni', params)
def xg_mom_backtrader_moni(
self,
st_name: str = '小果测试',
open_show: str = '是',
start_date: str = '20260101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
mom_type: str = '百分比',
mom_value: float = 1,
mom_daily: int = 25,
min_mom: float = 0,
max_mom: float = 5,
buy_rank: int = 1,
sell_zdf: float = 0.03,
sell_amount: float = 1000
) -> Dict[str, Any]:
"""动量策略模拟交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
mom_type=mom_type, mom_value=mom_value, mom_daily=mom_daily,
min_mom=min_mom, max_mom=max_mom, buy_rank=buy_rank,
sell_zdf=sell_zdf, sell_amount=sell_amount
)
return self._request('/xg_mom_backtrader_moni', params)
def xg_pz_backtrader_moni(
self,
st_name: str = '小果测试',
open_show: str = '是',
start_date: str = '20260101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
dt_type: str = '百分比',
weight_list: str = '0.4,0.4,0.2',
index_stock: str = '000300.SH',
cash: float = 100000,
sell_zdf: float = 0.03,
buy_zdf: float = -0.03,
trade_value: float = 1000,
comm: float = 0.0001
) -> Dict[str, Any]:
"""资产配置策略模拟交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
dt_type=dt_type, weight_list=weight_list, index_stock=index_stock,
cash=cash, sell_zdf=sell_zdf, buy_zdf=buy_zdf,
trade_value=trade_value, comm=comm
)
return self._request('/xg_pz_backtrader_moni', params)
def xg_zcph_backtrader_moni(
self,
st_name: str = '小果测试',
open_show: str = '是',
start_date: str = '20260101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
dt_type: str = '百分比',
weight_list: str = '0.35,0.35,0.3',
deviation_list: str = '0.1,0.1,0.05',
interval: int = 20,
index_stock: str = '000300.SH',
cash: float = 100000,
sell_zdf: float = 0.03,
buy_zdf: float = -0.03,
trade_value: float = 1000,
comm: float = 0.0001
) -> Dict[str, Any]:
"""资产配置平衡策略模拟交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
dt_type=dt_type, weight_list=weight_list, deviation_list=deviation_list,
interval=interval, index_stock=index_stock, cash=cash,
sell_zdf=sell_zdf, buy_zdf=buy_zdf, trade_value=trade_value, comm=comm
)
return self._request('/xg_zcph_backtrader_moni', params)
def xg_gd_backtrader_moni(
self,
st_name: str = '小果网格测试策略',
open_show: str = '是',
start_date: str = '20250701',
end_date: str = '20500101',
stock_list: str = '513100.SH,513500.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
gd_interval: int = 1,
gd_bc_type_list: str = '百分比,百分比',
gd_buy_bc_list: str = '0.03,0.02',
gd_sell_bc_list: str = '-0.02,-0.015',
gd_atr_ratio_list: str = '2.0,2.0',
gd_atr_period_list: str = '14,14',
gd_type_list: str = '金额,金额',
gd_value_list: str = '1000,1500',
init_position_ratio_list: str = '0.1,0.15',
sell_zdf: float = 0.03,
buy_zdf: float = -0.03,
trade_value: float = 1000,
comm: float = 0.0001,
max_workers: int = 4
) -> Dict[str, Any]:
"""网格策略模拟交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, gd_interval=gd_interval,
gd_bc_type_list=gd_bc_type_list, gd_buy_bc_list=gd_buy_bc_list,
gd_sell_bc_list=gd_sell_bc_list, gd_atr_ratio_list=gd_atr_ratio_list,
gd_atr_period_list=gd_atr_period_list, gd_type_list=gd_type_list,
gd_value_list=gd_value_list,
init_position_ratio_list=init_position_ratio_list,
sell_zdf=sell_zdf, buy_zdf=buy_zdf, trade_value=trade_value,
comm=comm, max_workers=max_workers
)
return self._request('/xg_gd_backtrader_moni', params)
def xg_hg_backtrader_moni(
self,
st_name: str = '小果海龟测试策略',
open_show: str = '是',
start_date: str = '20240101',
end_date: str = '20500101',
stock_list: str = '513100.SH,513500.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
max_workers: int = 4,
entry_period: int = 20,
exit_period: int = 10,
n_period: int = 20,
risk_per_trade: float = 0.01,
risk_per_unit: float = 0.02,
max_units: int = 4,
add_unit_threshold: float = 0.5,
sell_zdf: float = 0.03,
buy_zdf: float = -0.03,
trade_value: float = 1000
) -> Dict[str, Any]:
"""海龟策略模拟交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
max_workers=max_workers, entry_period=entry_period,
exit_period=exit_period, n_period=n_period,
risk_per_trade=risk_per_trade, risk_per_unit=risk_per_unit,
max_units=max_units, add_unit_threshold=add_unit_threshold,
sell_zdf=sell_zdf, buy_zdf=buy_zdf, trade_value=trade_value
)
return self._request('/xg_hg_backtrader_moni', params)
def xg_more_mom_backtrader_moni(
self,
st_name: str = '小果综合动量测试策略',
open_show: str = '是',
start_date: str = '20250101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
max_workers: int = 4,
enable_index_timing: bool = False,
index_mean_line: int = 20,
index_not_trader: str = '513100.SH,518880.SH',
index_condition_type: str = '大于均线',
index_offset: float = 0.0,
mom_type: str = '百分比',
mom_value: float = 0.1,
mom_models: str = '动量1',
mom_daily: int = 25,
period: int = 20,
short_ma: int = 3,
long_ma: int = 20,
enable_mom_filter: bool = False,
max_value: float = 5,
mini_value: float = 0,
max_rank: int = 1,
min_rank: int = 2,
enable_buy_condition: bool = False,
enable_sell_condition: bool = False,
buy_condition_type: str = '涨幅',
buy_period: int = 20,
buy_period_ratio: float = 0.1,
buy_offset: float = 0.0,
sell_condition_type: str = '跌幅',
sell_period: int = 20,
sell_period_ratio: float = -0.1,
sell_offset: float = 0.0,
sell_zdf: float = 0.03,
sell_amount: float = 1000,
interval: int = 1
) -> Dict[str, Any]:
"""综合动量策略模拟交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
max_workers=max_workers, enable_index_timing=enable_index_timing,
index_mean_line=index_mean_line, index_not_trader=index_not_trader,
index_condition_type=index_condition_type, index_offset=index_offset,
mom_type=mom_type, mom_value=mom_value, mom_models=mom_models,
mom_daily=mom_daily, period=period, short_ma=short_ma,
long_ma=long_ma, enable_mom_filter=enable_mom_filter,
max_value=max_value, mini_value=mini_value,
max_rank=max_rank, min_rank=min_rank,
enable_buy_condition=enable_buy_condition,
enable_sell_condition=enable_sell_condition,
buy_condition_type=buy_condition_type, buy_period=buy_period,
buy_period_ratio=buy_period_ratio, buy_offset=buy_offset,
sell_condition_type=sell_condition_type, sell_period=sell_period,
sell_period_ratio=sell_period_ratio, sell_offset=sell_offset,
sell_zdf=sell_zdf, sell_amount=sell_amount, interval=interval
)
return self._request('/xg_more_mom_backtrader_moni', params)
def xg_condi_factor_backtrader_moni(
self,
st_name: str = '小果条件因子测试策略',
open_show: str = '是',
start_date: str = '20250101',
end_date: str = '20261201',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
min_commission: float = 0,
trader_type: str = '百分比',
trader_value: float = 0.5,
hold_stock_limit: int = 2,
is_open_user_factor: bool = True,
user_factor_list: str = 'close,high,low,open,amount,volume,zdf',
user_factor_cacal: str = '''{
"收盘价大于5日均线": "IF(df['close']>MA(df['close'],5),True,False)",
"均线评分": "IF(MA(df['close'],3)>MA(df['close'],5),25,0)+IF(MA(df['close'],5)>MA(df['close'],10),25,0)+IF(MA(df['close'],10)>MA(df['close'],20),25,0)+IF(MA(df['close'],20)>MA(df['close'],30),25,0)"
}''',
buy_condi_factor: str = '''{
"收盘价大于5日均线": {"选择类型": "and", "选择方向": "等于", "值": true},
"连续上涨天数": {"选择类型": "and", "选择方向": "大于", "值": 2}
}''',
rank_factor: str = '''{
"均线评分": "降序"
}''',
sell_condi_factor: str = '''{
"收盘价大于5日均线": {"选择类型": "or", "选择方向": "等于", "值": false},
"连续下跌天数": {"选择类型": "or", "选择方向": "大于", "值": 2}
}''',
sell_type: str = '金额',
sell_zdf: float = 0.03,
sell_value: float = 1000,
max_workers: int = 4,
interval: int = 1,
min_hold_days: int = 1,
risk_free_rate: float = 0.02,
slippage: float = 0,
enable_limit_up_down_filter: bool = True,
max_single_position_ratio: float = 1.0
) -> Dict[str, Any]:
"""条件多因子策略模拟交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
min_commission=min_commission, trader_type=trader_type,
trader_value=trader_value, hold_stock_limit=hold_stock_limit,
is_open_user_factor=is_open_user_factor,
user_factor_list=user_factor_list,
user_factor_cacal=user_factor_cacal,
buy_condi_factor=buy_condi_factor,
rank_factor=rank_factor,
sell_condi_factor=sell_condi_factor,
sell_type=sell_type, sell_zdf=sell_zdf, sell_value=sell_value,
max_workers=max_workers, interval=interval,
min_hold_days=min_hold_days, risk_free_rate=risk_free_rate,
slippage=slippage,
enable_limit_up_down_filter=enable_limit_up_down_filter,
max_single_position_ratio=max_single_position_ratio
)
return self._request('/xg_condi_factor_backtrader_moni', params)
def xg_rank_factor_backtrader_moni(
self,
st_name: str = '小果排序多因子模拟策略',
open_show: str = '是',
start_date: str = '20250101',
end_date: str = '20261201',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
min_commission: float = 0,
trader_type: str = '百分比',
trader_value: float = 0.5,
hold_stock_limit: int = 2,
is_open_user_factor: bool = True,
user_factor_list: str = 'close,high,low,open,amount,volume,zdf',
user_factor_cacal: str = '''{
"收盘价大于5日均线": "IF(df['close']>MA(df['close'],5),0,1)",
"均线评分": "IF(MA(df['close'],3)>MA(df['close'],5),25,0)+IF(MA(df['close'],5)>MA(df['close'],10),25,0)+IF(MA(df['close'],10)>MA(df['close'],20),25,0)+IF(MA(df['close'],20)>MA(df['close'],30),25,0)"
}''',
is_open_buy_condi: bool = True,
buy_condi_factor: str = '''{
"25日回归动量": {"选择类型": "and", "选择方向": "大于", "值": 0},
"25日回归动量": {"选择类型": "and", "选择方向": "小于", "值": 5}
}''',
rank_factor: str = '''{
"25日回归动量": {"相关性": "正相关", "权重": 1}
}''',
total_factor_rank: str = '降序',
sell_type: str = '金额',
sell_zdf: float = 0.03,
sell_value: float = 1000,
max_workers: int = 4,
interval: int = 1,
min_hold_days: int = 1,
risk_free_rate: float = 0.02,
slippage: float = 0,
enable_limit_up_down_filter: bool = True,
max_single_position_ratio: float = 1.0
) -> Dict[str, Any]:
"""排序多因子策略模拟交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
min_commission=min_commission, trader_type=trader_type,
trader_value=trader_value, hold_stock_limit=hold_stock_limit,
is_open_user_factor=is_open_user_factor,
user_factor_list=user_factor_list,
user_factor_cacal=user_factor_cacal,
is_open_buy_condi=is_open_buy_condi,
buy_condi_factor=buy_condi_factor,
rank_factor=rank_factor,
total_factor_rank=total_factor_rank,
sell_type=sell_type, sell_zdf=sell_zdf, sell_value=sell_value,
max_workers=max_workers, interval=interval,
min_hold_days=min_hold_days, risk_free_rate=risk_free_rate,
slippage=slippage,
enable_limit_up_down_filter=enable_limit_up_down_filter,
max_single_position_ratio=max_single_position_ratio
)
return self._request('/xg_rank_factor_backtrader_moni', params)
# ============================================================
# 三、社区策略接口(moni_sq,不带 _1)
# ============================================================
def xg_dt_backtrader_moni_sq(
self,
st_name: str = '小果测试',
open_show: str = '是',
start_date: str = '20260701',
end_date: str = '20500101',
stock_list: str = '513100.SH,513500.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
dt_interval: int = 20,
dt_type: str = '金额',
dt_value: float = 1000,
sell_zdf: float = 0.03,
buy_zdf: float = -0.03,
trade_value: float = 1000,
comm: float = 0.0001
) -> Dict[str, Any]:
"""定投策略社区交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, dt_interval=dt_interval,
dt_type=dt_type, dt_value=dt_value, sell_zdf=sell_zdf,
buy_zdf=buy_zdf, trade_value=trade_value, comm=comm
)
return self._request('/xg_dt_backtrader_moni_sq', params)
def xg_mom_backtrader_moni_sq(
self,
st_name: str = '小果测试',
open_show: str = '是',
start_date: str = '20260101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
mom_type: str = '百分比',
mom_value: float = 1,
mom_daily: int = 25,
min_mom: float = 0,
max_mom: float = 5,
buy_rank: int = 1,
sell_zdf: float = 0.03,
sell_amount: float = 1000
) -> Dict[str, Any]:
"""动量策略社区交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
mom_type=mom_type, mom_value=mom_value, mom_daily=mom_daily,
min_mom=min_mom, max_mom=max_mom, buy_rank=buy_rank,
sell_zdf=sell_zdf, sell_amount=sell_amount
)
return self._request('/xg_mom_backtrader_moni_sq', params)
def xg_pz_backtrader_moni_sq(
self,
st_name: str = '小果测试',
open_show: str = '是',
start_date: str = '20260101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
dt_type: str = '百分比',
weight_list: str = '0.4,0.4,0.2',
index_stock: str = '000300.SH',
cash: float = 100000,
sell_zdf: float = 0.03,
buy_zdf: float = -0.03,
trade_value: float = 1000,
comm: float = 0.0001
) -> Dict[str, Any]:
"""资产配置策略社区交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
dt_type=dt_type, weight_list=weight_list, index_stock=index_stock,
cash=cash, sell_zdf=sell_zdf, buy_zdf=buy_zdf,
trade_value=trade_value, comm=comm
)
return self._request('/xg_pz_backtrader_moni_sq', params)
def xg_zcph_backtrader_moni_sq(
self,
st_name: str = '小果测试',
open_show: str = '是',
start_date: str = '20260101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
dt_type: str = '百分比',
weight_list: str = '0.35,0.35,0.3',
deviation_list: str = '0.1,0.1,0.05',
interval: int = 20,
index_stock: str = '000300.SH',
cash: float = 100000,
sell_zdf: float = 0.03,
buy_zdf: float = -0.03,
trade_value: float = 1000,
comm: float = 0.0001
) -> Dict[str, Any]:
"""资产配置平衡策略社区交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
dt_type=dt_type, weight_list=weight_list, deviation_list=deviation_list,
interval=interval, index_stock=index_stock, cash=cash,
sell_zdf=sell_zdf, buy_zdf=buy_zdf, trade_value=trade_value, comm=comm
)
return self._request('/xg_zcph_backtrader_moni_sq', params)
def xg_gd_backtrader_moni_sq(
self,
st_name: str = '小果网格测试策略',
open_show: str = '是',
start_date: str = '20250701',
end_date: str = '20500101',
stock_list: str = '513100.SH,513500.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
gd_interval: int = 1,
gd_bc_type_list: str = '百分比,百分比',
gd_buy_bc_list: str = '0.03,0.02',
gd_sell_bc_list: str = '-0.02,-0.015',
gd_atr_ratio_list: str = '2.0,2.0',
gd_atr_period_list: str = '14,14',
gd_type_list: str = '金额,金额',
gd_value_list: str = '1000,1500',
init_position_ratio_list: str = '0.1,0.15',
sell_zdf: float = 0.03,
buy_zdf: float = -0.03,
trade_value: float = 1000,
comm: float = 0.0001,
max_workers: int = 4
) -> Dict[str, Any]:
"""网格策略社区交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, gd_interval=gd_interval,
gd_bc_type_list=gd_bc_type_list, gd_buy_bc_list=gd_buy_bc_list,
gd_sell_bc_list=gd_sell_bc_list, gd_atr_ratio_list=gd_atr_ratio_list,
gd_atr_period_list=gd_atr_period_list, gd_type_list=gd_type_list,
gd_value_list=gd_value_list,
init_position_ratio_list=init_position_ratio_list,
sell_zdf=sell_zdf, buy_zdf=buy_zdf, trade_value=trade_value,
comm=comm, max_workers=max_workers
)
return self._request('/xg_gd_backtrader_moni_sq', params)
def xg_hg_backtrader_moni_sq(
self,
st_name: str = '小果海龟测试策略',
open_show: str = '是',
start_date: str = '20240101',
end_date: str = '20500101',
stock_list: str = '513100.SH,513500.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
max_workers: int = 4,
entry_period: int = 20,
exit_period: int = 10,
n_period: int = 20,
risk_per_trade: float = 0.01,
risk_per_unit: float = 0.02,
max_units: int = 4,
add_unit_threshold: float = 0.5,
sell_zdf: float = 0.03,
buy_zdf: float = -0.03,
trade_value: float = 1000
) -> Dict[str, Any]:
"""海龟策略社区交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
max_workers=max_workers, entry_period=entry_period,
exit_period=exit_period, n_period=n_period,
risk_per_trade=risk_per_trade, risk_per_unit=risk_per_unit,
max_units=max_units, add_unit_threshold=add_unit_threshold,
sell_zdf=sell_zdf, buy_zdf=buy_zdf, trade_value=trade_value
)
return self._request('/xg_hg_backtrader_moni_sq', params)
def xg_more_mom_backtrader_moni_sq(
self,
st_name: str = '小果综合动量测试策略',
open_show: str = '是',
start_date: str = '20250101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
max_workers: int = 4,
enable_index_timing: bool = False,
index_mean_line: int = 20,
index_not_trader: str = '513100.SH,518880.SH',
index_condition_type: str = '大于均线',
index_offset: float = 0.0,
mom_type: str = '百分比',
mom_value: float = 0.1,
mom_models: str = '动量1',
mom_daily: int = 25,
period: int = 20,
short_ma: int = 3,
long_ma: int = 20,
enable_mom_filter: bool = False,
max_value: float = 5,
mini_value: float = 0,
max_rank: int = 1,
min_rank: int = 2,
enable_buy_condition: bool = False,
enable_sell_condition: bool = False,
buy_condition_type: str = '涨幅',
buy_period: int = 20,
buy_period_ratio: float = 0.1,
buy_offset: float = 0.0,
sell_condition_type: str = '跌幅',
sell_period: int = 20,
sell_period_ratio: float = -0.1,
sell_offset: float = 0.0,
sell_zdf: float = 0.03,
sell_amount: float = 1000,
interval: int = 1
) -> Dict[str, Any]:
"""综合动量策略社区交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
max_workers=max_workers, enable_index_timing=enable_index_timing,
index_mean_line=index_mean_line, index_not_trader=index_not_trader,
index_condition_type=index_condition_type, index_offset=index_offset,
mom_type=mom_type, mom_value=mom_value, mom_models=mom_models,
mom_daily=mom_daily, period=period, short_ma=short_ma,
long_ma=long_ma, enable_mom_filter=enable_mom_filter,
max_value=max_value, mini_value=mini_value,
max_rank=max_rank, min_rank=min_rank,
enable_buy_condition=enable_buy_condition,
enable_sell_condition=enable_sell_condition,
buy_condition_type=buy_condition_type, buy_period=buy_period,
buy_period_ratio=buy_period_ratio, buy_offset=buy_offset,
sell_condition_type=sell_condition_type, sell_period=sell_period,
sell_period_ratio=sell_period_ratio, sell_offset=sell_offset,
sell_zdf=sell_zdf, sell_amount=sell_amount, interval=interval
)
return self._request('/xg_more_mom_backtrader_moni_sq', params)
def xg_condi_factor_backtrader_moni_sq(
self,
st_name: str = '小果条件因子测试策略',
open_show: str = '是',
start_date: str = '20250101',
end_date: str = '20261201',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
min_commission: float = 0,
trader_type: str = '百分比',
trader_value: float = 0.5,
hold_stock_limit: int = 2,
is_open_user_factor: bool = True,
user_factor_list: str = 'close,high,low,open,amount,volume,zdf',
user_factor_cacal: str = '''{
"收盘价大于5日均线": "IF(df['close']>MA(df['close'],5),True,False)",
"均线评分": "IF(MA(df['close'],3)>MA(df['close'],5),25,0)+IF(MA(df['close'],5)>MA(df['close'],10),25,0)+IF(MA(df['close'],10)>MA(df['close'],20),25,0)+IF(MA(df['close'],20)>MA(df['close'],30),25,0)"
}''',
buy_condi_factor: str = '''{
"收盘价大于5日均线": {"选择类型": "and", "选择方向": "等于", "值": true},
"连续上涨天数": {"选择类型": "and", "选择方向": "大于", "值": 2}
}''',
rank_factor: str = '''{
"均线评分": "降序"
}''',
sell_condi_factor: str = '''{
"收盘价大于5日均线": {"选择类型": "or", "选择方向": "等于", "值": false},
"连续下跌天数": {"选择类型": "or", "选择方向": "大于", "值": 2}
}''',
sell_type: str = '金额',
sell_zdf: float = 0.03,
sell_value: float = 1000,
max_workers: int = 4,
interval: int = 1,
min_hold_days: int = 1,
risk_free_rate: float = 0.02,
slippage: float = 0,
enable_limit_up_down_filter: bool = True,
max_single_position_ratio: float = 1.0
) -> Dict[str, Any]:
"""条件多因子策略社区交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
min_commission=min_commission, trader_type=trader_type,
trader_value=trader_value, hold_stock_limit=hold_stock_limit,
is_open_user_factor=is_open_user_factor,
user_factor_list=user_factor_list,
user_factor_cacal=user_factor_cacal,
buy_condi_factor=buy_condi_factor,
rank_factor=rank_factor,
sell_condi_factor=sell_condi_factor,
sell_type=sell_type, sell_zdf=sell_zdf, sell_value=sell_value,
max_workers=max_workers, interval=interval,
min_hold_days=min_hold_days, risk_free_rate=risk_free_rate,
slippage=slippage,
enable_limit_up_down_filter=enable_limit_up_down_filter,
max_single_position_ratio=max_single_position_ratio
)
return self._request('/xg_condi_factor_backtrader_moni_sq', params)
def xg_rank_factor_backtrader_moni_sq(
self,
st_name: str = '小果排序多因子社区策略',
open_show: str = '是',
start_date: str = '20250101',
end_date: str = '20261201',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
min_commission: float = 0,
trader_type: str = '百分比',
trader_value: float = 0.5,
hold_stock_limit: int = 2,
is_open_user_factor: bool = True,
user_factor_list: str = 'close,high,low,open,amount,volume,zdf',
user_factor_cacal: str = '''{
"收盘价大于5日均线": "IF(df['close']>MA(df['close'],5),0,1)",
"均线评分": "IF(MA(df['close'],3)>MA(df['close'],5),25,0)+IF(MA(df['close'],5)>MA(df['close'],10),25,0)+IF(MA(df['close'],10)>MA(df['close'],20),25,0)+IF(MA(df['close'],20)>MA(df['close'],30),25,0)"
}''',
is_open_buy_condi: bool = True,
buy_condi_factor: str = '''{
"25日回归动量": {"选择类型": "and", "选择方向": "大于", "值": 0},
"25日回归动量": {"选择类型": "and", "选择方向": "小于", "值": 5}
}''',
rank_factor: str = '''{
"25日回归动量": {"相关性": "正相关", "权重": 1}
}''',
total_factor_rank: str = '降序',
sell_type: str = '金额',
sell_zdf: float = 0.03,
sell_value: float = 1000,
max_workers: int = 4,
interval: int = 1,
min_hold_days: int = 1,
risk_free_rate: float = 0.02,
slippage: float = 0,
enable_limit_up_down_filter: bool = True,
max_single_position_ratio: float = 1.0
) -> Dict[str, Any]:
"""排序多因子策略社区交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
min_commission=min_commission, trader_type=trader_type,
trader_value=trader_value, hold_stock_limit=hold_stock_limit,
is_open_user_factor=is_open_user_factor,
user_factor_list=user_factor_list,
user_factor_cacal=user_factor_cacal,
is_open_buy_condi=is_open_buy_condi,
buy_condi_factor=buy_condi_factor,
rank_factor=rank_factor,
total_factor_rank=total_factor_rank,
sell_type=sell_type, sell_zdf=sell_zdf, sell_value=sell_value,
max_workers=max_workers, interval=interval,
min_hold_days=min_hold_days, risk_free_rate=risk_free_rate,
slippage=slippage,
enable_limit_up_down_filter=enable_limit_up_down_filter,
max_single_position_ratio=max_single_position_ratio
)
return self._request('/xg_rank_factor_backtrader_moni_sq', params)
# ============================================================
# 四、数据读取接口
# ============================================================
def get_moni_trader_data(
self,
user: str = '小果',
st_type: str = '动量策略',
st_name: str = '小果动量模拟策略'
) -> Dict[str, Any]:
"""读取模拟交易的统计数据"""
params = self._get_params(user=user,st_type=st_type, st_name=st_name)
return self._request('/get_moni_trader_data', params)
def get_moni_trader_data_sq(
self,
user: str = '小果',
st_type: str = '动量策略',
st_name: str = '小果动量模拟策略'
) -> Dict[str, Any]:
"""读取社区交易的统计数据"""
params = self._get_params(user=user,st_type=st_type, st_name=st_name)
return self._request('/get_moni_trader_data_sq', params)
def get_stock_hist_data(
self,
stock: str = '513100.SH',
start_date: str = '20200101',
end_date: str = '20261231'
) -> Dict[str, Any]:
"""读取标的历史行情数据"""
params = self._get_params(
stock=stock,
start_date=start_date,
end_date=end_date
)
return self._request('/get_stock_hist_data', params)
def get_stock_factor_data(
self,
stock: str = '513100.SH',
start_date: str = '20200101',
end_date: str = '20261231',
columns: str = 'date,close,open,high,low,volume,amount'
) -> Dict[str, Any]:
"""读取标的因子数据"""
params = self._get_params(
stock=stock,
start_date=start_date,
end_date=end_date,
columns=columns
)
return self._request('/get_stock_factor_data', params)
def get_stock_finance_data(
self,
table: str = '资产负债表',
date: str = '2026-06-30',
columns: str = 'secu_code,end_date,total_assets'
) -> Dict[str, Any]:
"""读取股票财务数据"""
params = self._get_params(
table=table,
date=date,
columns=columns
)
return self._request('/get_stock_finance_data', params)
# ============================================================
# 四、策略删除接口(单个)
# ============================================================
def del_moni_trader_data(
self,
user: str = '小果',
st_type: str = '定投策略',
st_name: str = '小果定投模拟策略公开',
open_show: str = '是'
) -> Dict[str, Any]:
"""删除模拟策略数据"""
params = self._get_params(
user=user,
st_type=st_type,
st_name=st_name,
open_show=open_show
)
return self._request('/del_moni_trader_data', params)
def del_moni_trader_data_sq(
self,
user: str = '小果',
st_type: str = '定投策略',
st_name: str = '小果定投模拟策略公开',
open_show: str = '是'
) -> Dict[str, Any]:
"""删除社区策略数据"""
params = self._get_params(
user=user,
st_type=st_type,
st_name=st_name,
open_show=open_show
)
return self._request('/del_moni_trader_data_sq', params)
# ============================================================
# 五、批量策略管理接口
# ============================================================
def del_all_moni_trader_data(
self,
user: str = '小果',
confirm: str = '是'
) -> Dict[str, Any]:
"""删除全部模拟策略数据"""
params = self._get_params(
user=user,
confirm=confirm
)
return self._request('/del_all_moni_trader_data', params)
def del_all_moni_trader_data_sq(
self,
user: str = '小果',
confirm: str = '是'
) -> Dict[str, Any]:
"""删除全部社区策略数据"""
params = self._get_params(
user=user,
confirm=confirm
)
return self._request('/del_all_moni_trader_data_sq', params)
def get_all_moni_trader_data(
self,
user: str = '小果'
) -> Dict[str, Any]:
"""读取个人模拟全部策略"""
params = self._get_params(user=user)
return self._request('/get_all_moni_trader_data', params)
def get_all_moni_trader_data_sq(
self,
user: str = '小果'
) -> Dict[str, Any]:
"""读取个人社区全部策略"""
params = self._get_params(user=user)
return self._request('/get_all_moni_trader_data_sq', params)
# ============================================================
# 六、策略执行接口
# ============================================================
def xg_condi_factor_backtrader_run(
self,
st_name: str = '小果条件因子测试策略',
force_rerun: bool = False,
save_data: bool = True
) -> Dict[str, Any]:
"""条件多因子策略回测执行接口"""
params = self._get_params(
st_name=st_name,
force_rerun=force_rerun,
save_data=save_data
)
return self._request('/xg_condi_factor_backtrader_run', params)
############################新添加模型**************************
# ============================================================
# 七、均值方差策略接口
# ============================================================
def xg_mean_var_backtrader(
self,
start_date: str = '20260101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
max_workers: int = 4,
lookback_days: int = 60,
max_weight: float = 0.6,
min_weight: float = 0.05,
lambda_risk: float = 2.0,
interval: int = 5
) -> Dict[str, Any]:
"""均值方差最优资产组合权重再平衡策略回测"""
params = self._get_params(
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
max_workers=max_workers, lookback_days=lookback_days,
max_weight=max_weight, min_weight=min_weight,
lambda_risk=lambda_risk, interval=interval
)
return self._request('/xg_mean_var_backtrader_1', params)
def xg_mean_var_backtrader_moni(
self,
st_name: str = '小果均值方差策略',
open_show: str = '是',
start_date: str = '20260101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
max_workers: int = 4,
lookback_days: int = 60,
max_weight: float = 0.6,
min_weight: float = 0.05,
lambda_risk: float = 2.0,
interval: int = 5
) -> Dict[str, Any]:
"""均值方差最优资产组合策略模拟交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
max_workers=max_workers, lookback_days=lookback_days,
max_weight=max_weight, min_weight=min_weight,
lambda_risk=lambda_risk, interval=interval
)
return self._request('/xg_mean_var_backtrader_moni', params)
def xg_mean_var_backtrader_moni_sq(
self,
st_name: str = '小果均值方差社区策略',
open_show: str = '是',
start_date: str = '20260101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
index_stock: str = '000300.SH',
cash: float = 100000,
comm: float = 0.0001,
max_workers: int = 4,
lookback_days: int = 60,
max_weight: float = 0.6,
min_weight: float = 0.05,
lambda_risk: float = 2.0,
interval: int = 5
) -> Dict[str, Any]:
"""均值方差最优资产组合策略社区交易接口"""
params = self._get_params(
st_name=st_name, open_show=open_show,
start_date=start_date, end_date=end_date, stock_list=stock_list,
index_stock=index_stock, cash=cash, comm=comm,
max_workers=max_workers, lookback_days=lookback_days,
max_weight=max_weight, min_weight=min_weight,
lambda_risk=lambda_risk, interval=interval
)
return self._request('/xg_mean_var_backtrader_moni_sq', params)
# ============================================================
# 八、多标的量化分析接口
# ============================================================
def xg_stock_cov_correlation(
self,
start_date: str = '20260101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
max_workers: int = 4,
method: str = 'pearson',
risk_free_rate: float = 0.03
) -> Dict[str, Any]:
"""多标的收益率相关性矩阵"""
params = self._get_params(
start_date=start_date, end_date=end_date, stock_list=stock_list,
max_workers=max_workers, method=method,
risk_free_rate=risk_free_rate
)
return self._request('/xg_stock_cov_correlation', params)
def xg_stock_cov_covariance(
self,
start_date: str = '20260101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
max_workers: int = 4,
method: str = 'pearson',
risk_free_rate: float = 0.03,
annualized: bool = True
) -> Dict[str, Any]:
"""多标的收益率协方差矩阵"""
params = self._get_params(
start_date=start_date, end_date=end_date, stock_list=stock_list,
max_workers=max_workers, method=method,
risk_free_rate=risk_free_rate, annualized=annualized
)
return self._request('/xg_stock_cov_covariance', params)
def xg_stock_cov_portfolio(
self,
start_date: str = '20260101',
end_date: str = '20500101',
stock_list: str = '159915.SZ,513100.SH,518880.SH',
max_workers: int = 4,
method: str = 'pearson',
risk_free_rate: float = 0.03,
target_return: Optional[float] = None
) -> Dict[str, Any]:
"""多标的投资组合优化"""
params = self._get_params(
start_date=start_date, end_date=end_date, stock_list=stock_list,
max_workers=max_workers, method=method,
risk_free_rate=risk_free_rate, target_return=target_return
)
return self._request('/xg_stock_cov_portfolio', params)
# ============================================================
# 九、股票组合分析接口
# ============================================================
def xg_stock_analysis(
self,
start_date: str = '20240101',
end_date: str = '20261231',
stock_list: str = '159915.SZ,518880.SH,510300.SH',
stock_weight: str = '0.4,0.3,0.3',
index_stock: str = '000300.SH',
max_workers: int = 4,
risk_free_rate: float = 0.03
) -> Dict[str, Any]:
"""小果股票分析系统 - 组合收益分析"""
params = self._get_params(
start_date=start_date, end_date=end_date, stock_list=stock_list,
stock_weight=stock_weight, index_stock=index_stock,
max_workers=max_workers, risk_free_rate=risk_free_rate
)
return self._request('/xg_stock_analysis', params)
# ============================================================
# 十、用户认证接口
# ============================================================
def get_user_info(
self,
user: str = '小果'
) -> Dict[str, Any]:
"""获取用户信息"""
params = self._get_params(user=user)
return self._request('/get_user_info', params)
def check_password_is_av_user(
self,
user: str = '小果'
) -> Dict[str, Any]:
"""检查授权码有效性"""
params = self._get_params(user=user)
return self._request('/check_password_is_av_user', params)
# ============================================================
# 十一、数据查询接口(AKShare/数据库API)
# ============================================================
def get_wencai_data(
self,
query: str = '今日涨停'
) -> Dict[str, Any]:
"""获取问财数据"""
params = self._get_params(query=query)
return self._request('/get_wencai_data', params)
def get_user_def_data(
self,
name: str = 'df',
func: str = '''
import akshare as ak
df = ak.stock_info_a_code_name()
print(df)
'''
) -> Dict[str, Any]:
"""获取自定义数据"""
params = self._get_params(name=name, func=func)
return self._request('/get_user_def_data', params)
def get_user_base_data(
self,
file_path: str = '/xg_data/全市场股票/',
file_name: str = '全市场股票'
) -> Dict[str, Any]:
"""获取数据库的数据"""
params = self._get_params(file_path=file_path, file_name=file_name)
return self._request('/get_user_base_data', params)
# ============================================================
# 十二、Tick/分钟数据接口
# ============================================================
def get_mini_data_5(
self,
stock: str = 'sh.600031',
start_date: str = '2026-04-01',
end_date: str = '2050-12-31',
frequency: str = '5',
adjustflag: str = '2'
) -> Dict[str, Any]:
"""读取5分钟数据(mini)"""
params = self._get_params(
stock=stock,
start_date=start_date,
end_date=end_date,
frequency=frequency,
adjustflag=adjustflag
)
return self._request('/get_mini_data_5', params)
def get_mini_data_15(
self,
stock: str = 'sh.600031',
start_date: str = '2026-04-01',
end_date: str = '2050-12-31',
frequency: str = '15',
adjustflag: str = '2'
) -> Dict[str, Any]:
"""读取15分钟数据(mini)"""
params = self._get_params(
stock=stock,
start_date=start_date,
end_date=end_date,
frequency=frequency,
adjustflag=adjustflag
)
return self._request('/get_mini_data_15', params)
def get_mini_data_30(
self,
stock: str = 'sh.600031',
start_date: str = '2026-04-01',
end_date: str = '2050-12-31',
frequency: str = '30',
adjustflag: str = '2'
) -> Dict[str, Any]:
"""读取30分钟数据(mini)"""
params = self._get_params(
stock=stock,
start_date=start_date,
end_date=end_date,
frequency=frequency,
adjustflag=adjustflag
)
return self._request('/get_mini_data_30', params)
def get_mini_data_60(
self,
stock: str = 'sh.600031',
start_date: str = '2026-04-01',
end_date: str = '2050-12-31',
frequency: str = '60',
adjustflag: str = '2'
) -> Dict[str, Any]:
"""读取60分钟数据(mini)"""
params = self._get_params(
stock=stock,
start_date=start_date,
end_date=end_date,
frequency=frequency,
adjustflag=adjustflag
)
return self._request('/get_mini_data_60', params)
# ============================================================
# 十三、K线数据接口
# ============================================================
def query_history_k_data_plus_d(
self,
stock: str = 'sh.600031',
start_date: str = '2026-04-01',
end_date: str = '2050-12-31',
frequency: str = 'd',
adjustflag: str = '2'
) -> Dict[str, Any]:
"""日线数据"""
params = self._get_params(
stock=stock,
start_date=start_date,
end_date=end_date,
frequency=frequency,
adjustflag=adjustflag
)
return self._request('/query_history_k_data_plus_d', params)
def query_history_k_data_plus_w(
self,
stock: str = 'sh.600031',
start_date: str = '2026-04-01',
end_date: str = '2050-12-31',
frequency: str = 'w',
adjustflag: str = '2'
) -> Dict[str, Any]:
"""周线数据"""
params = self._get_params(
stock=stock,
start_date=start_date,
end_date=end_date,
frequency=frequency,
adjustflag=adjustflag
)
return self._request('/query_history_k_data_plus_w', params)
def query_history_k_data_plus_m(
self,
stock: str = 'sh.600031',
start_date: str = '2026-04-01',
end_date: str = '2050-12-31',
frequency: str = 'm',
adjustflag: str = '2'
) -> Dict[str, Any]:
"""月线数据"""
params = self._get_params(
stock=stock,
start_date=start_date,
end_date=end_date,
frequency=frequency,
adjustflag=adjustflag
)
return self._request('/query_history_k_data_plus_m', params)
# ============================================================
# 十四、指数K线数据接口
# ============================================================
def query_history_k_data_plus_index_d(
self,
stock: str = 'sh.000001',
start_date: str = '2026-04-01',
end_date: str = '2050-12-31',
frequency: str = 'd'
) -> Dict[str, Any]:
"""指数日线数据"""
params = self._get_params(
stock=stock,
start_date=start_date,
end_date=end_date,
frequency=frequency
)
return self._request('/query_history_k_data_plus_index_d', params)
def query_history_k_data_plus_index_w(
self,
stock: str = 'sh.000001',
start_date: str = '2026-04-01',
end_date: str = '2050-12-31',
frequency: str = 'w'
) -> Dict[str, Any]:
"""指数周线数据"""
params = self._get_params(
stock=stock,
start_date=start_date,
end_date=end_date,
frequency=frequency
)
return self._request('/query_history_k_data_plus_index_w', params)
def query_history_k_data_plus_index_m(
self,
stock: str = 'sh.000001',
start_date: str = '2026-04-01',
end_date: str = '2050-12-31',
frequency: str = 'm'
) -> Dict[str, Any]:
"""指数月线数据"""
params = self._get_params(
stock=stock,
start_date=start_date,
end_date=end_date,
frequency=frequency
)
return self._request('/query_history_k_data_plus_index_m', params)
# ============================================================
# 十五、财务数据接口
# ============================================================
def query_profit_data(
self,
code: str = 'sh.600031',
year: str = '2025',
quarter: str = '1'
) -> Dict[str, Any]:
"""盈利能力"""
params = self._get_params(
code=code,
year=year,
quarter=quarter
)
return self._request('/query_profit_data', params)
def query_operation_data(
self,
code: str = 'sh.600031',
year: str = '2025',
quarter: str = '1'
) -> Dict[str, Any]:
"""营运能力"""
params = self._get_params(
code=code,
year=year,
quarter=quarter
)
return self._request('/query_operation_data', params)
def query_growth_data(
self,
code: str = 'sh.600031',
year: str = '2026',
quarter: str = '1'
) -> Dict[str, Any]:
"""季频成长能力"""
params = self._get_params(
code=code,
year=year,
quarter=quarter
)
return self._request('/query_growth_data', params)
def query_balance_data(
self,
code: str = 'sh.600031',
year: str = '2026',
quarter: str = '1'
) -> Dict[str, Any]:
"""季频偿债能力"""
params = self._get_params(
code=code,
year=year,
quarter=quarter
)
return self._request('/query_balance_data', params)
def query_cash_flow_data(
self,
code: str = 'sh.600031',
year: str = '2026',
quarter: str = '1'
) -> Dict[str, Any]:
"""季频现金流量"""
params = self._get_params(
code=code,
year=year,
quarter=quarter
)
return self._request('/query_cash_flow_data', params)
def query_dupont_data(
self,
code: str = 'sh.600031',
year: str = '2026',
quarter: str = '1'
) -> Dict[str, Any]:
"""季频杜邦指数"""
params = self._get_params(
code=code,
year=year,
quarter=quarter
)
return self._request('/query_dupont_data', params)
# ============================================================
# 五、系统接口
# ============================================================
def root(self) -> Dict[str, Any]:
"""根路径"""
return self._request('/', {})
def health(self) -> Dict[str, Any]:
"""健康检查"""
return self._request('/health', {})
# ============================================================
# 测试代码
# ============================================================
if __name__ == "__main__":
print("=" * 60)
print("🚀 小果量化数据API测试")
print("=" * 60)
# 初始化客户端(使用您提供的服务器地址)
client = xg_quant_backtrader_data(
url="1服务器地址",
port=8888,
user="自定义名称",
password="自定义密码",
auth_code="自定义token"
)
print("\n" + "=" * 60)
print("📋 一、系统接口测试")
print("=" * 60)
#因子数据
df=client.get_stock_factor_data(columns='date,证券代码,5日涨跌幅')
df=client._to_dataframe(df)
print(df)
#股票数据
df=client.get_stock_hist_data()
df=client._to_dataframe(df)
print(df)
#财务数据
df=client.get_stock_finance_data()
df=client._to_dataframe(df)
print(df)
微信扫一扫