Jikipedia
第 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 型,传入股票代码才能取数。
  • 下单 APIorder_value(代码, 金额) 按金额买入;order_target(代码, 0) 把仓位调到 0,即全卖出。现金用 context.portfolio.cash 取。
  • 四种下单方式(原素材预告,详见后续页):按股数 order、目标股数 order_target、按价值 order_value、目标价值 order_target_value
  • 回测评价三指标:盈利能力(策略收益与年化收益高 = 盈利强)、盈利稳定性(最大回撤低 = 最大亏损幅度小)、回测可靠性(交易次数多 = 经历检验多,结果更可靠)。
  • 模拟交易 = 让策略与实时行情连接自动运行,界面点按钮即可。

机制 / 论证

  • 核心方法是「先写人怎么做,再拆成程序两步」:人做的事天然分成「开头一次」与「每天循环」,正好对应 initialize 与 handle_data——这套两段式是所有聚宽策略的共同骨架,后续每篇都在往里填细节。
  • 判断用昨日收盘价、执行在今天开盘:信号来自已收盘的过去,开盘执行,机械可复现。
  • 卖出写成「把仓位调到 0」(order_target … 0)而不是按数量卖——这是 JQ 让「清仓」这件事不依赖账户里有多少股的写法,后续止损止盈反复使用。

可操作

  • 照此模板可复用的最小策略骨架(提炼参数与逻辑,不重贴整段代码):
    1. initialize(context):设 g.security = '002043.XSHE'(固定一只股票)。
    2. handle_data(context, data):取 last_price = data[g.security].close;取 average_price = data[g.security].mavg(20, 'close');取 cash = context.portfolio.cash
    3. 判断:last_price > average_priceorder_value(g.security, cash)elif last_price < average_priceorder_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 日平均价」同义,无需展开。

相关

更新 2026-09-06

检索知识库

按标题、类型或正文检索