关闭

您正在使用的浏览器版本较低,无法支持聚宽的某些特性。

为了获得更好的体验,推荐使用: Google Chrome 或者 Mozilla Firefox 或者 IE9以上

常见问题

感谢您使用JoinQuant(聚宽)量化交易平台,以下内容希望解答您对JoinQuant的疑问。

如果您想了解我们提供的API如何使用,请查看API文档

如果以下内容仍没有解决您的问题,请您通过社区提问的方式告诉我们,谢谢。

关于JoinQuant

JoinQuant提供什么服务?

JoinQuant致力于打造最高效、易用的量化交易平台;我们希望降低量化交易的门槛,让更多人有机会参与进来;我们坚信“人人皆为宽客”—任何人只要对量化交易感兴趣,就可以成为一名宽客。

我们免费为量化爱好者提供如下服务:

  1. 高质量数据
    我们的数据基于2005年至今完整的Level-2数据、上市公司财务数据,包含完整的停牌、复权等信息,盘后及时更新;JoinQuant的数据完全免费,我们每年投入近百万元用于数据购买、数据加工、数据存储。
    查看详情>>

  2. 强大的研究平台
    我们免费提供基于IPython Notebook的研究平台,提供分钟级数据,采用Docker技术隔离,资源独立、安全性更高、性能更好,同步支持Python2、Python3。
    立即体验>>

  3. 顶级回测体验
    我们支持对沪深A股、ETF、LOF、分级基金进行回测。 我们支持每日、分钟两级回测,提供简洁、强大的API,回测结果实时显示、快速响应、数据全面。
    立即体验>>

  4. 顶尖模拟交易
    我们提供最准确、实时的沪深A股、ETF模拟交易工具,支持基于tick级的模拟交易。
    立即体验>>

  5. 量化交流社区
    我们为量化爱好者提供线上交流社区,便于用户交流量化策略、学习量化知识,一起成长。
    立即体验>>

JoinQuant支持哪些交易品种?

JoinQuant目前主要支持沪深A股、ETF、LOF、分级基金,后续我们会逐步支持股指期货、商品期货、现货、外汇等其他金融衍生品。

JoinQuant收费吗?

JoinQuant(聚宽)量化交易平台是为量化爱好者、宽客量身打造的云平台,我们免费为您提供高质量数据、强大的研究平台、顶级回测体验、顶尖模拟交易、量化交流社区,便于您快速实现自己的交易思想。

策略归谁所有?

策略是用户最大的财富,您对策略拥有100%的知识产权。

我的策略是否安全?

我们提供业界最高的安全保护,通过https传输、加密存储、沙箱保护保障您的策略安全,除了您本人,任何人无法获取您的策略。点击这里了解更多信息。

如何使用JoinQuant?

  1. 创建自己的第一个策略
    方法一:参照示例策略,修改代码;
    方法二:从社区克隆一个您感兴趣的策略;
    方法三:新建一个策略,从头开始实现自己的交易思想;
    如果您想要更详细的了解如何写策略,点击这里

  2. 通过回测检验自己的策略
    您可以使用回测功能,通过策略收益、最大回撤、Alpha、Sharpe等风险指标初步检验自己的策略。
    如何进行回测?

  3. 使用模拟交易进一步检验自己的策略
    如果您的策略已经经过回测的检验,您可以使用模拟交易来进一步检验自己的策略。
    如何进行模拟交易?

  4. 策略实盘
    JoinQuant支持策略“一键跟单”功能,让实盘更简单。点击这里了解更多信息。

数据

JoinQuant提供哪些数据?

  1. 股票数据:我们拥有所有A股上市公司2005年以来的股票行情数据、市值数据财务数据上市公司基本信息融资融券信息等。为了避免幸存者偏差,我们包括了已经退市的股票数据。
  2. 基金数据:我们目前提供了600多种在交易所上市的基金的行情、净值等数据,包含ETFLOF分级A/B基金以及货币基金的完整的行情、净值数据等,请点击基金数据查看。
  3. 金融期货数据:我们提供中金所推出的所有金融期货产品的行情数据,并包含历史产品的数据。
  4. 股票指数:我们支持近600种股票指数数据,包括指数的行情数据以及成分股数据。为了避免未来函数,我们支持获取历史任意时刻的指数成分股信息,具体见get_index_stocks。注意:指数不能买卖
  5. 行业板块:我们支持按行业、按板块选股,具体见get_industry_stocks
  6. 概念板块:我们支持按概念板块选股,具体见get_concept_stocks
  7. 宏观数据:我们提供全方位的宏观数据,为投资者决策提供有力数据支持。
  8. 所有的行情数据我们均已处理好前复权信息。
  9. 我们当日的回测数据会在收盘后通过多数据源进行校验,并在T+1(第二天)的00:01更新。

