PDF下载 下载

基本成员函数

阅读 15232

Strategy - 构造函数

构造策略对象。

函数原型:

  1. //带参数的构造函数
  2. Strategy(const char *token, const char *strategy_id, int mode);
  3. //不带参数的构造函数
  4. Strategy();

参数:

参数名 类型 说明
token const char * 系统权限密钥,可在终端系统设置-密钥管理中生成
strategy_id const char * 策略ID,在终端中获取
mode int 实时模式:MODE_LIVE, 回测模式:MODE_BACKTEST

注意事项:

  • 一个进程只能构造一个策略对象。
  • 如用 Strategy() 构造对象时,token,strategy_id,mode三个参数可以从set_token,set_strategy_id,set_mode成员函数传入。

run - 运行策略

运行策略。只有调用run后,才会驱动所有的事件,如行情接入与交易事件。

函数原型:

  1. int run();

参数:

参数名 类型 说明
返回值 int 如果策略正常退出返回0, 非正常退出返回错误码

注意事项:

调用run会阻塞线程,策略进入事件驱动状态,所以所有初始操作(如读配置文件,分配缓冲区等)都应该在run之前完成,如果run退出,意味着策略运行结束,整个进程应该就此退出。

stop - 停止策略

用于停止策略, 也就是如果调用run()之后, 在某个事件响应中调用stop, 这是run就是退出,并返回0。

函数原型:

  1. void stop();

set_strategy_id - 设置策略ID

函数原型:

  1. void set_strategy_id(const char *strategy_id);

参数:

参数名 类型 说明
strategy_id const char * 策略ID,在终端中获取

注意事项:

不管是从构造函数传入还成员函数传入,token, strategy_id, mode 都是必须要设置的参数。

set_token - 设置用户token

函数原型:

  1. void set_token(const char *token);

参数:

参数名 类型 说明
token const char * 系统权限密钥,可在终端系统设置-密钥管理中生成

注意事项:

不管是从构造函数传入还成员函数传入,token, strategy_id, mode 都是必须要设置的参数。

set_mode - 设置策略运行模式

函数原型:

  1. void set_mode(int mode);

参数:

参数名 类型 说明
mode int 实时模式:MODE_LIVE, 回测模式:MODE_BACKTEST

注意事项:

不管是从构造函数传入还成员函数传入,token, strategy_id, mode 都是必须要设置的参数。

schedule - 预设定时任务

在指定时间自动执行策略算法, 通常用于选股类型策略。schedule一般在on_init中调用。如果schedule预设成功,那么达成预设时间条件时,on_schedule会被调用,并在on_schedule的参数中返回设置的data_ruletime_rule。schedule可以调用多次,设置多个不同定时任务。

函数原型:

  1. int schedule(const char *data_rule, const char *time_rule);

参数:

参数名 类型 说明
data_rule const char * n + 时间单位, 可选’d/w/m’ 表示n天/n周/n月
time_rule const char * 执行算法的具体时间 (%H:%M:%S 格式)
返回值 int 预设成功返回0, 预设失败返回错误码

事例:

  1. #每天的19:06:20执行
  2. schedule(date_rule='1d', time_rule='19:06:20')
  3. #每月的第一个交易日的09:40:00执行
  4. schedule(date_rule='1m', time_rule='9:40:00')

注意事项:

  • 现在data_rule暂只支持 1d,1w,1m, 任意n后续会支持。
  • 1w,1m 只在回测中支持,实盘模式中不支持。

now - 获取当前时间

实时模式下,返回当前的系统时间。回测模式下,返回当前的回测时间点。格式是utc时间戳。

函数原型:

  1. double now();

参数:

参数名 类型 说明
返回值 double 当前utc时间戳

set_backtest_config - 设置回测参数

如果mode设置为回测模式,则在调用run之前,需要先设置本函数设置回测参数。在实时模式下,该调用被忽略。

函数原型:

  1. int set_backtest_config(
  2. const char *start_time,
  3. const char *end_time,
  4. double initial_cash = 1000000,
  5. double transaction_ratio = 1,
  6. double commission_ratio = 0,
  7. double slippage_ratio = 0,
  8. int adjust = 0,
  9. int check_cache = 1
  10. );

参数:

参数名 类型 说明
start_time const char * 回测开始时间
(%Y-%m-%d %H:%M:%S格式)
end_time const char * 回测结束时间
(%Y-%m-%d %H:%M:%S格式)
initial_cash double 回测初始资金, 默认1000000
transaction_ratio double 回测成交比例, 默认1.0, 即下单100%成交
commission_ratio double 回测佣金比例, 默认0
slippage_ratio double 回测滑点比例, 默认0
adjust int 回测复权方式(默认不复权)
ADJUST_NONE(不复权)=0
ADJUST_PREV(前复权)=1
ADJUST_POST(后复权)=2
check_cache int 回测是否使用缓存:1 - 使用, 0 - 不使用;默认使用

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

0 篇笔记