量化研究--推出强大西蒙斯金融量化交易数据库2
原创 L1511732 西蒙斯量化交易研究院 2025年09月09日 23:42 贵州
文章声明:本内容为个人的业余研究,和任何单位,机构没有关系,文章出现的股票代码,全部只是测试例子,不做投资参考,投资有风险,代码学习使用,不做商业用途
目前金融数据很伤脑筋,以前东方财富给免费的获取,现在有限制了不方便模型分析,tushare需要付费,所以打算自己建立自己的数据库,把数据存储到服务器,方便回测,分析模型,我用了异步开发,速度是非常块的,西蒙斯金融量化交易数据库2做了重大的变化,数据全部入数据库,直接api去调用数据的接口数据,给了数据api,同时我对接了qmt,保留了实时数据的接口,实时数据不入数据库,直接获取就可以
使用的教程
https://gitee.com/li-xingguo11111/xms_quant_trader_data
安装安装python,按win+r,输入cmd
详细的内容教程
输入安装的pip代码,按回车就可以
安装代码直接pip安装方便
py -m pip install http://124.220.32.224:8888/xms_quant_trader_data-0.1-py3-none-any.whl
安装成功了复制网页的代码运行就可以,前提的数据我还在上线
获取问财数据
from xms_quant_trader_data.xms_quant_trader_data import xms_quant_trader_data
client=xms_quant_trader_data(
url='http://14.103.193.242',
port='8080',
password='test')
df=client.get_wencai_data(query='今日涨停')
df=client.data_to_pandas(data=df)
print(df)
获取高频tick数据,实时的
from xms_quant_trader_data.xms_quant_trader_data import xms_quant_trader_data
client=xms_quant_trader_data(
url='http://14.103.193.242',
port='8080',
password='test')
df=client.get_full_tick(stock='513100.SH')
print(df)
输出的结果
西蒙斯金融量化交易数据库2
作者:西蒙斯量化
微信:xms_quant
服务器http://14.103.193.242 端口8080 授权码test
{'513100.SH': {'timetag': '20250909 15:00:01', 'lastPrice': 1.701, 'open': 1.698, 'high': 1.701, 'low': 1.696, 'lastClose': 1.696, 'amount': 542998700, 'volume': 3196478, 'pvolume': 319647804, 'stockStatus': 5, 'openInt': 15, 'settlementPrice': 0, 'lastSettlementPrice': 1.696, 'askPrice': [1.701, 1.702, 1.703, 1.704, 1.705], 'bidPrice': [1.7, 1.699, 1.698, 1.697, 1.696], 'askVol': [8417, 25818, 10838, 6465, 6512], 'bidVol': [27226, 34602, 29614, 22349, 20823]}}
获取可转债日线数据
from xms_quant_trader_data.xms_quant_trader_data import xms_quant_trader_data
from datetime import datetime
client=xms_quant_trader_data(
url='http://14.103.193.242',
port='8080',
password='test')
df=client.get_bond_cov_daily_hist_data(
stock='113575',
start_date='20210101',
end_date='20500101')
print(df)
输出的结果
time open high low close volume ... preClose suspendFlag date 成交额 涨跌幅 涨跌额
165 1609689600000 133.500 137.780 131.500 136.150 13463 ... 134.160 0 2021-01-03 16:00:00 1.805654e+07 1.483304 1.990
166 1609776000000 136.150 146.770 135.300 139.880 19954 ... 136.150 0 2021-01-04 16:00:00 2.767949e+07 2.739625 3.730
167 1609862400000 139.890 147.000 139.100 143.590 17681 ... 139.880 0 2021-01-05 16:00:00 2.510949e+07 2.652273 3.710
168 1609948800000 159.000 163.000 137.220 140.400 72201 ... 143.590 0 2021-01-06 16:00:00 1.061643e+08 -2.221603 -3.190
169 1610035200000 140.060 140.380 133.210 133.250 25544 ... 140.400 0 2021-01-07 16:00:00 3.498512e+07 -5.092593 -7.150
... ... ... ... ... ... ... ... ... ... ... ... ... ...
1297 1756828800000 193.293 209.949 188.431 197.781 821468 ... 195.405 0 2025-09-02 16:00:00 1.636904e+09 1.215936 2.376
1298 1756915200000 198.500 203.500 180.640 181.101 326564 ... 197.781 0 2025-09-03 16:00:00 6.226391e+08 -8.433570 -16.680
1299 1757001600000 184.110 185.500 178.555 182.400 243188 ... 181.101 0 2025-09-04 16:00:00 4.439950e+08 0.717279 1.299
1300 1757260800000 182.399 186.998 181.022 184.956 196799 ... 182.400 0 2025-09-07 16:00:00 3.622621e+08 1.401316 2.556
1301 1757347200000 187.000 202.236 186.866 192.481 1138720 ... 184.956 0 2025-09-08 16:00:00 2.232478e+09 4.068535 7.525
[1137 rows x 15 columns]
我还写了不少数据的api还没有写文档可以直接下载使
不懂的问我就可以,加我备注入群可以加入量化群
目前写的数据api,还在上线其他的
import pandas as pd
import json
import requests
class xms_quant_trader_data:
'''
西蒙斯金融量化交易数据库2
作者:西蒙斯量化
微信:xms_quant
'''
def __init__(self,
url='http://14.103.193.242',
port='8080',
password='test'):
print('''
西蒙斯金融量化交易数据库2
作者:西蒙斯量化
微信:xms_quant
''')
print('服务器{} 端口{} 授权码{}'.format(url,port,password))
self.url=url
self.port=port
self.password=password
def get_user_info(self):
'''
获取使用者信息
'''
url='{}:{}/{}?'.format(self.url,self.port,'get_user_info')
params={
'password':self.password
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
return res
def check_password_is_av_user(self):
'''
检查授权码是否可以使用
'''
url='{}:{}/{}?'.format(self.url,self.port,'check_password_is_av_user')
params={
'password':self.password
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
return res
def get_full_tick(self,stock='513100.SH'):
'''
获取tick数据
'time' #时间戳
'lastPrice' #最新价
'open' #开盘价
'high' #最高价
'low' #最低价
'lastClose' #前收盘价
'amount' #成交总额
'volume' #成交总量
'pvolume' #原始成交总量
'stockStatus' #证券状态
'openInt' #持仓量
'lastSettlementPrice' #前结算
'askPrice' #委卖价
'bidPrice' #委买价
'askVol' #委卖量
'bidVol' #委买量
'transactionNum' #成交笔数
'''
url='{}:{}/{}?'.format(self.url,self.port,'get_full_tick')
params={
'password':self.password,
'stock':stock
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
return res
def get_full_all_tick(self,code_list=['513100.SH','600031.SH']):
'''
获取多个标的tick数据
http://127.0.0.1:5000/get_full_all_tick?code_list=513100.SH,600031.SH
'time' #时间戳
'lastPrice' #最新价
'open' #开盘价
'high' #最高价
'low' #最低价
'lastClose' #前收盘价
'amount' #成交总额
'volume' #成交总量
'pvolume' #原始成交总量
'stockStatus' #证券状态
'openInt' #持仓量
'lastSettlementPrice' #前结算
'askPrice' #委卖价
'bidPrice' #委买价
'askVol' #委卖量
'bidVol' #委买量
'transactionNum' #成交笔数
'''
url='{}:{}/{}?'.format(self.url,self.port,'get_full_all_tick')
params={
'password':self.password,
'code_list':','.join(code_list)
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
return res
def get_market_data_ex(self,
stock_code='513100.SH',
period='1d',
start_time='20250101',
end_time='20500101',
count=-1):
'''
获取历史行情数据
:param field_list: 行情数据字段列表,[]为全部字段
K线可选字段:
"time" #时间戳
"open" #开盘价
"high" #最高价
"low" #最低价
"close" #收盘价
"volume" #成交量
"amount" #成交额
"settle" #今结算
"openInterest" #持仓量
分笔可选字段:
"time" #时间戳
"lastPrice" #最新价
"open" #开盘价
"high" #最高价
"low" #最低价
"lastClose" #前收盘价
"amount" #成交总额
"volume" #成交总量
"pvolume" #原始成交总量
"stockStatus" #证券状态
"openInt" #持仓量
"lastSettlementPrice" #前结算
"askPrice1", "askPrice2", "askPrice3", "askPrice4", "askPrice5" #卖一价~卖五价
"bidPrice1", "bidPrice2", "bidPrice3", "bidPrice4", "bidPrice5" #买一价~买五价
"askVol1", "askVol2", "askVol3", "askVol4", "askVol5" #卖一量~卖五量
"bidVol1", "bidVol2", "bidVol3", "bidVol4", "bidVol5" #买一量~买五量
:param stock_list: 证券代码 "000001.SZ"
:param period: 周期 分笔"tick" 分钟线"1m"/"5m" 日线"1d"
:param start_time: 起始时间 "20200101" "20200101093000"
:param end_time: 结束时间 "20201231" "20201231150000"
:param count: 数量 -1全部/n: 从结束时间向前数n个
:param dividend_type: 除权类型"none" "front" "back" "front_ratio" "back_ratio"
:param fill_data: 对齐时间戳时是否填充数据,仅对K线有效,分笔周期不对齐时间戳
为True时,以缺失数据的前一条数据填充
open、high、low、close 为前一条数据的close
amount、volume为0
settle、openInterest 和前一条数据相同
为False时,缺失数据所有字段填NaN
:return: 数据集,分笔数据和K线数据格式不同
period为'tick'时:{stock1 : value1, stock2 : value2, ...}
stock1, stock2, ... : 合约代码
value1, value2, ... : np.ndarray 数据列表,按time增序排列
period为其他K线周期时:{field1 : value1, field2 : value2, ...}
field1, field2, ... : 数据字段
value1, value2, ... : pd.DataFrame 字段对应的数据,各字段维度相同,index为stock_list,columns为time_list
'''
url='{}:{}/{}?'.format(self.url,self.port,'get_market_data_ex')
params={
'password':self.password,
'stock_code':stock_code,
'period':period,
'start_time':start_time,
'end_time':end_time,
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
return res
def data_to_pandas(self,data):
try:
df=pd.DataFrame(data)
except:
df=pd.DataFrame()
for keys,value in data.items():
df[keys]=[value]
return df
def get_wencai_data(self,
query='今日涨停',
):
'''
获取问财数据
'''
url='{}:{}/{}?'.format(self.url,self.port,'get_wencai_data')
params={
'password':self.password,
'query':query
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
return res
def get_user_def_data(self,
name='df',
func= """
import akshare as ak
df = ak.stock_zt_pool_em(date='20250711')
"""):
'''
获取自定义函数数据
'''
url='{}:{}/{}?'.format(self.url,self.port,'get_user_def_data')
params={
'password':self.password,
'name':name,
"func":func
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
return res
def get_bond_cov_spot_data(self,
url='http://124.220.32.224',
port='8023',
date='20250711'):
'''
获取可转债实时数据
'''
func='''
import requests
import pandas as pd
try:
url='{}:{}/data/实时数据/{}.json?t=1752251108452'
res=requests.get(url=url)
res=res.json()
df=pd.DataFrame(res)
except Exception as e:
print(e,'获取实时数据表有问题')
df=pd.DataFrame()
'''.format(url,port,date)
df=self.get_user_def_data(func=func)
return df
def get_bond_cov_all_mr_factor_data(self,
url='http://124.220.32.224',
port='8023',
date='20250711'):
'''
获取可转债全部默认因子数据
'''
func='''
import requests
import pandas as pd
try:
url='{}:{}/data/全部默认因子/{}.json?t=1752251108452'
res=requests.get(url=url)
res=res.json()
df=pd.DataFrame(res)
except Exception as e:
print(e,'获取全部默认因子表有问题')
df=pd.DataFrame()
'''.format(url,port,date)
df=self.get_user_def_data(func=func)
return df
def get_bond_cov_all_connect_factor_data(self,
url='http://124.220.32.224',
port='8023',
date='20250711'):
'''
获取可转债合成因子因子数据
'''
func='''
import requests
import pandas as pd
try:
url='{}:{}/data/合成因子/{}.json?t=1752251108452'
res=requests.get(url=url)
res=res.json()
df=pd.DataFrame(res)
except Exception as e:
print(e,'获取全部默认因子表有问题')
df=pd.DataFrame()
'''.format(url,port,date)
df=self.get_user_def_data(func=func)
return df
def get_instrument_detail(self,stock='600031.SH'):
'''
获取可标的的基础数据
ExchangeID - string 合约市场代码
InstrumentID - string 合约代码
InstrumentName - string 合约名称
ProductID - string 合约的品种ID(期货)
ProductName - string 合约的品种名称(期货)
ExchangeCode - string 交易所代码
UniCode - string 统一规则代码
CreateDate - str 上市日期(期货)
OpenDate - str IPO日期(股票)
ExpireDate - int 退市日或者到期日
PreClose - float 前收盘价格
SettlementPrice - float 前结算价格
UpStopPrice - float 当日涨停价
DownStopPrice - float 当日跌停价
FloatVolume - float 流通股本
TotalVolume - float 总股本
LongMarginRatio - float 多头保证金率
ShortMarginRatio - float 空头保证金率
PriceTick - float 最小价格变动单位
VolumeMultiple - int 合约乘数(对期货以外的品种,默认是1)
MainContract - int 主力合约标记,1、2、3分别表示第一主力合约,第二主力合约,第三主力合约
LastVolume - int 昨日持仓量
InstrumentStatus - int 合约停牌状态
IsTrading - bool 合约是否可交易
IsRecent - bool 是否是近月合约
OpenInterestMultiple - int 交割月持仓倍数
'''
url='{}:{}/{}?'.format(self.url,self.port,'get_instrument_detail')
params={
'password':self.password,
'stock':stock
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
return res
def get_all_maker_stock(self):
'''
获取全市场股票
'''
file_path: str = '/data/全市场股票/',
file_name: str = '全市场股票'
url='{}:{}/{}?'.format(self.url,self.port,'get_user_base_data')
params={
'password':self.password,
'file_path':file_path,
"file_name":file_name
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
df=self.data_to_pandas(res)
return df
def adjust_stock_1(self,x=''):
return '0'*(6-len(str(x)))+str(x)
def adjust_stock(stock='600031.SH'):
'''
调整代码
'''
if stock[-2:]=='SH' or stock[-2:]=='SZ' or stock[-2:]=='sh' or stock[-2:]=='sz':
stock=stock.upper()
else:
if stock[:3] in ['600','601','603','605','688','689',
] or stock[:2] in ['11','51','58'] or stock[:1] in ['5']:
stock=stock+'.SH'
else:
stock=stock+'.SZ'
return stock
def get_stock_daily_hist_data(self,stock='301088',start_date='20200101',end_date='20500101'):
'''
获取股票日线行情数据
'''
file_path: str = '/data/股票日线行情/'
file_name: str = '{}'.format(stock)
url='{}:{}/{}?'.format(self.url,self.port,'get_user_base_data')
params={
'password':self.password,
'file_path':file_path,
"file_name":file_name
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
df=self.data_to_pandas(res)
df['date']=pd.to_datetime(df['time'],unit='ms')
df=df[df['date']>=start_date]
df=df[df['date']<=end_date]
return df
def get_maker_all_ETF(self):
'''
获取市场全部ETF
'''
file_path= '/data/{}/'.format('市场全部ETF')
file_name= '{}'.format('市场全部ETF')
url='{}:{}/{}?'.format(self.url,self.port,'get_user_base_data')
params={
'password':self.password,
'file_path':file_path,
"file_name":file_name
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
df=self.data_to_pandas(res)
return df
def get_ETF_daily_hist_data(self,stock='512890',start_date='20200101',end_date='20500101'):
'''
获取ETF日线行情数据
'''
file_path: str = '/data/ETF日线行情/'
file_name: str = '{}'.format(stock)
url='{}:{}/{}?'.format(self.url,self.port,'get_user_base_data')
params={
'password':self.password,
'file_path':file_path,
"file_name":file_name
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
df=self.data_to_pandas(res)
df['date']=pd.to_datetime(df['time'],unit='ms')
df=df[df['date']>=start_date]
df=df[df['date']<=end_date]
return df
def get_maker_bond_cov_data(self):
'''
获取全市场可转债
'''
file_path= '/data/{}/'.format('全部可转债')
file_name= '{}'.format('全部可转债')
url='{}:{}/{}?'.format(self.url,self.port,'get_user_base_data')
params={
'password':self.password,
'file_path':file_path,
"file_name":file_name
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
df=self.data_to_pandas(res)
return df
def get_bond_cov_daily_hist_data(self,stock='113575',start_date='20200101',end_date='20500101'):
'''
获取可转债日线行情数据
'''
file_path: str = '/data/可转债日线行情/'
file_name: str = '{}'.format(stock)
url='{}:{}/{}?'.format(self.url,self.port,'get_user_base_data')
params={
'password':self.password,
'file_path':file_path,
"file_name":file_name
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
df=self.data_to_pandas(res)
df['date']=pd.to_datetime(df['time'],unit='ms')
df=df[df['date']>=start_date]
df=df[df['date']<=end_date]
return df
def stock_fund_flow_individual(self,date='20250909',symbol='3日排行'):
'''
同花顺个股资金流
symbol="即时"; choice of {“即时”, "3日排行", "5日排行", "10日排行", "20日排行"}
输出结果
名称 类型 描述
序号 int32 -
股票代码 int64 -
股票简称 object -
最新价 float64 -
阶段涨跌幅 object 注意单位: %
连续换手率 object 注意单位: %
资金流入净额 float64 注意单位: 元
'''
file_path= '/data/同花顺个股资金流/'
file_name= '{}_{}'.format(date,symbol)
url='{}:{}/{}?'.format(self.url,self.port,'get_user_base_data')
params={
'password':self.password,
'file_path':file_path,
"file_name":file_name
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
df=self.data_to_pandas(res)
return df
def stock_fund_flow_concept(self,date='20250909',symbol='3日排行'):
'''
同花顺概念资金流
输出参数-3日、5日、10日和20日
名称 类型 描述
序号 int32 -
行业 object -
公司家数 int64 -
行业指数 float64 -
阶段涨跌幅 object 注意单位: %
流入资金 float64 注意单位: 亿
流出资金 float64 注意单位: 亿
净额 float64 注意单位: 亿
'''
file_path= '/data/同花顺概念资金流/'
file_name= '{}_{}'.format(date,symbol)
url='{}:{}/{}?'.format(self.url,self.port,'get_user_base_data')
params={
'password':self.password,
'file_path':file_path,
"file_name":file_name
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
df=self.data_to_pandas(res)
return df
def stock_fund_flow_industry(self,date='20250909',symbol='3日排行'):
'''
同花顺行业资金流
输出参数-3日、5日、10日和20日
名称 类型 描述
序号 int32 -
行业 object -
公司家数 int64 -
行业指数 float64 -
阶段涨跌幅 object 注意单位: %
流入资金 float64 注意单位: 亿
流出资金 float64 注意单位: 亿
净额 float64 注意单位: 亿
'''
file_path= '/data/同花顺行业资金流/'
file_name= '{}_{}'.format(date,symbol)
url='{}:{}/{}?'.format(self.url,self.port,'get_user_base_data')
params={
'password':self.password,
'file_path':file_path,
"file_name":file_name
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
df=self.data_to_pandas(res)
return df
def stock_individual_fund_flow_rank(self,date='20250909',indicator='3日'):
'''
东方财富个股资金流排名
indicator="今日"; choice {"今日", "3日", "5日", "10日"}
名称 类型 描述
序号 int64 -
代码 object -
名称 object -
最新价 float64 -
今日涨跌幅 float64 注意单位: %
今日主力净流入-净额 float64 -
今日主力净流入-净占比 float64 注意单位: %
今日超大单净流入-净额 float64 -
今日超大单净流入-净占比 float64 注意单位: %
今日大单净流入-净额 float64 -
今日大单净流入-净占比 float64 注意单位: %
今日中单净流入-净额 float64 -
今日中单净流入-净占比 float64 注意单位: %
今日小单净流入-净额 float64 -
今日小单净流入-净占比 float64 注意单位: %
'''
file_path= '/data/东方财富个股资金流排名/'
file_name= '{}_{}'.format(date,indicator)
url='{}:{}/{}?'.format(self.url,self.port,'get_user_base_data')
params={
'password':self.password,
'file_path':file_path,
"file_name":file_name
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
df=self.data_to_pandas(res)
return df
def stock_sector_fund_flow_rank(self,
date='20250909',
indicator='今日',
sector_type='行业资金流'
):
'''
东方财富板块资金流排名
indicator str indicator="今日"; choice of {"今日", "5日", "10日"}
sector_type str sector_type="行业资金流"; choice of {"行业资金流", "概念资金流", "地域资金流"}
名称 类型 描述
序号 int64 -
名称 object -
今日涨跌幅 float64 注意单位: %
主力净流入-净额 float64 -
主力净流入-净占比 float64 注意单位: %
超大单净流入-净额 float64 -
超大单净流入-净占比 float64 注意单位: %
大单净流入-净额 float64 -
大单净流入-净占比 float64 注意单位: %
中单净流入-净额 float64 -
中单净流入-净占比 float64 注意单位: %
小单净流入-净额 float64 -
小单净流入-净占比 float64 注意单位: %
主力净流入最大股 object -
'''
file_path= '/data/东方财富板块资金流排名/'
file_name= '{}_{}_{}'.format(date,indicator,sector_type)
url='{}:{}/{}?'.format(self.url,self.port,'get_user_base_data')
params={
'password':self.password,
'file_path':file_path,
"file_name":file_name
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
df=self.data_to_pandas(res)
return df
def stock_main_fund_flow(self,date='20250909',symbol='全部股票'):
'''
东方财富主力净流入排名
symbol str symbol="全部股票";choice of {"全部股票", "沪深A股", "沪市A股", "科创板", "深市A股", "创业板", "沪市B股", "深市B股"}
输出参数
名称 类型 描述
序号 int64 -
代码 object -
名称 object -
最新价 float64 -
今日排行榜-主力净占比 float64 注意单位: %
今日排行榜-今日排名 float64 -
今日排行榜-今日涨跌 float64 注意单位: %
5日排行榜-主力净占比 float64 注意单位: %
5日排行榜-5日排名 int64 -
5日排行榜-5日涨跌 float64 注意单位: %
10日排行榜-主力净占比 float64 注意单位: %
10日排行榜-10日排名 int64 -
10日排行榜-10日涨跌 float64 注意单位: %
所属板块 object -
'''
file_path= '/data/东方财富主力净流入排名/'
file_name= '{}_{}'.format(date,symbol)
url='{}:{}/{}?'.format(self.url,self.port,'get_user_base_data')
params={
'password':self.password,
'file_path':file_path,
"file_name":file_name
}
response = requests.get(
url=url,
params=params,
timeout=300
)
res=response.json()
df=self.data_to_pandas(res)
return df
if __name__=='__main__':
'''
西蒙斯金融量化交易数据库
作者:西蒙斯量化
微信:xms_quant
'''
client=xms_quant_trader_data(
#url='http://127.0.0.1'
)
df=client.get_full_tick()
print(df)