# settimer 设定计时器—定时触发

settimer (funciton, msec)

设定计时器—定时触发,不支持回测模式
注意:function函数一定要包含(并且只能包含)context

参数
参数 类型 说明
funciton funciton 传入执行的function名称
msec int 触发间隔,单位毫秒。(1秒=1000毫秒)
返回值

范例
import time
def init(context):
    # 设置计时器 
    settimer(msg, 10)

def msg(context):
    #输出现在时间
    a = time.asctime( time.localtime(time.time()) )
    print(a)
#退出程序后杀死计时器
def exit(context):
    killtimer(msg)
1
2
3
4
5
6
7
8
9
10
11
12

# killtimer 结束计时器

killtimer(funciton)

结束计时器,仅"paper_trading"模式有效

参数
参数 类型 说明
funciton funciton 传入执行的function名称
返回值

范例
import time
def init(context):
    # 设置计时器 
    settimer(msg, 10)

def msg(context):
    #输出现在时间
    a = time.asctime( time.localtime(time.time()) )
    print(a)
#退出程序后杀死计时器
def exit(context):
    killtimer(msg)
1
2
3
4
5
6
7
8
9
10
11
12

# write_logging 调试打印输出

write_logging (msg)

屏幕字符打印输出,该函数可以直接在print函数不能显示的函数外执行,推荐调试时使用

参数
参数 类型 说明
msg str 输出字符串内容,必填项
返回值

范例
#判断init事件函数在启动时,是否正常运行。
def init(context):
    ...
    #执行完毕省略部分的代码后,输出字符串“策略初始化工作已经完成!”。(省略部分代码请自行填充)
    write_logging ('策略初始化工作已经完成!')
1
2
3
4
5

# log_debug_info 日志写盘

log_debug_info(file_path, text_data)

日志写盘,利用该函数可以将运行中的参数写盘,方便策略编写调试期间查找问题
注:适用于以下三种模式:"backtest"模式、"paper_trading"模式和"pel_call"模式下有效。

参数
参数 类型 说明
file_path str 本地计算机硬盘文件全路径
text_data str 日志内容
返回值

范例
#使用log_debug_info函数,输出策略执行过程中产生的结果,进行分析。
log_debug_info('D:\debugfile.txt', '输出跟踪测试的内容到debugfile文件中')
1
2

# send_phone 微信消息

send_phone(stringmsg,type,repeat)

发送用户自定义消息至微信端。

  1. 使用该函数时,应该启动手机监控功能,步骤: 【工具】-【远程监控】.
  2. 该函数20秒内重复触发消息只提示一次。
  3. 仅交易模式下有效
参数
参数 类型 说明
stringmsg str 消息字符串
type int 消息类型
  0 表示普通警告
 1 表示重要警告
type int 可选,默认为0,
 1表示允许重复触发,
 0表示在基准周期内只触发一次
返回值

范例
send_phone('金字塔发送的第一条微信通知', 1)
1

# update_universe 更新合约池

update_universe (order_book_id)

