快速开始
分享
阅读 19473
更新 2021-01-13 09:43:05
常见的策略结构主要包括3类,如下图所示。
用户可以根据策略需求选择相应的策略结构,具体可以参考经典策略。
定时任务示例
以下代码的内容是:在每个交易日的14:50:00 市价买入200股浦发银行股票:
# coding=utf-8
from__future__importprint_function,absolute_import
fromgm.apiimport*
definit(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')
defalgo(context):
# 以市价购买200股浦发银行股票, price在市价类型不生效
order_volume(symbol='SHSE.600000',volume=200,side=OrderSide_Buy,
order_type=OrderType_Market,position_effect=PositionEffect_Open,price=0)
# 查看最终的回测结果
defon_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)
整个策略需要三步:
设置初始化函数: init , 使用 schedule 函数进行定时任务配置
配置任务, 到点会执行该任务
执行策略
数据事件驱动示例
在用subscribe()接口订阅标的后,后台会返回tick数据或bar数据。每产生一个或一组数据,就会自动触发on_tick()或on_bar()里面的内容执行。比如以下范例代码片段,订阅浦发银行频率为1天和60s的bar数据,每产生一次bar,就会自动触发on_bar()调用,打印获取的bar信息:
# coding=utf-8
from__future__importprint_function,absolute_import
fromgm.apiimport*
definit(context):
# 订阅浦发银行, bar频率为一天和一分钟
# 订阅订阅多个频率的数据,可多次调用subscribe
subscribe(symbols='SHSE.600000',frequency='1d')
subscribe(symbols='SHSE.600000',frequency='60s')
defon_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)
整个策略需要三步:
设置初始化函数: init, 使用subscribe函数进行数据订阅
实现一个函数: on_bar, 来根据数据推送进行逻辑处理
执行策略</