Skip to content

函数库使用指南

基于对策略代码的深入分析,我们提取并整理了常用的公共函数,形成了一套完整的量化交易函数库。这些函数涵盖了股票筛选、技术指标、交易执行、数据分析等各个方面。

📚 函数库结构

我们的函数库按照功能模块进行组织:

├── 股票筛选工具.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() - 财务数据获取

使用场景

  • 多因子选股模型
  • 基本面分析
  • 投资组合优化

💡 使用方法

快速开始

  1. 导入函数库
python
# 按需导入所需模块
from 股票筛选工具 import *
from 技术指标工具 import *
from 交易执行工具 import *
  1. 基础筛选
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]
  1. 技术分析
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"
  1. 交易执行
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. 性能考虑

  • 对于大量股票处理,建议分批执行
  • 缓存计算结果,避免重复计算

🔗 相关链接


函数库让策略开发更加高效便捷,建议在熟悉基础用法后,根据自己的交易风格进行定制和扩展。