【量化平台入门系列】聚宽平台常用输入设置函数


前言

【量化平台入门系列】主要用于记录自学量化策略时的一些笔记,克隆学习聚宽平台大佬们展示的量化策略,逐行理解代码,最终达到自己写策略的目的。
以下关于代码的解释由AI【豆包】生成,非原创。

聚宽平台常用输入设置函数

set_option()函数

在聚宽平台中,set_option()函数用于设置一些运行选项。以下是关于如何使用set_option()函数的方法:

一、函数语法

set_option(key, value)

  • key:表示要设置的选项名称,是一个字符串。
  • value:表示为选项设置的值。

二、常见选项及用法

  1. avoid_future_data=True

    • 用途:避免使用未来数据。这在进行策略回测等操作时非常重要,确保结果的准确性。
    • 示例:
      set_option('avoid_future_data', True)
      
  2. 其他选项可根据具体的需求进行设置,不同的选项会对数据获取、回测运行等方面产生不同的影响。

三、注意事项

  1. 在使用set_option()函数时,要确保设置的选项是聚宽平台所支持的,并且了解每个选项的具体作用和影响。
  2. 选项的设置可能会影响到代码的性能和结果,因此在设置时需要谨慎考虑。
  3. 如果不确定某个选项的具体作用,可以查阅聚宽平台的官方文档以获取详细信息。

在聚宽平台中,除了avoid_future_data之外,还有以下一些常见的设置选项:

一、显示设置类

  1. display_progress=True/False:控制是否显示运行进度条。如果设置为True,在进行回测等耗时操作时会显示进度条,方便你了解运行进度。

二、数据获取设置类

  1. show_progress=True/False:控制在获取数据时是否显示进度信息。如果设置为True,在下载数据等操作时会显示进度提示。
  2. enable_profile=True/False:启用或禁用性能分析。如果设置为True,可以在运行结束后查看代码的性能分析报告,了解各个部分的运行时间等信息,有助于优化策略。

三、运行模式设置类

  1. run_daily=True/False:设置是否以日为单位运行策略。如果设置为True,在进行回测或模拟交易时,会按照每日的时间步长进行运行,而不是逐分钟或其他更细粒度的时间单位。
  2. run_once=True/False:设置是否只运行一次策略。如果设置为True,在某些特定场景下,比如只需要进行一次初始化操作或者只进行一次数据处理时,可以使用这个选项。

这些只是聚宽平台中的一部分常见设置选项,具体的选项和用法可以参考聚宽的官方文档,以获取更详细准确的信息。

这段代码在聚宽平台中用于设置股票交易的费用。具体解释如下:

set_order_cos()函数

  • set_order_cost函数用于设置交易成本。

一、函数语法

set_order_cost(order_cost, type)

  • order_cost:是一个OrderCost对象,用于定义不同类型交易的成本参数,包括开仓印花税、平仓印花税、开仓佣金、平仓佣金、平今仓佣金和最低佣金等。
    这段代码在聚宽平台中用于设置股票交易的费用。具体解释如下:

  • OrderCost是一个用于定义交易成本的类。

    • open_tax表示开仓时的印花税,这里设置为 0。
    • close_tax表示平仓时的印花税,设置为 0.001,即千分之一。
    • open_commission表示开仓时的佣金,设置为 0.0001。
    • close_commission表示平仓时的佣金,也设置为 0.0001。
    • close_today_commission表示平今仓佣金,这里设置为 0。
    • min_commission表示最低佣金,设置为 5。
  • type='stock'表示这个交易成本设置适用于股票类型的交易。

通过设置这些交易成本参数,可以更准确地模拟实际交易中的费用支出,从而在策略回测和模拟交易中得到更接近真实情况的结果。

二、创建OrderCost对象

  1. 对于股票交易,例如:

    from jqdata import OrderCost
    
    order_cost_stock = OrderCost(open_tax=0, close_tax=0.001, open_commission=0.0001, close_commission=0.0001, close_today_commission=0, min_commission=5)
    set_order_cost(order_cost_stock, type='stock')
    

    这里设置了股票交易的开仓印花税为 0,平仓印花税为千分之一,开仓和平仓佣金均为万分之一,平今仓佣金为 0,最低佣金为 5。

  2. 对于期货交易,参数会有所不同,比如可能没有印花税,但有手续费等:

    order_cost_futures = OrderCost(open_commission=2, close_commission=2, close_today_commission=3, min_commission=0)
    set_order_cost(order_cost_futures, type='futures')
    

    假设设置期货交易的开仓和平仓手续费均为 2,平今仓手续费为 3,最低佣金为 0。

