pdf文档 Python-掘金量化

2.44 MB 142 页 0 下载 20 浏览 0 评论 0 收藏
语言 格式 评分
中文(简体)
.pdf
3
概览
目 录 快速开始 定时任务示例 数据事件驱动示例 时间序列数据事件驱动示例 选择回测模式/实时模式运行示例 提取数据研究示例 回测模式下高速处理数据示例 实时模式下动态参数示例 level2数据驱动事件示例 可转债数据获取、交易示例 策略程序架构 变量约定 symbol - 代码标识 mode - 模式选择 context - 上下文对象 数据结构 数据类 Tick - Tick对象 Bar - Bar对象 L2Order - Level2 逐笔委托 L2Transaction - Level2 逐笔成交 交易类 Account - 账户对象 Order - 委托对象 ExecRpt - 回报对象 Cash - 资金对象 Position - 持仓对象 Indicator - 绩效指标对象 API介绍 基本函数 init - 初始化策略 schedule - 定时任务配置 run - 运行策略 stop - 停止策略 数据订阅 subscribe - 行情订阅 - 1 - 本文档使用 掘金量化 构建 unsubscribe - 取消订阅 数据事件 on_tick - tick数据推送事件 on_bar - bar数据推送事件 on_l2transaction - 逐笔成交事件 on_l2order - 逐笔委托事件 on_l2order_queue - 委托队列事件 数据查询函数 current - 查询当前行情快照 history - 查询历史行情 history_n - 查询历史行情最新n条 context.data - 查询订阅数据 get_history_l2ticks - 查询历史L2 Tick行情 get_history_l2bars - 查询历史L2 Bar行情 get_history_l2transactions - 查询历史L2 逐笔成交 get_history_l2orders -查询历史L2 逐笔委托 get_history_l2orders_queue -查询历史L2 委托队列 get_fundamentals - 查询基本面数据 get_fundamentals_n - 查询基本面数据最新n条 get_instruments - 查询最新交易标的信息 get_history_instruments - 查询交易标的历史信息数据 get_instrumentinfos - 查询交易标的基本信息 get_constituents - 查询指数最新成份股 get_history_constituents - 查询指数成份股的历史数据 get_continuous_contracts - 获取主力合约 get_industry - 查询行业股票列表 get_dividend - 查询分红送配 get_trading_dates - 查询交易日列表 get_previous_trading_date - 返回指定日期的上一个交易日 get_next_trading_date - 返回指定日期的下一个交易日 股票与指数数据函数 期货数据函数 交易函数 order_volume - 按指定量委托 order_value - 按指定价值委托 order_percent - 按总资产指定比例委托 order_target_volume - 调仓到目标持仓量 order_target_value - 调仓到目标持仓额 - 2 - 本文档使用 掘金量化 构建 order_target_percent - 调仓到目标持仓比例(总资产的比例) order_batch - 批量委托接口 order_cancel - 撤销委托 order_cancel_all - 撤销所有委托 order_close_all - 平当前所有可平持仓 get_unfinished_orders - 查询日内全部未结委托 get_orders - 查询日内全部委托 get_execution_reports - 查询日内全部执行回报 交易查询函数 context.account().positions() - 查询当前账户全部持仓 context.account().position(symbol, side) - 查询当前账户指定持仓 context.account().cash - 查询当前账户资金 两融交易函数 算法交易函数 新股交易函数 基金交易函数 债券交易函数 交易事件 on_order_status - 委托状态更新事件 on_execution_report - 委托执行回报事件 on_account_status - 交易账户状态更新事件 动态参数 add_parameter - 增加动态参数 set_parameter - 修改已经添加过的动态参数 on_parameter - 动态参数修改事件推送 context.parameters - 获取所有动态参数 其他函数 set_token - 设置token log - 日志函数 get_strerror - 查询错误码的错误描述信息 get_version - 查询api版本 其他事件 on_backtest_finished - 回测结束事件 on_error - 错误事件 on_market_data_connected - 实时行情网络连接成功事件 on_trade_data_connected - 交易通道网络连接成功事件 on_market_data_disconnected - 实时行情网络连接断开事件 on_trade_data_disconnected - 交易通道网络连接断开事件 - 3 - 本文档使用 掘金量化 构建 枚举常量 OrderStatus - 委托状态 OrderSide - 委托方向 OrderType - 委托类型 OrderDuration - 委托时间属性 OrderQualifier - 委托成交属性 OrderBusiness - 委托业务类型 ExecType - 执行回报类型 PositionEffect - 开平仓类型 PositionSide - 持仓方向 OrderRejectReason - 订单拒绝原因 CancelOrderRejectReason - 取消订单拒绝原因 OrderStyle - 委托风格 CashPositionChangeReason - 仓位变更原因 SecType - 标的类别 AccountStatus - 交易账户状态 PositionSrc - 头寸来源(仅适用融券融券) AlgoOrderStatus 算法单状态,暂停/恢复算法单时有效 错误码 - 4 - 本文档使用 掘金量化 构建 快速开始 定时任务示例 数据事件驱动示例 时间序列数据事件驱动示例 选择回测模式/实时模式运行示例 提取数据研究示例 回测模式下高速处理数据示例 实时模式下动态参数示例 level2数据驱动事件示例 可转债数据获取、交易示例 常见的策略结构主要包括3类,如下图所示。 用户可以根据策略需求选择相应的策略结构,具体可以参考经典策略。 以下代码的内容是:在每个交易日的14:50:00 市价买入200股浦发银行股票: 1. # coding=utf-8 2. from __future__ import print_function, absolute_import 3. from gm.api import * 4. 5. 定时任务示例 快速开始 - 5 - 本文档使用 掘金量化 构建 6. def init(context): 7. # 每天14:50 定时执行algo任务, 8. # algo执行定时任务函数,只能传context参数 9. # date_rule执行频率,目前暂时支持1d、1w、1m,其中1w、1m仅用于回测,实时模式1d以上的频率,需要在 algo判断日期 10. # time_rule执行时间, 注意多个定时任务设置同一个时间点,前面的定时任务会被后面的覆盖 11. schedule(schedule_func=algo, date_rule='1d', time_rule='14:50:00') 12. 13. 14. 15. def algo(context): 16. # 以市价购买200股浦发银行股票, price在市价类型不生效 17. order_volume(symbol='SHSE.600000', volume=200, side=OrderSide_Buy, 18. order_type=OrderType_Market, position_effect=PositionEffect_Open, price=0) 19. 20. 21. # 查看最终的回测结果 22. def on_backtest_finished(context, indicator): 23. print(indicator) 24. 25. 26. if __name__ == '__main__': 27. ''' 28. strategy_id策略ID, 由系统生成 29. filename文件名, 请与本文件名保持一致 30. mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST 31. token绑定计算机的ID, 可在系统设置-密钥管理中生成 32. backtest_start_time回测开始时间 33. backtest_end_time回测结束时间 34. backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST 35. backtest_initial_cash回测初始资金 36. backtest_commission_ratio回测佣金比例 37. backtest_slippage_ratio回测滑点比例 38. ''' 39. run(strategy_id='strategy_id', 40. filename='main.py', 41. mode=MODE_BACKTEST, 42. token='token_id', 43. backtest_start_time='2020-11-01 08:00:00', 44. backtest_end_time='2020-11-10 16:00:00', 45. backtest_adjust=ADJUST_PREV, 46. backtest_initial_cash=10000000, 47. backtest_commission_ratio=0.0001, 48. backtest_slippage_ratio=0.0001) 整个策略需要三步: 1. 设置初始化函数: init , 使用 schedule 函数进行定时任务配置 2. 配置任务, 到点会执行该任务 3. 执行策略 数据事件驱动示例 数据事件驱动示例 - 6 - 本文档使用 掘金量化 构建 在用subscribe()接口订阅标的后,后台会返回tick数据或bar数据。每产生一个或一组数据,就会自动触发on_tick()或 on_bar()里面的内容执行。比如以下范例代码片段,订阅浦发银行频率为1天和60s的bar数据,每产生一次bar,就会自动触 发on_bar()调用,打印获取的bar信息: 1. # coding=utf-8 2. from __future__ import print_function, absolute_import 3. from gm.api import * 4. 5. 6. def init(context): 7. # 订阅浦发银行, bar频率为一天和一分钟 8. # 订阅订阅多个频率的数据,可多次调用subscribe 9. subscribe(symbols='SHSE.600000', frequency='1d') 10. subscribe(symbols='SHSE.600000', frequency='60s') 11. 12. 13. def on_bar(context, bars): 14. 15. # 打印bar数据 16. print(bars) 17. 18. 19. if __name__ == '__main__': 20. ''' 21. strategy_id策略ID, 由系统生成 22. filename文件名, 请与本文件名保持一致 23. mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST 24. token绑定计算机的ID, 可在系统设置-密钥管理中生成 25. backtest_start_time回测开始时间 26. backtest_end_time回测结束时间 27. backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST 28. backtest_initial_cash回测初始资金 29. backtest_commission_ratio回测佣金比例 30. backtest_slippage_ratio回测滑点比例 31. ''' 32. run(strategy_id='strategy_id', 33. filename='main.py', 34. mode=MODE_BACKTEST, 35. token='token_id', 36. backtest_start_time='2020-11-01 08:00:00', 37. backtest_end_time='2020-11-10 16:00:00', 38. backtest_adjust=ADJUST_PREV, 39. backtest_initial_cash=10000000, 40. backtest_commission_ratio=0.0001, 41. backtest_slippage_ratio=0.0001) 整个策略需要三步: 1. 设置初始化函数: init, 使用subscribe函数进行数据订阅 2. 实现一个函数: on_bar, 来根据数据推送进行逻辑处理 3. 执行策略 时间序列数据事件驱动示例 时间序列数据事件驱动示例 - 7 - 本文档使用 掘金量化 构建 策略订阅代码时指定数据窗口大小与周期, 平台创建数据滑动窗口, 加载初始数据, 并在新的bar到来时自动刷新数据。 on_bar事件触发时, 策略可以取到订阅代码的准备好的时间序列数据。 以下的范例代码片段是一个非常简单的例子, 订阅浦发银行的日线和分钟bar, bar数据的更新会自动触发on_bar的调用, 每次调用 context.data 来获取最新的50条分钟bar信息: 1. # coding=utf-8 2. from __future__ import print_function, absolute_import 3. from gm.api import * 4. 5. 6. def init(context): 7. # 订阅浦发银行, bar频率为一天和一分钟 8. # 指定数据窗口大小为50 9. # 订阅订阅多个频率的数据,可多次调用subscribe 10. subscribe(symbols='SHSE.600000', frequency='1d', count=50) 11. subscribe(symbols='SHSE.600000', frequency='60s', count=50) 12. 13. 14. def on_bar(context, bars): 15. # context.data提取缓存的数据滑窗, 可用于计算指标 16. # 注意:context.data里的count要小于或者等于subscribe里的count 17. data = context.data(symbol=bars[0]['symbol'], frequency='60s', count=50, fields='close,bob') 18. 19. # 打印最后5条bar数据(最后一条是最新的bar) 20. print(data.tail()) 21. 22. 23. if __name__ == '__main__': 24. ''' 25. strategy_id策略ID, 由系统生成 26. filename文件名, 请与本文件名保持一致 27. mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST 28. token绑定计算机的ID, 可在系统设置-密钥管理中生成 29. backtest_start_time回测开始时间 30. backtest_end_time回测结束时间 31. backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST 32. backtest_initial_cash回测初始资金 33. backtest_commission_ratio回测佣金比例 34. backtest_slippage_ratio回测滑点比例 35. ''' 36. run(strategy_id='strategy_id', 37. file
下载文档到本地,方便使用
共 142 页, 还有 140 页可预览, 继续阅读
文档评分
请文明评论,理性发言.