🚀 AI 一键生成 joinquant 策略代码
立即体验
👉 AI 生成代码 👈

JoinQuant量化平台周均线计算方法与代码示例

joinquant | 发布时间: 2026/6/24
以下内容由 EasyQuant 生成。

问题描述

日均线很容易计算,但周均线怎么弄呢?哪里有参考材料?

日均线很容易计算,但周均线怎么弄呢?哪里有参考材料?

解决方案

在 JoinQuant (聚宽) 平台上计算周均线其实非常简单,核心思路是先获取周级别的 K 线数据,然后再对收盘价求平均

官方 API 文档中提供了 get_bars 函数,它原生支持获取周线数据。以下是详细的参考材料和实现方法:

核心 API:get_bars

get_bars 函数用于获取各种时间周期的 bar 数据,支持标准 bar 和非标准 bar。要获取周线数据,只需将 unit 参数设置为 '1w'

函数签名:

get_bars(security, count, unit='1d', fields=['date', 'open','high','low','close'], include_now=False, end_dt=None, fq_ref_date=None, df=False)

计算周均线的步骤与代码示例

假设我们要计算某只股票(如平安银行 000001.XSHE)的 5周均线 (MA5 Weekly),可以在策略中这样编写:

import jqdata

def initialize(context):
    # 设定要操作的股票
    g.security = '000001.XSHE'
    # 开启动态复权模式(真实价格)
    set_option('use_real_price', True)
    # 每天开盘运行
    run_daily(market_open, time='09:30')

def market_open(context):
    security = g.security
    
    # 1. 获取过去 5 周的周线数据
    # unit='1w' 表示获取周线
    # include_now=False 表示不包含当前未结束的这一周(避免未来函数或数据跳动)
    # df=True 表示返回 pandas.DataFrame 格式,方便计算
    weekly_bars = get_bars(security, count=5, unit='1w', 
                           fields=['date', 'close'], 
                           include_now=False, 
                           df=True)
    
    # 2. 计算 5 周均线
    # 直接对获取到的 5 周收盘价求平均值
    ma5_weekly = weekly_bars['close'].mean()
    
    # 打印结果
    log.info(f"{security} 的 5 周均线价格为: {ma5_weekly}")
    
    # 后续可以根据 ma5_weekly 进行交易逻辑判断...
    # current_price = get_current_data()[security].last_price
    # if current_price > ma5_weekly:
    #     order_target_value(security, context.portfolio.available_cash)

关键参数说明:

  1. unit='1w':这是获取周线的关键,代表 1 week。
  2. include_now=False:在策略运行中,当前这一周通常还没有走完。如果设置为 True,获取到的最后一根周线会包含本周已交易天数的数据,这会导致均线在周内不断变化。通常计算传统周均线时,我们取已经走完的完整周,因此设为 False
  3. df=True:返回 Pandas DataFrame 格式,这样可以直接调用 .mean() 方法计算均值,代码更简洁。
  4. 复权处理:在 initialize 中设置了 set_option('use_real_price', True) 后,get_bars 默认会根据 context.current_dt 返回前复权数据,这保证了均线计算的连续性和准确性。

通过这种方式,你可以轻松计算 5周、10周、20周等任意周期的周均线,甚至可以通过修改 unit='1M' 来计算月均线。