三、注意事项

  1. 准确设置交易成本对于策略回测和模拟交易的准确性非常重要,因为实际交易中成本会对收益产生影响。
  2. 不同的交易品种和市场可能有不同的交易成本结构,需要根据实际情况进行合理设置。
  3. 在使用set_order_cost函数之前,最好先了解聚宽平台对于交易成本参数的具体要求和默认值,以便进行适当的调整。

run_monthly run_daily 函数

在聚宽平台中,run_monthly函数用于每月在特定时间运行一个指定的函数。

一、函数语法

run_monthly(func, monthday, time, reference_security)

  • func:要执行的函数,通常是包含交易策略逻辑的函数。
  • monthday:每月执行的日期,可以是整数,表示每月的第几天;也可以是一个字符串,如’1stfri’表示每月第一个星期五。
  • time:执行的时间,格式为字符串,如’09:30’。
  • reference_security:参考证券,用于确定交易时间,通常是一个股票代码或指数代码。

二、功能用途

  1. 定期执行策略:可以设置每月在固定的日期和时间执行交易策略,方便进行定期的投资组合调整、资产再平衡或特定策略的执行。
    • 例如,每月月初对投资组合进行重新评估和调整权重,以适应市场变化。
  2. 时间控制:通过指定具体的时间,可以在市场较为稳定或特定的交易时段执行策略,避免在市场波动剧烈或不确定的时段进行交易。
    • 比如在上午开盘后的一段时间,市场流动性较好,可以执行一些需要快速成交的策略。
  3. 自动化交易:结合其他聚宽的功能和函数,可以实现自动化的量化交易流程,无需手动干预即可每月定期执行策略。

三、示例用法

以下是一个简单的示例,展示如何使用run_monthly函数:

def my_strategy():
    # 这里是你的交易策略逻辑
    print("执行交易策略")

run_monthly(my_strategy, 1, '09:30')

在这个例子中,my_strategy函数将在每月的第一天上午 9 点 30 分被执行。

四、注意事项

  1. 确保函数的正确性和稳定性:由于run_monthly函数会自动定期执行指定的函数,所以要确保函数中的交易策略逻辑经过充分的测试和验证,以避免出现错误或异常情况。
  2. 考虑市场情况和节假日:在设置执行日期和时间时,要考虑市场的交易时间和节假日安排。如果执行时间落在非交易日或市场休市时间,函数将不会被执行。
  3. 性能和效率:如果交易策略逻辑比较复杂或执行时间较长,可能会影响程序的性能和效率。可以优化策略代码,提高执行速度,以确保在规定的时间内完成策略的执行。

get_current_data 函数

在聚宽平台中,get_current_data函数用于获取当前的市场数据。

一、函数功能

  1. 实时数据获取:可以获取当前市场中各种证券的实时价格、成交量、涨跌幅等信息。例如,可以使用这个函数获取某只股票的当前价格,以便在交易策略中进行判断和决策。

    def handle_data(context):
        current_data = get_current_data()
        stock_price = current_data['AAPL'].last_price
        # 根据股票价格进行交易决策
    
  2. 数据筛选:可以根据特定的条件筛选出符合要求的证券。例如,可以筛选出当前涨幅大于一定百分比的股票,或者成交量大于一定值的股票。

    def handle_data(context):
        current_data = get_current_data()
        high_gain_stocks = [stock for stock in current_data if current_data[stock].pct_change > 0.05]
        # 对涨幅较大的股票进行进一步分析
    
  3. 数据更新:在每个交易周期(例如每分钟、每天等),可以使用这个函数获取最新的市场数据,以便及时更新交易策略。例如,如果策略依赖于股票的实时价格和成交量变化,就需要定期使用get_current_data获取最新数据。

    def handle_data(context):
        current_data = get_current_data()
        for stock in context.portfolio.positions:
            if current_data[stock].last_price > context.portfolio.positions[stock].cost_basis * 1.1:
                # 如果股票价格上涨超过 10%,进行卖出操作
    