JoinQuant提供的数据支持下载吗?

JoinQuant提供的数据可以在回测、模拟交易、研究模块免费使用,暂不支持下载。

数据后缀是怎么定义的?

深交所股票代码后缀为 XSHE
如000001.XSHE 平安银行
上交所股票代码后缀为 XSHG
如600000.XSHG 浦发银行

其他数据后缀请查询数据字典

如何增加 DataFrame 显示的行、列数?

使用如下代码:

import pandas as pd

# 设定最大显示行数、列数为10000
pd.set_option('display.max_rows', 10000)
pd.set_option('display.max_columns', 10000)
pd.set_option('display.width', 10000)

回测

回测的作用?

策略有效体现了您的交易思想,通过历史数据的回测,可以检验策略的有效性。

回测可以使用哪些数据?

回测可以免费使用 JoinQuant 提供的所有数据。点击这里了解更多信息。

回测使用的交易数据有一天的延时,即当天的交易数据在第二天的0:01分更新。

延时原因:回测使用的交易数据基于Level-2行情数据,Level-2级别的完整交易数据需要收盘后才能获得,目前市场上没有权威的行情数据,为了保证数据的准确性,我们购买了多个数据提供商的数据,经过一系列处理后才投入使用。

如何编写一个最简单的策略?

  • 方法一:参照示例策略,修改代码;
  • 方法二:从社区克隆一个您感兴趣的策略;
  • 方法三:新建一个策略,从头开始实现自己的交易思路;

如果您想要更详细的了解如何写策略,点击这里

从哪里能获得一些常用的策略?

爱分享的小伙伴已经在社区分享了许多策略,您可以一键克隆免费使用。

如何查看我的策略?

登录后,点击右上方“策略”,或者点击首页“编写策略”,进入策略列表页,查看我的策略。

查看我的策略
查看我的策略
查看我的策略

如何编写策略,运行回测?

通过策略列表页进入策略详情页后,按如下步骤编写策略,运行回测:

  1. 编辑策略
    使用基于Python语言的在线编辑器编写您的策略,我们会每隔10s自动保存您的策略,您也可以使用Ctrl+S快速保存。

    编辑策略

  2. 设置回测参数
    根据需要设置您的回测开始时间、结束时间、初始资金、回测频率。

    设置回测参数

  3. 快速回测
    点击“编译运行”按钮进行快速回测,回测结果会实时显示在右侧。

    编译运行
    快速回测结果

  4. 完整回测
    如果您想要查看更完整的回测数据,可以点击右侧的“运行回测”按钮,查看完整的回测结果。

    运行完整回测
    完整回测结果

编写策略需要实现哪些函数?

编写策略仅需实现initialize和handle_data两个函数,点击这里了解更多信息。

回测支持哪些API?

点击这里查看回测API。

按天回测和分钟回测的区别?

按天回测: handle_data每天9:30调用一次, handle_data的参数是昨天的数据;
分钟回测: handle_data每分钟调用一次, handle_data的参数是上一分钟的数据;

下列图片中齿轮为 handle_data(context, data) 的运行时间,before_trading_start(context) 等其他函数运行时间详见相关API

频率:天

当选择天频率时, 算法在每根日线 Bar 都会运行一次,即每天运行一次。

在算法中,可以获取任何粒度的数据。

日K线

频率:分钟

当选择分钟频率时, 算法在每根分钟 Bar 都会运行一次,即每分钟运行一次。

在算法中,可以获取任何粒度的数据。

分钟K线

频率:Tick

当选择 Tick 频率时,每当新来一个 Tick,算法都会被执行一次。

注意:现阶段,Tick 频率只有在模拟交易时可以选择。

执行示意图如下图所示:

Tick序列

编译运行和运行回测的区别?

