🚀 AI 一键生成 joinquant 策略代码

JoinQuant 内置技术分析库 jqlib.technical_analysis 实战指南

joinquant | 发布时间: 2025/11/28
以下内容由 EasyQuant 生成。

问题描述

我该如何计算一个股票的济安线(GDX)指标?

解决方案

在聚宽(JoinQuant)平台上,计算股票的济安线(GDX)指标最直接且高效的方法是使用平台提供的 jqlib 技术分析库。该库内置了 GDX 函数,可以直接返回济安线、压力线和支撑线的数据。

以下是具体的计算方法和代码示例。

1. 使用 jqlib 库计算 GDX(推荐)

聚宽的 jqlib.technical_analysis 模块封装了 GDX 指标的计算逻辑,无需手动编写复杂的公式。

函数说明:
GDX(security_list, check_date, N=30, M=9)

  • security_list: 股票代码列表(如 ['000001.XSHE'])。
  • check_date: 计算指标的日期(如 '2023-01-01')。
  • N: 统计天数,默认 30。
  • M: 偏离度参数,默认 9。

返回值:
返回三个字典(dict),分别代表:

  1. 济安线 (JAX)
  2. 压力线 (YLX)
  3. 支撑线 (ZCX)

代码示例

# -*- coding: utf-8 -*-
from jqlib.technical_analysis import *

def initialize(context):
    # 设定要查询的股票
    security = '000001.XSHE'
    
    # 获取当前日期的 GDX 指标数据
    # 注意:在回测中 context.current_dt 是当前时间
    # N=30, M=9 是常见默认参数
    jax, ylx, zcx = GDX([security], check_date=context.current_dt, N=30, M=9)
    
    # 获取具体数值
    current_jax = jax[security]  # 济安线
    current_ylx = ylx[security]  # 压力线
    current_zcx = zcx[security]  # 支撑线
    
    # 打印结果
    print("股票: %s" % security)
    print("济安线: %f" % current_jax)
    print("压力线: %f" % current_ylx)
    print("支撑线: %f" % current_zcx)

    # 简单的策略逻辑示例:
    # 如果收盘价突破压力线,可能视为强势信号(仅作示例,非投资建议)
    current_price = data[security].close
    if current_price > current_ylx:
        print("价格突破压力线,可能存在上涨趋势")

2. GDX 指标的计算原理

如果您需要了解其背后的逻辑,或者需要手动复现,GDX 的计算公式如下:

  1. 计算加权价格与均线的偏离度 (AA)
    $$AA = \frac{|(2 \times C + H + L) / 4 - MA(C, N)|}{MA(C, N)}$$
    其中:C=收盘价, H=最高价, L=最低价, MA=简单移动平均

  2. 计算济安线 (JAX)
    $$JAX = DMA(C, AA)$$
    DMA 为动态移动平均,即以 AA 为权重对收盘价进行动态平滑。

  3. 计算压力线与支撑线

    • 压力线 = $(1 + M / 100) \times JAX$
    • 支撑线 = $(1 - M / 100) \times JAX$

3. 注意事项

  1. 引入库:必须在代码开头使用 from jqlib.technical_analysis import *
  2. 数据类型GDX 函数返回的是字典,键为股票代码,值为指标数值。即使只查询一只股票,也需要通过 [security] 索引来获取数值。
  3. NaN值处理:如果股票上市时间不足 N 天,或者数据不足,计算结果可能返回 NaN,在策略中应当对这种情况进行过滤。

Q&A

Q: GDX 指标中的 N 和 M 参数通常如何设置?
A: 默认参数通常为 N=30 和 M=9。N 代表计算移动平均和偏离度的周期,M 代表压力线和支撑线相对于济安线的上下偏离百分比。您可以根据策略对灵敏度的需求调整这些参数。

Q: 可以在研究环境(Notebook)中使用这个函数吗?
A: 可以。在研究环境中,只需确保引入了 from jqlib.technical_analysis import *,并将 check_date 设置为您想要查询的具体历史日期即可。

Q: GDX 指标的主要用途是什么?
A: GDX 是一种路径型指标。济安线本身可以看作是一种特殊的均线,用于判断趋势方向;压力线和支撑线则构成了价格波动的通道。通常用于捕捉趋势启动或判断价格是否处于超买/超卖区域。