该方法用于更新现在关注的品种的集合(会在下一个bar事件触发时候产生(新的关注的合约池更新)效果。并且update_universe会是覆盖(overwrite)的操作而不是在已有的股票池的基础上进行增量添加。
比如已有的股票池为['SZ000001', 'SZ000024']然后调用了update_universe(['SH000030'])之后,股票池就会变成SH000030一个股票了,随后的数据更新也只会跟踪SH000030这一个股票了。
(仅策略交易状态时有效,"backtest"回测 和 "paper_trading"模式)

参数
参数 类型 说明
order_book_id str OR str list 合约代码,可传入order_book_id, order_book_id list
返回值

范例
#把'sh600000', 'sh600007'更新到当前合约池中
update_universe (['sh600000', 'sh600007'])
1
2

# append_universe添加到合约池

append_universe (order_book_id)

添加品种到合约池
(仅策略交易状态时有效,"backtest"回测 和 "paper_trading"模式)

参数
参数 类型 说明
order_book_id str OR str list 合约代码,可传入order_book_id, order_book_id list
返回值

范例
#把'sh600000', 'sh600007'追加到当前合约池中
append_universe (['sh600000', 'sh600007'])
1
2

# remove_universe 删除合约池

remove_universe (order_book_id)

删除合约池中的品种
(仅策略交易状态时有效,"backtest"回测 和 "paper_trading"模式)

参数
参数 类型 说明
order_book_id str OR str list 合约代码,可传入order_book_id, order_book_id list
返回值


# get_indicator获取PEL指标线值

get_indicator(order_book_id, name, line, parameter, freq, count, skip_suspended, include_now, dj_reversal, start_date)

引用金字塔PEL指标线值的值。

  1. PEL变量必须是通过":"定义的变量。
  2. 此函数只在paper_trading(交易模式)下有效。
  3. 注意该函数占用资源较大,请注意编程效率。
参数
参数 类型 说明
order_book_id str 合约代码,必填项
name str PEL公式名,必填项
line str OR str list 公式线名,对应PEL策略中通过:定义的变量,若引用:=定义的中间变量会造成引用无效或者得到其他变量的返回值。必填项
parameter str 公式参数,使用默认参数时,填空字符串"",否者请根据PEL参数列表的顺序逐一指定参数,不支持选择性省略。例如MA的均线参数为 "5, 10, 20, 30",必填项
freq str 指定获取数据周期类型,必填项。
类型标识如下:
 日线:'d'
 分钟:'m'
 秒线:'s'
 取当前设置周期:'self'
 分笔线:'tick'
 周线:'week'
 月线:'month'
 季度线:'quarter'
 半年线:'halfyear'
 年线:'year'
 等价线:'j'
 等量线:'L'
例如:
 '1d'表示1日线,
 '2d'表示2日线,
 '5m'代表5分钟线,
 '5s'表示5秒线,
 '5h'表示5小时线,
 '0.2j'表示的等价k【价格/幅度单位】选项设置为0.2,
 '4000L'表示的等量k【指定等量数值】选项设置为4000。
count int 截取最近n个指定的PEL指标线的计算结果,必填项
skip_suspended bool 是否跳过停牌,默认True,跳过停牌
include_now bool 是否包括不完整的bar数据。默认为False,不包括。举例来说,在09:39的时候获取上一个5分钟线,默认将获取到09:31~09:35合成的5分钟线。如果设置为True,则将获取到09:36~09:39之间合成的"不完整"5分钟线
adjusted_price bool 是否复权数据,默认为True
start_date str 指定从某个开始时间加载指定数量的数据,此参数必须以关键字参数形式使用
返回值

ndarray 方便直接与talib等计算库对接, 失败返回 None

范例
#引用PEL系统指标公式"ma"的ma1指标值。公式参数采用默认值。
get_indicator('sh600000', 'ma', 'ma1', '', '1d', 10)
#引用PEL指标公式"my_test"的ma5日均线指标值。PEL指标必须提前存在或者构建。
get_indicator('sh600000', 'my_test', 'ma5', '30', '1d', 10)
get_indicator('sh600000', 'my_test', 'ma5', '30', '1d', 10,start_date="20200101")
1
2
3
4
5

# call_vba 执行VBA函数调用计算

call_vba(function, ...)

执行VBA函数调用计算

参数
参数 类型 说明
function str VBA函数名
... float 或 int 传递给VBA的参数序列

注意:str 参数最长不能超过56个字节。

返回值

str 或 float 或 int

范例
# 执行vba中名为 Test_fun_call 函数,参数分别为 1和2。
ret = call_vba("Test_fun_call", 1, 2)
print(ret)
1
2
3

# add_test_report 添加自定义测试报告项

add_test_report (item, itemdata)

添加自定义测试报告项, 该函数仅对测评状态有效, 推荐放在 exit 事件函数中使用

参数
参数 类型 说明
item str 测试报告项名称,必填项
itemdata str 报告项内容,必填项
返回值


# input_par 申明参数

input_par(PAR_NAME, DFT, MIN, MAX, STEP)

此函数仅支持在parameter()方法内使用,其它方法或者函数内使用无效。声明的变量在使用时,直接从context对象中获取。

参数
参数 类型 说明
PAR_NAME str 声明的变量名
DFT float 默认值
MIN float 最小值
MAX float 最大值
STEP float 步长(最小变动值)
范例
#input_par函数必要在parameter方法内实现声明变量。
def parameter():
    #申明变量"myvalues1"和"myvalues2"并初始赋值。
    input_par("myvalues1", 20, 1, 20, 1)
    input_par("myvalues2", 10, 1, 20, 1)
1
2
3
4
5

# test_report_none 禁用回测弹出测试报告

test_report_none()

此函数一般用于用于exit事件函数内,作用为禁用回测完成后弹出测试报告。

参数

范例
# exit事件函数会在测评结束或者停止策略运行时调用test_report_none函数。
def exit(context):
    test_report_none()
1
2
3