编译运行便于您快速调试代码,检查代码中的错误,策略的运行结果也能更快的展示,仅统计了Total Returns(策略总收益)、Alpha(阿尔法)、Beta(贝塔)、Sharpe(夏普比率)、Max Drawdown(最大回撤)。
运行回测是一次完整的回测,不仅包括编译运行中已经统计的指标,还包括交易详情、每日持仓&收益等信息。

回测引擎如何撮合成交?

我们把您的一次申报记做一笔订单,点击这里了解订单的处理方式。

如何查看订单的处理结果?

  1. 请参考如下API:
    get_open_orders/get_orders/get_trades
  2. 运行回测,在回测结果页查看交易详情、每日持仓&收益。

回测的基准收益如何设置?

回测默认使用沪深300指数的收益作为基准收益,您也可以根据需要使用set_benchmark设置基准收益。

Total Returns、Alpha等指标如何计算?

Total Returns、Alpha等指标统称为风险指标,风险指标有利于您对策略进行一个客观的评价;点击这里查看风险指标的计算方法。

如何获取股票的市值?

您可以使用get_fundamentals函数获取股票的市值。

如何获取所有股票?

您可以使用如下函数获取所有股票:

list(get_all_securities().index)

如何开始金融期货交易

初始化的仓位是不允许直接买卖金融期货的,因为初始默认 subportfolios[0] 中 SubPortfolioConfig 的 type = ‘stock’,只允许买卖股票与基金等。

因此要买卖金融期货,您需要设定 SubPortfolioConfig 的 type = ‘index_futures’,单仓操作的设定方法具体方法如下:

def initialize(context):

    # 在初始换函数 initialize 中加入下面设定语句
    set_subportfolios([SubPortfolioConfig(cash=context.portfolio.starting_cash ,type='index_futures')])

如需使用分仓操作,请看账户分仓操作.

期货到交割日,没有手动交割,系统如何处理

期货持仓到交割日,没有手动交割,系统会以当天结算价平仓, 没有手续费, 不会有交易记录.

回测时Cash为负是因为什么?

因为买入了大量的股票,在扣除手续费之后,造成Cash为负,与现实是相同的。

模拟交易

模拟交易的作用?

模拟交易的数据与实盘数据完全同步,您可以通过模拟交易进一步检验策略的有效性。

模拟交易使用什么数据?

模拟交易使用的数据是实时更新的Level-1数据,目前模拟交易数据有1分钟延时。

延时原因:为了保证数据的准确性,我们做了一系列处理。

如何进行模拟交易?

您可以通过以下两种方法进行模拟交易:

方法一
  1. 进入模拟交易列表

    进入模拟交易列表

  2. 新建模拟交易

    新建模拟交易

  3. 设置参数
    设置参数时,需要选择一个回测,选中回测的代码将用于新建模拟交易。

    设置参数

  4. 创建成功
    模拟交易创建成功后,需要等待A股至少开盘一次,才能查看模拟交易结果。

    模拟交易

方法二
  1. 进入策略的回测详情

    回测详情
    回测详情
    回测详情

  2. 新建模拟交易

    新建模拟交易

  3. 设置参数

    设置参数

  4. 创建成功
    模拟交易创建成功后,需要等待A股至少开盘一次,才能查看模拟交易结果。

    模拟交易

如何开启微信通知?

开启微信通知后,您可以通过微信接收模拟交易的下单信号,模拟交易的下单信号较实盘有30s的延迟(延迟原因),请您根据实际情况下单。

开启微信通知步骤如下:

  1. 绑定微信账号
    使用微信扫一扫绑定微信账号。
    enter image description here
    enter image description here

    一个JoinQuant账号仅支持绑定一个微信账号。

  2. 开启微信通知

    enter image description here

  3. 微信通知示例

    买入股票提醒

    enter image description here

    卖出股票提醒

    enter image description here

如何修改模拟交易的代码?

您可以根据需要修改模拟交易的代码,修改代码后,我们按照新的代码计算累计收益、持仓、下单等内容,修改之前的各项指标、持仓、下单不会使用新的代码重新计算。

修改方法如下:

enter image description here

为了保证新代码的正确性,修改代码时只能选择当前模拟交易对应策略的回测详情。