二、参数和返回值

这个函数通常不需要参数,返回一个包含当前市场数据的字典。字典的键是证券代码,值是一个包含该证券各种属性的对象。例如,对于股票,这个对象可能包含last_price(最新价格)、pct_change(涨跌幅)、volume(成交量)等属性。

三、注意事项

  1. 数据准确性:虽然get_current_data提供了实时的市场数据,但在实际使用中,可能会受到数据延迟、错误等因素的影响。因此,在使用这些数据进行交易决策时,需要考虑数据的准确性和可靠性。
  2. 性能影响:频繁地调用get_current_data可能会对程序的性能产生一定的影响,特别是在高频率交易策略中。因此,需要根据实际情况合理控制调用频率,以避免影响程序的运行效率。
  3. 数据范围:get_current_data返回的数据通常是当前市场上可交易的证券的数据。如果需要获取其他类型的数据(如历史数据、基本面数据等),可能需要使用其他函数。

get_fundamentals 函数

在聚宽平台中,get_fundamentals函数用于获取基本面数据。其语法如下:

get_fundamentals(query, date=None, statDate=None)

主要参数解释如下:

一、query

这是一个必填参数,用于指定要查询的基本面数据内容和筛选条件。通常使用query函数来构建查询对象。例如:

query(valuation.code, valuation.pe_ratio).filter(valuation.code.in_(stocks))

这里查询了股票的代码和市盈率,并通过.filter方法进一步筛选出特定股票列表中的股票。

可以查询的基本面数据包括但不限于:

  • valuation:估值相关数据,如市值、市盈率、市净率等。
  • indicator:财务指标数据,如营业收入、净利润、毛利率等。
  • balance_sheet:资产负债表相关数据。
  • income_statement:利润表相关数据。

二、date

可选参数,指定查询数据的日期。如果不指定,默认为当前日期。可以传入一个字符串格式的日期,如’2023-10-30’。

三、statDate

可选参数,指定财报统计日期。如果不指定,会根据具体情况自动选择合适的财报日期。可以传入一个字符串格式的日期,如’20230630’表示查询 2023 年中报数据。

使用示例:

# 查询特定股票在特定日期的市盈率和市净率
query_result = get_fundamentals(query(valuation.code, valuation.pe_ratio, valuation.pb_ratio).filter(valuation.code == 'AAPL'), date='2023-10-30')

通过调整参数,可以灵活地获取不同股票、不同日期和不同类型的基本面数据,为量化交易策略提供重要的参考依据。

get_security_info函数

在聚宽平台中,get_security_info函数用于获取证券的详细信息。

一、函数语法

get_security_info(code)

其中,code是证券代码,可以是股票代码、基金代码等。

二、返回值

该函数返回一个Security对象,包含了证券的各种属性信息,主要属性如下:

  1. display_name:证券的中文名称。
  2. name:证券的英文名称。
  3. start_date:证券上市日期。
  4. end_date:证券退市日期(如果已退市)。
  5. type:证券类型,如’stock’(股票)、‘fund’(基金)等。
  6. unit:交易单位,例如股票通常是 100(表示每手 100 股)。

三、功能用途

  1. 信息查询:在量化交易策略中,可以通过这个函数获取证券的基本信息,以便进行进一步的分析和决策。例如,在判断是否可以交易某只股票时,可以先获取其上市日期和退市日期,确保该股票处于可交易状态。

    stock_info = get_security_info('AAPL')
    if stock_info.start_date < context.current_dt and (stock_info.end_date is None or stock_info.end_date > context.current_dt):
        # 股票处于可交易状态,可以进行后续操作
    
  2. 数据展示:在生成交易报告或进行可视化时,可以使用这个函数获取证券的名称等信息,以便更好地展示交易结果。

    stock_info = get_security_info(stock_code)
    plt.title(f'{stock_info.display_name} 交易分析')
    

四、注意事项

  1. 证券代码正确性:确保传入的证券代码是正确的,否则函数将返回错误的结果或者引发异常。
  2. 数据时效性:证券的信息可能会随着时间变化而变化,特别是上市、退市等状态。在使用函数获取的信息进行决策时,要考虑到数据的时效性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值