PDF下载 下载

init - 初始化策略

初始化策略, 策略启动时自动执行。可以在这里初始化策略配置参数。

函数原型:

  1. init(context)

参数:

参数名 类型 说明
context context 上下文,全局变量可存储在这里

示例:

  1. def init(context):
  2. # 订阅bar
  3. subscribe(symbols='SHSE.600000,SHSE.600004', frequency='30s', count=5, wait_group=True, wait_group_timeout='5s')
  4. # 增加对象属性,如:设置一个股票资金占用百分比
  5. context.percentage_stock = 0.8

注意:
回测模式下init函数里不支持交易操作,仿真模式和实盘模式支持

schedule - 定时任务配置

在指定时间自动执行策略算法, 通常用于选股类型策略

函数原型:

  1. schedule(schedule_func, date_rule, time_rule)

参数:

参数名 类型 说明
schedule_func function 策略定时执行算法
date_rule str n + 时间单位, 可选’d/w/m’ 表示n天/n周/n月
time_rule str 执行算法的具体时间 (%H:%M:%S 格式)

返回值:

None

示例:

  1. def init(context):
  2. #每天的19:06:20执行策略algo_1
  3. schedule(schedule_func=algo_1, date_rule='1d', time_rule='19:06:20')
  4. #每月的第一个交易日的09:40:00执行策略algo_2
  5. schedule(schedule_func=algo_2, date_rule='1m', time_rule='9:40:00')
  6. def algo_1(context):
  7. print(context.symbols)
  8. def algo_2(context):
  9. order_volume(symbol='SHSE.600000', volume=200, side=OrderSide_Buy, order_type=OrderType_Market, position_effect=PositionEffect_Open)

注意:

1.time_rule的时,分,秒均可以只输入个位数,例:'9:40:0''14:5:0',但若对应位置为零,则0不可被省略,比如不能输入'14:5: '

2.目前暂时支持1d1w1m,其中1w1m仅用于回测

run - 运行策略

函数原型:

  1. run(strategy_id='', filename='', mode=MODE_UNKNOWN, token='', backtest_start_time='',
  2. backtest_end_time='', backtest_initial_cash=1000000,
  3. backtest_transaction_ratio=1, backtest_commission_ratio=0,
  4. backtest_slippage_ratio=0, backtest_adjust=ADJUST_NONE, backtest_check_cache=1,
  5. serv_addr='')

参数:

参数名 类型 说明
strategy_id str 策略id
filename str 策略文件名称
mode int 策略模式
MODE_LIVE(实时)=1
MODE_BACKTEST(回测) =2
token str 用户标识
backtest_start_time str 回测开始时间
(%Y-%m-%d %H:%M:%S格式)
backtest_end_time str 回测结束时间
(%Y-%m-%d %H:%M:%S格式)
backtest_initial_cash double 回测初始资金, 默认1000000
backtest_transaction_ratio double 回测成交比例, 默认1.0, 即下单100%成交
backtest_commission_ratio double 回测佣金比例, 默认0
backtest_slippage_ratio double 回测滑点比例, 默认0
backtest_adjust int 回测复权方式(默认不复权)
ADJUST_NONE(不复权)=0
ADJUST_PREV(前复权)=1
ADJUST_POST(后复权)=2
backtest_check_cache int 回测是否使用缓存:1 - 使用, 0 - 不使用;默认使用
serv_addr str 终端服务地址, 默认本地地址, 可不填,若需指定应输入ip+端口号,如”127.0.0.1:8080”

返回值:

None

示例:

  1. run(strategy_id='strategy_1', filename='main.py', mode=MODE_BACKTEST, token='token_id',
  2. backtest_start_time='2016-06-17 13:00:00', backtest_end_time='2017-08-21 15:00:00')

注意:
1.run函数中,mode=1也可改为mode=MODE_LIVE,两者等价,backtest_adjust同理

2.backtest_start_time和backtest_end_time中月,日,时,分,秒均可以只输入个位数,例:'2016-6-7 9:55:0''2017-8-1 14:6:0',但若对应位置为零,则0不可被省略,比如不能输入"2017-8-1 14:6: "

3. filename指运行的py文件名字,如该策略文件名为Strategy.py,则此处应填”Strategy.py”

stop - 停止策略

函数原型:

  1. stop()

返回值:

None

示例:

  1. #若订阅过的代码集合为空,停止策略
  2. if not context.symbols:
  3. stop()