旧代码中的全局变量(包括全局对象g)会保留,并应用到新代码中,所以请您确保新代码使用旧代码的全局变量不会出现问题;如果不希望使用旧的全局变量,您可以定义新的全局变量。

模拟交易支持哪些操作?

模拟交易支持暂停、重启、重跑、关闭;

模拟交易暂停后,不会再执行策略代码,不会产生交易信号,收益曲线还会一直画;

模拟交易重启后,策略恢复执行,重启会从当前时间(执行重启操作的时间)开始执行,注意与重跑的区别;

模拟交易运行失败后,可以通过重跑恢复;重跑会从模拟交易运行失败的时间开始执行;

模拟交易关闭后,模拟交易将彻底结束,无法再次打开;

如何重新绑定微信?

点击如图箭头所示位置
enter image description here
点击后出现如图所示二维码,扫码后即重新绑定微信。
enter image description here

数据有延迟?

数据有延迟是正常的。即便在同花顺、东方财富等客户端看到的数据也是延迟的数据。
因为信息从证券交易所发出,再到数据提供商,再到终端,是存在延时的。
我们数据存在的延时是指与交易所发出数据的时刻的延时,并不是与您在客户端看到的数据的延时。

研究

研究的作用?

相较于回测,研究模块提供更大的自由度,您可以更好的验证自己的交易思想。
研究模块支持以下功能:
(1)每个Cell独立运行,实时查看结果;
(2)更好的代码补全;
(3)支持自定义库;
(4)支持使用matplotlib/seaborn等Python库画各种统计图;
(5)支持Markdown和代码混排,可读性更好;
(6)Notebook支持分享到社区,方便与大家交流。
查看使用帮助了解更多信息。

研究可以使用哪些数据?

研究可以免费使用JoinQuant提供的所有分钟级交易数据、财务数据、指数数据、ETF数据、LOF数据、分级基金数据。点击这里了解更多信息。

研究使用的交易数据有一天的延时,即当天的交易数据在第二天的0:01分更新。

延时原因:研究使用的分钟数据基于Level-2行情数据,Level-2级别的完整交易数据需要收盘后才能获得,目前市场上没有权威的行情数据,为了保证数据的准确性,我们购买了多个数据提供商的数据,经过一系列处理后才投入使用。

回测和研究如何打通?

回测中可以使用read_file/write_file读写研究模块的文件。

研究中出现ipynb文件损坏怎么办?

可进入文件中,选择 “文件” - “恢复到”,将文件恢复到最近的一次记录。具体如下图所示:
恢复

回测与模拟

日志提示:策略进程异常退出,可能是什么原因?

在平台上运行策略时,日志出现该提示,通常是因为策略进程非正常结束所致。以下列举几种可能得原因:

  1. 调用 sys.exit() 企图退出程序
    sys.exit() 表示结束进程的运行,在平台上运行时则表示整个回测或者模拟运行结束,这样做是没有必要的。若需退出函数,请使用 return 即可。

  2. 调用 raise SystemExit 企图抛出异常
    当调用 raise SystemExit ,实际上它会调用 sys.exit() ,所以也可能导致进程非正常退出。

  3. 错误的字符串格式化方式
    使用 % 来格式化字符串,可能会遇到类似 ValueError: unsupported format character 的错误,导致进程异常退出。字符串格式化中希望输出 % 的情况如: 收益:%s% ,实际意图是希望输出 收益:0.1% ,但用法可能是错误的,因为输出%时需要对其进行转义。建议使用 str.format 的方式格式化字符串。点击这里了解更多信息。

  4. 调用第三方库
    部分第三方库是用C语言扩展,直接调用动态库,如:numpy,错误的调用可能会导致段错误,这样策略进程也会异常退出。另有部分第三方库可能创建新的进程、线程、锁等,平台资源有限,所以限制了策略进程所能占用的资源,若占用资源过大,可能导致进程崩溃。

  5. 其他不正确的代码书写方式
    Python 是动态型语言,很多错误的书写方式是语法检测不出来的,如:错误的使用了字符串格式化方式,这些错误只有当代码运行到该处时才会报错,否则表现为正常运行的情况。

接入实盘

JoinQuant支持策略“一键跟单”功能,让实盘更简单。点击这里了解更多信息。

如果以上内容仍没有解决您的问题,请您通过社区提问的方式告诉我们,谢谢。