第 01 篇
十行代码带你量化交易入门
聚宽(JoinQuant)新手第一课:用约十行代码写完一个「单股票均线策略」,跑通从写策略、回测到开模拟交易的全流程。本页教的是编写思路与平台框架,不是赚钱策略——原素材自己写明「本例中的策略并不是一个好策略」。素材见 raw/collections/jq-getting-started/01-1-十行代码带你量化交易入门md.md。
这是什么
一个「先想人怎么操作、再翻译成两段代码」的入门演示。策略是单股票均线策略:目标股票固定为兔宝宝(002043.XSHE),每天判断昨日收盘价与过去 20 日平均价的关系,决定今天开盘买还是卖。
核心要点
- 策略规则:昨日收盘价 > 过去 20 日平均价 → 今天开盘买入;昨日收盘价 < 过去 20 日平均价 → 今天开盘卖出。
- 人怎么操作分两步:事先确定交易哪只股票;每天查昨收与 20 日均价的相对高低再买/卖。
- 平台框架就两段:
initialize(context)描述「最开始做什么」(本例:选定股票);handle_data(context, data)写「每个周期循环做什么」(本例按天循环,操作在 9:30 执行)。 - 代码后缀:
.XSHE深交所、.XSHG上交所。兔宝宝代码 002043.XSHE。g是全局变量容器,整个 py 文件可用。 - 取数:
data[股票代码].close取最近收盘价;data[股票代码].mavg(20, 'close')取过去 20 日收盘均价。data是 dict 型,传入股票代码才能取数。 - 下单 API:
order_value(代码, 金额)按金额买入;order_target(代码, 0)把仓位调到 0,即全卖出。现金用context.portfolio.cash取。 - 四种下单方式(原素材预告,详见后续页):按股数
order、目标股数order_target、按价值order_value、目标价值order_target_value。 - 回测评价三指标:盈利能力(策略收益与年化收益高 = 盈利强)、盈利稳定性(最大回撤低 = 最大亏损幅度小)、回测可靠性(交易次数多 = 经历检验多,结果更可靠)。
- 模拟交易 = 让策略与实时行情连接自动运行,界面点按钮即可。
机制 / 论证
- 核心方法是「先写人怎么做,再拆成程序两步」:人做的事天然分成「开头一次」与「每天循环」,正好对应 initialize 与 handle_data——这套两段式是所有聚宽策略的共同骨架,后续每篇都在往里填细节。
- 判断用昨日收盘价、执行在今天开盘:信号来自已收盘的过去,开盘执行,机械可复现。
- 卖出写成「把仓位调到 0」(order_target … 0)而不是按数量卖——这是 JQ 让「清仓」这件事不依赖账户里有多少股的写法,后续止损止盈反复使用。
可操作
- 照此模板可复用的最小策略骨架(提炼参数与逻辑,不重贴整段代码):
initialize(context):设g.security = '002043.XSHE'(固定一只股票)。handle_data(context, data):取last_price = data[g.security].close;取average_price = data[g.security].mavg(20, 'close');取cash = context.portfolio.cash。- 判断:
last_price > average_price→order_value(g.security, cash);elif last_price < average_price→order_target(g.security, 0)。
- 参数要点:均线窗口 20 日;只持有一只股票;买入用全部现金(全仓);滑点本例未设置(原素材提了一句「滑点目前不是主要考虑」)。
- 写完在策略界面右上角点「回测」,按收益 / 最大回撤 / 交易次数三个方向看结果。
术语
- g:全局变量容器,跨函数共享。
- XSHE / XSHG:深交所 / 上交所代码后缀。
- order_value / order_target:按金额下单 / 调整目标仓位。
- 最大回撤:历史净值从高点回落的幅度,衡量亏损幅度。
- 年化收益、回测、模拟交易。
不确定 / 待验证
- 原素材整合代码把现金写成
context.protfolio.cash(拼写错误,应为portfolio);intitailize也是initialize的笔误。照抄会报错——本批所有 raw 代码都应理解为示意,落地需对照官方 API 文档。 data[...].mavg(20, 'close')的口径是「过去 20 个交易日收盘均价」,与文中「过去 20 日平均价」同义,无需展开。
相关
- 什么是量化策略 — 紧接的概念篇:量化策略由什么组成
- 使用 JoinQuant 编写一个策略 — 本页框架的展开详解
- 聚宽策略框架(initialize / handle_data / before_trading_start) — initialize / handle_data 两段框架
- 聚宽下单 API 与订单对象 — 四种下单方式与订单对象
- 聚宽新手入门教程(JoinQuant 平台实操) — 本教程总览
更新 2026-09-06