函数库使用指南
基于对策略代码的深入分析,我们提取并整理了常用的公共函数,形成了一套完整的量化交易函数库。这些函数涵盖了股票筛选、技术指标、交易执行、数据分析等各个方面。
📚 函数库结构
我们的函数库按照功能模块进行组织:
├── 股票筛选工具.py # 股票过滤和筛选功能
├── 日期时间工具.py # 日期处理和交易日计算
├── 技术指标工具.py # 技术分析指标计算
├── 交易执行工具.py # 订单执行和仓位管理
├── 数据分析工具.py # 数据分析和多因子模型
└── 使用示例.md # 详细使用示例🔧 核心功能介绍
1. 股票筛选工具
提供全面的股票筛选和过滤功能:
主要函数:
filter_st_stock()- 过滤ST股票filter_paused_stock()- 过滤停牌股票filter_special_stocks()- 综合过滤特殊股票filter_limitup_stock()- 过滤涨停股票get_limitup_stocks()- 获取涨停股票列表get_basic_stock_pool()- 获取基础股票池
使用场景:
- 构建干净的股票池
- 避免踩雷(ST、退市等)
- 涨停板策略开发
2. 日期时间工具
专业的日期时间处理功能:
主要函数:
transform_date()- 日期格式转换get_shifted_date()- 获取偏移日期today_is_between()- 判断日期区间is_trading_day()- 判断交易日get_month_trading_days()- 获取月度交易日
使用场景:
- 策略中的时间逻辑判断
- 交易日计算和调仓周期
- 季节性策略开发
3. 技术指标工具
丰富的技术分析指标:
主要函数:
calculate_ma()- 移动平均线calculate_rsi()- RSI相对强弱指标calculate_macd()- MACD指标calculate_bollinger_bands()- 布林带is_golden_cross()- 判断金叉get_growth_rate()- 计算涨跌幅
使用场景:
- 技术分析策略开发
- 趋势判断和信号识别
- 超买超卖判断
4. 交易执行工具
完整的交易和仓位管理:
主要函数:
buy_stocks_equally()- 等权重买入adjust_position_to_target()- 调整至目标仓位stop_loss_by_ratio()- 按比例止损stop_profit_by_ratio()- 按比例止盈risk_control_by_drawdown()- 回撤风控
使用场景:
- 自动化交易执行
- 风险管理和资金管理
- 仓位动态调整
5. 数据分析工具
强大的数据分析和建模功能:
主要函数:
calculate_multi_factor_score()- 多因子评分filter_by_financial_metrics()- 财务指标筛选calculate_correlation_matrix()- 相关性分析calculate_stock_statistics()- 股票统计指标get_fundamentals_data()- 财务数据获取
使用场景:
- 多因子选股模型
- 基本面分析
- 投资组合优化
💡 使用方法
快速开始
- 导入函数库:
python
# 按需导入所需模块
from 股票筛选工具 import *
from 技术指标工具 import *
from 交易执行工具 import *- 基础筛选:
python
def select_stocks(context):
# 获取基础股票池
stock_pool = get_basic_stock_pool(context.previous_date)
# 应用筛选条件
stock_pool = filter_special_stocks(stock_pool)
stock_pool = filter_high_price_stock(context, stock_pool, 20)
return stock_pool[:50]- 技术分析:
python
def analyze_trend(stock):
# 计算技术指标
ma5 = calculate_ma(stock, 5)
ma20 = calculate_ma(stock, 20)
rsi = calculate_rsi(get_price_series(stock), 14)
# 判断趋势
if ma5 > ma20 and rsi < 70:
return "BUY"
elif ma5 < ma20 and rsi > 30:
return "SELL"
return "HOLD"- 交易执行:
python
def execute_strategy(context, target_stocks):
# 调整仓位
adjust_position_to_target(context, target_stocks, 0.8)
# 风险控制
stop_loss_by_ratio(context, 0.08)
stop_profit_by_ratio(context, 0.20)完整策略示例
python
# 多因子选股策略示例
def initialize(context):
set_benchmark('000300.XSHG')
g.stock_count = 20
g.rebalance_period = 10
g.days_counter = 0
run_daily(trade_logic, '09:30')
run_daily(risk_management, '14:30')
def trade_logic(context):
g.days_counter += 1
# 定期调仓
if g.days_counter % g.rebalance_period != 0:
return
# 获取股票池
stock_pool = get_basic_stock_pool(context.previous_date)
stock_pool = filter_special_stocks(stock_pool)
# 多因子评分
factors_config = {
'market_cap': {'field': valuation.market_cap, 'weight': 0.3, 'ascending': True},
'pe_ratio': {'field': valuation.pe_ratio, 'weight': 0.3, 'ascending': True},
'roe': {'field': indicator.roe, 'weight': 0.4, 'ascending': False}
}
scores_df = calculate_multi_factor_score(stock_pool[:200], factors_config)
if not scores_df.empty:
selected_stocks = scores_df.head(g.stock_count)['code'].tolist()
adjust_position_to_target(context, selected_stocks, 0.95)
def risk_management(context):
# 止损止盈
stop_loss_by_ratio(context, 0.08)
stop_profit_by_ratio(context, 0.25)
# 回撤控制
risk_control_by_drawdown(context, 0.15)📈 实战应用案例
案例1:小市值策略
利用函数库快速构建小市值轮动策略:
python
def small_cap_strategy(context):
# 筛选小市值股票
conditions = {
'market_cap_min': 20,
'market_cap_max': 100,
'pe_min': 5,
'pe_max': 50
}
stock_pool = get_basic_stock_pool(context.previous_date)
stock_pool = filter_by_financial_metrics(stock_pool, context, conditions)
# 按市值排序选择前10只
# ... 具体实现案例2:技术指标策略
基于均线和RSI的趋势策略:
python
def technical_strategy(context):
for stock in g.stock_pool:
# 计算技术指标
ma_signal = check_ma_signal(stock)
rsi_value = calculate_rsi(get_price_series(stock))
# 交易逻辑
if ma_signal == 'golden_cross' and rsi_value < 70:
buy_stocks_equally(context, [stock], 0.1)
elif ma_signal == 'death_cross' or rsi_value > 80:
close_position(stock)🎯 最佳实践
1. 模块化使用
- 按需导入相关模块,避免全部导入
- 根据策略特点选择合适的函数组合
2. 参数优化
- 所有函数都支持参数自定义
- 建议通过回测找到最优参数组合
3. 错误处理
- 函数库已包含基础异常处理
- 建议在策略中添加额外的容错逻辑
4. 性能考虑
- 对于大量股票处理,建议分批执行
- 缓存计算结果,避免重复计算
🔗 相关链接
函数库让策略开发更加高效便捷,建议在熟悉基础用法后,根据自己的交易风格进行定制和扩展。