3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
GDX (济安线) 是一种结合了动态移动平均线 (DMA) 的技术分析指标,通常包含济安线主线、压力线和支撑线。JoinQuant 的 jqlib.technical_analysis 模块内置了该指标,可方便地进行多标的技术指标计算。
ABS((2*CLOSE + HIGH + LOW)/4 - MA(CLOSE, N)) / MA(CLOSE, N)DMA(CLOSE, AA) (以 AA 为权重的动态移动平均)(1 + M/100) * JAX(1 - M/100) * JAX通过导入 jqlib.technical_analysis 库中的 GDX 函数即可获取数据:
from jqlib.technical_analysis import GDX
# 参数说明:
# security_list: 股票代码或股票代码列表
# check_date: 查询日期 (如 '2023-01-04')
# N: 统计周期,默认 30
# M: 压力支撑系数,默认 9
gdx_jax, gdx_ylx, gdx_zcx = GDX(security_list, check_date='2023-01-04', N=30, M=9)
返回值说明:
返回三个 dict 字典,键为股票代码,值为对应的数值:
gdx_jax: 济安线数值gdx_ylx: 压力线数值gdx_zcx: 支撑线数值以下策略展示了如何在每日开盘时计算股票池的 GDX 济安线,并在突破支撑线时买入,突破压力线时卖出。
# 导入聚宽函数库与技术分析模块
import jqdata
from jqlib.technical_analysis import GDX
def initialize(context):
# 设定基准
set_benchmark('000300.XSHG')
# 开启动态复权模式(真实价格)
set_option('use_real_price', True)
# 设定股票池
g.stocks = ['000001.XSHE', '600000.XSHG']
# 定时运行
run_daily(market_open, time='9:30')
def market_open(context):
today_str = context.current_dt.strftime('%Y-%m-%d')
# 获取 GDX 指标
gdx_jax, gdx_ylx, gdx_zcx = GDX(g.stocks, check_date=today_str, N=30, M=9)
for stock in g.stocks:
current_price = get_bars(stock, count=1, unit='1m', fields=['close'])[0]['close']
jax = gdx_jax[stock]
ylx = gdx_ylx[stock]
zcx = gdx_zcx[stock]
cash = context.portfolio.available_cash
position = context.portfolio.positions[stock].closeable_amount
# 策略逻辑:价格高于压力线时卖出,低于支撑线时买入
if current_price > ylx and position > 0:
order_target(stock, 0)
log.info("突破压力线,卖出股票 %s" % stock)
elif current_price < zcx and cash > 0:
order_value(stock, cash / len(g.stocks))
log.info("跌破支撑线,买入股票 %s" % stock)