# settimer 设定计时器—定时触发
设定计时器—定时触发,不支持回测模式
注意: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)
2
3
4
5
6
7
8
9
10
11
12
# killtimer 结束计时器
结束计时器,仅"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)
2
3
4
5
6
7
8
9
10
11
12
# write_logging 调试打印输出
屏幕字符打印输出,该函数可以直接在print函数不能显示的函数外执行,推荐调试时使用
参数 | 类型 | 说明 |
---|---|---|
msg | str | 输出字符串内容,必填项 |
无
#判断init事件函数在启动时,是否正常运行。
def init(context):
...
#执行完毕省略部分的代码后,输出字符串“策略初始化工作已经完成!”。(省略部分代码请自行填充)
write_logging ('策略初始化工作已经完成!')
2
3
4
5
# log_debug_info 日志写盘
日志写盘,利用该函数可以将运行中的参数写盘,方便策略编写调试期间查找问题
注:适用于以下三种模式:"backtest"模式、"paper_trading"模式和"pel_call"模式下有效。
参数 | 类型 | 说明 |
---|---|---|
file_path | str | 本地计算机硬盘文件全路径 |
text_data | str | 日志内容 |
无
#使用log_debug_info函数,输出策略执行过程中产生的结果,进行分析。
log_debug_info('D:\debugfile.txt', '输出跟踪测试的内容到debugfile文件中')
2
# send_phone 微信消息
发送用户自定义消息至微信端。
- 使用该函数时,应该启动手机监控功能,步骤: 【工具】-【远程监控】.
- 该函数20秒内重复触发消息只提示一次。
- 仅交易模式下有效
参数 | 类型 | 说明 |
---|---|---|
stringmsg | str | 消息字符串 |
type | int | 消息类型 0 表示普通警告 1 表示重要警告 |
type | int | 可选,默认为0, 1表示允许重复触发, 0表示在基准周期内只触发一次 |
无
send_phone('金字塔发送的第一条微信通知', 1)
# update_universe 更新合约池
该方法用于更新现在关注的品种的集合(会在下一个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'])
2
# append_universe添加到合约池
添加品种到合约池
(仅策略交易状态时有效,"backtest"回测 和 "paper_trading"模式)
参数 | 类型 | 说明 |
---|---|---|
order_book_id | str OR str list | 合约代码,可传入order_book_id, order_book_id list |
无
#把'sh600000', 'sh600007'追加到当前合约池中
append_universe (['sh600000', 'sh600007'])
2
# remove_universe 删除合约池
删除合约池中的品种
(仅策略交易状态时有效,"backtest"回测 和 "paper_trading"模式)
参数 | 类型 | 说明 |
---|---|---|
order_book_id | str OR str list | 合约代码,可传入order_book_id, order_book_id list |
无
# get_indicator获取PEL指标线值
引用金字塔PEL指标线值的值。
- PEL变量必须是通过":"定义的变量。
- 此函数只在paper_trading(交易模式)下有效。
- 注意该函数占用资源较大,请注意编程效率。
参数 | 类型 | 说明 |
---|---|---|
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")
2
3
4
5
# call_vba 执行VBA函数调用计算
执行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)
2
3
# add_test_report 添加自定义测试报告项
添加自定义测试报告项, 该函数仅对测评状态有效, 推荐放在 exit 事件函数中使用
参数 | 类型 | 说明 |
---|---|---|
item | str | 测试报告项名称,必填项 |
itemdata | str | 报告项内容,必填项 |
无
# input_par 申明参数
此函数仅支持在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)
2
3
4
5
# test_report_none 禁用回测弹出测试报告
此函数一般用于用于exit事件函数内,作用为禁用回测完成后弹出测试报告。
无
# exit事件函数会在测评结束或者停止策略运行时调用test_report_none函数。
def exit(context):
test_report_none()
2
3