掘金量化—Python SDK文档—1.快速开始

掘金量化终端是专为量化投资设计的工具,支持Python等多语言,提供策略开发到实盘的完整流程。文章通过示例介绍了如何在Python环境下进行策略编写,包括定时任务、数据事件驱动、回测模式和实时模式的运用,以及如何处理数据和进行回测分析。此外,还展示了如何利用SDK进行数据订阅和回测模式下的高效数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

掘金量化终端是一款为专业量化投资打造的功能齐备的落地式终端,集成了策略开发到实盘的模块化功能,打通研究、仿真和绩效链路、兼容多种编程语言,易于使用、性能可靠,能够帮助量化投资者提高策略开发效率、减少 IT 投入。

掘金量化终端目前仅支持在 Windows 环境下使用,为保障运行稳定,推荐至少使用以下配置:

掘金量化支持python、matlab、C++、C#四种编程语言,需在安装专门的掘金SDK后方能进行回测、仿真等,以下为Python SDK的介绍内容,供初学者参考使用。


目录

Python SDK文档

1.快速开始

定时任务示例

数据事件驱动示例

时间序列数据事件驱动示例

选择回测模式/实时模式运行示例

提取数据研究示例

回测模式下高速处理数据示例

实时模式下动态参数示例

level2 数据驱动事件示例

可转债数据获取/交易示例


Python SDK文档

1.快速开始

常见的策略结构主要包括 3 类,如下图所示。

用户可以根据策略需求选择相应的策略结构,具体可以参考经典策略

定时任务示例

以下代码的内容是:在每个交易日的 14:50:00 市价买入 200 股浦发银行股票:

# coding=utf-8
from __future__ import print_function, absolute_import
from gm.api import *


def init(context):
    # 每天14:50 定时执行algo任务,
    # algo执行定时任务函数,只能传context参数
    # date_rule执行频率,目前暂时支持1d、1w、1m,其中1w、1m仅用于回测,实时模式1d以上的频率,需要在algo判断日期
    # time_rule执行时间, 注意多个定时任务设置同一个时间点,前面的定时任务会被后面的覆盖
    schedule(schedule_func=algo, date_rule='1d', time_rule='14:50:00')



def algo(context):
    # 以市价购买200股浦发银行股票, price在市价类型不生效
    order_volume(symbol='SHSE.600000', volume=200, side=OrderSide_Buy,
                 order_type=OrderType_Market, position_effect=PositionEffect_Open, price=0)


# 查看最终的回测结果
def on_backtest_finished(context, indicator):
    print(indicator)


if __name__ == '__main__':
    '''
        strategy_id策略ID, 由系统生成
        filename文件名, 请与本文件名保持一致
        mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST
        token绑定计算机的ID, 可在系统设置-密钥管理中生成
        backtest_start_time回测开始时间
        backtest_end_time回测结束时间
        backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
        backtest_initial_cash回测初始资金
        backtest_commission_ratio回测佣金比例
        backtest_slippage_ratio回测滑点比例
    '''
    run(strategy_id='strategy_id',
        filename='main.py',
        mode=MODE_BACKTEST,
        token='token_id',
        backtest_start_time='2020-11-01 08:00:00',
        backtest_end_time='2020-11-10 16:00:00',
        backtest_adjust=ADJUST_PREV,
        backtest_initial_cash=10000000,
        backtest_commission_ratio=0.0001,
        backtest_slippage_ratio=0.0001)

复制成功

整个策略需要三步:

  1. 设置初始化函数: init , 使用 schedule 函数进行定时任务配置
  2. 配置任务, 到点会执行该任务
  3. 执行策略

数据事件驱动示例

在用 subscribe()接口订阅标的后,后台会返回 tick 数据或 bar 数据。每产生一个或一组数据,就会自动触发 on_tick()或 on_bar()里面的内容执行。比如以下范例代码片段,订阅浦发银行频率为 1 天和 60s 的 bar 数据,每产生一次 bar,就会自动触发 on_bar()调用,打印获取的 bar 信息:

# coding=utf-8
from __future__ import print_function, absolute_import
from gm.api import *


def init(context):
    # 订阅浦发银行, bar频率为一天和一分钟
    # 订阅订阅多个频率的数据,可多次调用subscribe
    subscribe(symbols='SHSE.600000', frequency='1d')
    subscribe(symbols='SHSE.600000', frequency='60s')


def on_bar(context, bars):

    # 打印bar数据
    print(bars)


if __name__ == '__main__':
    '''
        strategy_id策略ID, 由系统生成
        filename文件名, 请与本文件名保持一致
        mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST
        token绑定计算机的ID, 可在系统设置-密钥管理中生成
        backtest_start_time回测开始时间
        backtest_end_time回测结束时间
        backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
        backtest_initial_cash回测初始资金
        backtest_commission_ratio回测佣金比例
        backtest_slippage_ratio回测滑点比例
    '''
    run(strategy_id='strategy_id',
        filename='main.py',
        mode=MODE_BACKTEST,
        token='token_id',
        backtest_start_time='2020-11-01 08:00:00',
        backtest_end_time='2020-11-10 16:00:00',
        backtest_adjust=ADJUST_PREV,
        backtest_initial_cash=10000000,
        backtest_commission_ratio=0.0001,
        backtest_slippage_ratio=0.0001)


复制成功

整个策略需要三步:

  1. 设置初始化函数: init, 使用 subscribe 函数进行数据订阅
  2. 实现一个函数: on_bar, 来根据数据推送进行逻辑处理
  3. 执行策略

时间序列数据事件驱动示例

策略订阅代码时指定数据窗口大小与周期, 平台创建数据滑动窗口, 加载初始数据, 并在新的 bar 到来时自动刷新数据。

on_bar 事件触发时, 策略可以通过 context.data 取到订阅代码的准备好的时间序列数据。

以下的范例代码片段是一个非常简单的例子, 订阅浦发银行的日线和分钟 bar, bar 数据的更新会自动触发 on_bar 的调用, 每次调用context.data来获取最新的 50 条分钟 bar 信息:

# coding=utf-8
from __future__ import print_function, absolute_import
from gm.api import *


def init(context):
    # 订阅浦发银行, bar频率为一天和一分钟
    # 指定数据窗口大小为50
    # 订阅订阅多个频率的数据,可多次调用subscribe
    subscribe(symbols='SHSE.600000', frequency='1d', count=50)
    subscribe(symbols='SHSE.600000', frequency='60s', count=50)


def on_bar(context, bars):
    # context.data提取缓存的数据滑窗, 可用于计算指标
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值