Skip to content

FQData 使用指南

基本使用

获取数据源

python
from FQData import get_datasource

ds = get_datasource()
print(ds)

获取存储

python
from FQData import get_datastore

store = get_datastore()
print(store)

数据获取

股票数据

python
from FQData import get_datasource

ds = get_datasource()

stock_day = ds.get_stock_day(
    code='600000',
    start='2024-01-01',
    end='2024-12-31',
    adjust='qfq'
)

stock_min = ds.get_stock_min(
    code='600000',
    freq='5min',
    start='2024-01-01 09:30:00',
    end='2024-01-01 15:00:00'
)

指数数据

python
index_day = ds.get_index_day(
    code='000001',
    start='2024-01-01',
    end='2024-12-31'
)

index_min = ds.get_index_min(
    code='000001',
    freq='1min',
    start='2024-01-01'
)

期货数据

python
future_day = ds.get_future_day(
    code='IF2401',
    start='2024-01-01',
    end='2024-12-31'
)

future_min = ds.get_future_min(
    code='IF2401',
    freq='5min',
    start='2024-01-01'
)

数据存储

保存股票数据

python
from FQData import save_single_stock_day, save_stock_day

data = pd.DataFrame({...})

save_single_stock_day('600000', data)

save_stock_day(['600000', '000001'], {
    '600000': data1,
    '000001': data2
})

保存指数/ETF

python
from FQData import save_index_day, save_etf_day

save_index_day(['000001', '399001'])

save_etf_day(['510300', '510050'])

保存期货

python
from FQData import save_future_day, save_future_list

save_future_day(['IF2401', 'IC2401'])

save_future_list()

保存债券

python
from FQData import save_bond_day, save_bond_list

save_bond_day(['113009', '110081'])

save_bond_list()

数据查询

查询股票

python
from FQData import query_stock_day, query_stock_min

df = query_stock_day(
    code='600000',
    start='2024-01-01',
    end='2024-12-31'
)

df_min = query_stock_min(
    code='600000',
    freq='5min',
    start='2024-01-01',
    end='2024-01-31'
)

查询指数

python
from FQData import query_index_day, query_index_min

df = query_index_day(
    code='000001',
    start='2024-01-01',
    end='2024-12-31'
)

查询期货

python
from FQData import query_future_day, query_future_min

df = query_future_day(
    code='IF2401',
    start='2024-01-01',
    end='2024-12-31'
)

查询除权数据

python
from FQData import query_stock_xdxr

df = query_stock_xdxr(code='600000')

查询交易日

python
from FQData import query_trade_date

dates = query_trade_date(start='2024-01-01', end='2024-12-31')

事务管理

python
from FQData import TransactionManager, UnitOfWork

tm = TransactionManager()

with tm.begin() as tx:
    tx.insert('stock_day', data1)
    tx.update('stock_info', {'code': '600000'}, update_data)
    tx.delete('temp', {'type': 'temp'})

uw = UnitOfWork()
uw.register_new('stock_day', new_data)
uw.register_modified('stock_info', modified_data)
uw.register_removed('temp', to_delete)

tm.commit(uw)

代码工具

代码分类

python
from FQData.normalizer import for_sz, for_sh

type_sz = for_sz('000001')
type_sh = for_sh('600000')

print(f"000001 类型: {type_sz}")
print(f"600000 类型: {type_sh}")

市场转换

python
from FQData.normalizer import code_to_market, code_to_market_full, get_stock_market

market = code_to_market('600000')
market_full = code_to_market_full('600000')
market_name = get_stock_market('600000')

print(f"市场: {market}")
print(f"完整标识: {market_full}")
print(f"市场名称: {market_name}")

K线频率转换

python
from FQData.normalizer import _select_type

freq_code = _select_type('5min')
print(f"5分钟频率代码: {freq_code}")

freq_code = _select_type('day')
print(f"日线频率代码: {freq_code}")

并行处理

并行保存股票

python
from FQData import save_stock_day_parallel

result = save_stock_day_parallel(
    codes=['600000', '000001', '000002', '600036', '601318'],
    start='2024-01-01',
    end='2024-12-31',
    workers=4
)

print(f"成功: {result['success_count']}")
print(f"失败: {result['failed_count']}")

并行保存指数

python
from FQData import save_index_day_parallel

result = save_index_day_parallel(
    codes=['000001', '399001'],
    start='2024-01-01',
    end='2024-12-31',
    workers=2
)

数据持久化流程

完整流程示例

python
from FQData import (
    get_datasource,
    get_datastore,
    save_stock_day,
    query_stock_day,
)

ds = get_datasource()
store = get_datastore()

data = ds.get_stock_day(
    code='600000',
    start='2024-01-01',
    end='2024-12-31'
)

save_stock_day('600000', data)

df = query_stock_day(
    code='600000',
    start='2024-01-01',
    end='2024-12-31'
)

print(f"获取数据: {len(data)} 条")
print(f"存储数据: {len(df)} 条")

数据结构使用

创建数据结构

python
from FQData.DataStruct import StockDayData

stock_day = StockDayData(df)

print(f"代码: {stock_day.code.tolist()}")
print(f"开盘: {stock_day.open.head()}")
print(f"收盘: {stock_day.close.head()}")

复权处理

python
from FQData.DataStruct import fetch_stock_adj, data_stock_to_fq

adj_data = fetch_stock_adj(code='600000', start='2024-01-01')

fq_data = data_stock_to_fq(original_data, adj_data)

重采样

python
from FQData.DataStruct import min_resample, min_to_day, day_resample

data_5min = min_resample(min_data, freq='5min')

daily = min_to_day(min_data)

weekly = day_resample(daily, freq='W')

常见操作

批量获取多只股票

python
codes = ['600000', '000001', '000002']

for code in codes:
    data = ds.get_stock_day(code=code, start='2024-01-01')
    save_stock_day(code, data)

检查存储健康状态

python
from FQData import get_datastore

store = get_datastore()
status = store.health_check()

if status.is_healthy:
    print("存储服务正常")
else:
    print(f"异常: {status.details}")

相关文档