公式引擎使用说明

提供编辑公式接口介绍及使用方法

(温馨提示:鉴于内容太多,可使用Ctrl + F进行搜索)

感谢您使用量化回测平台,如果有使用问题,请您通过邮件的方式告诉我们,谢谢。

客服热线:0571-26695555-2-1

邮箱:service.PBOX@hundsun.com

公式编辑

启动公式编辑器

打开PBOX投资量化终端,点击最上方’编辑公式’按钮启动公式编辑器,如下图:

启动公式编辑器

指标公式介绍

指标公式包括:系统默认指标公式及自定义指标公式,系统默认指标公式及自定义指标公式全部在“我的指标列表”区域,其中系统默认指标公式不支持修改,自定义指标公式可修改,如下图所示;

指标公式介绍1

如果系统指标公式与用户自定义指标公式重名,系统自动修改默认指标公式名称,在其指标公式名后加时间戳以区分,当用户修改了自定义名称后,这些系统指标公式名称会在下次打开公式编辑器时更正,如:自定义指标公式已存在名为ATR的指标公式,系统指标公式中也有ATR,这时系统指标公式中的ATR名称会自动改为ATR-1514369192(后面的数据是时间戳),当自定义指标公式ATR名称被修改为与系统指标公式不重名时,如ATR3,下次打加公式编辑器时,系统指标公式ATR-1514369192名称会更正为ATR;

指标公式介绍2 指标公式介绍3

新增指标公式

点击新增按钮,添加自定义指标公式

新增指标公式1

在弹出的编辑框中输入公式(指标)名称及描述

注:确定后,指标公式名称不可修改,如果要修改需要添加新指标公式,再删除当前指标公式

新增指标公式2

确定后,开始编写指标公式;函数库支持按函数名称搜索,双击后,添加到公式编辑区域

新增指标公式3

添加指标公式参数

新增指标公式4

完成指标公式编写后,点测试

新增指标公式5

测试通过后,保存

新增指标公式6

修改指标公式

在"我的指标列表"中选中要修改的指标公式,在右侧编写区域直接修改;如修改指标公式内容、参数,描述;如下图,修改自定义指标公式ATR3。

修改指标公式1

删除指标公式

修改指标公式2

选种要删除的指标公式,点删除按钮

修改指标公式3

公式调用

注:1.要调用的指标公式必须是公式编辑器中已存在的;

2.系统指标公式与自定义指标公式,使用方式相同;

API介绍(研究)

导入公式引擎包

#导入公式引擎包:
from fly.formula import formula
#初始化公式引擎:
fc = formula.FormulaCalc()
#通过对象fc调用函数

注:只有【研究】中需要导入公式引擎包,【策略】中不需要导入公式引擎包

所有函数简介

生成指标公式参数

fc_gen_params(name, *args1, **args2)

增量增加指标公式参数

fc_add_params(name, *args1, **args2)

批量设置指标公式参数,非增量;

fc_set_params(name_params_dict, *args1, **args2)

设置数据

fc_set_datas(datas, stock_one='')

计算指标公式

fc_calc(security_list=[], params = {}, datas = {}, variable_type = 2, normalization = True, period = '1m')

取当前指标公式参数

fc_get_params()

清空当前指标公式参数

fc_clear_params()

取当前数据

fc_get_datas()

清空当前数据

fc_clear_datas()

函数详细说明

fc_gen_params – 生成指标公式参数

fc_gen_params(name, *args1, **args2)

生成计算指标公式需要的格式化参数。

注意:

此函数只生成公式引擎需要的格式化参数;公式引擎计算时需要的指标公式参数不会被设置,需要添加或者传入指标公式参数。

参数

name:指标公式名称;字符串(str)类型;

args1:不定长参数,不含变量名;整型;

args2:不定长参数, 含变量名;整型;变量名=变量值,变量名应与设定的相应指标公式中的变量名一致;

返回

{‘name’:[var1, var2, …]}。

示例
params = fc.fc_gen_params('KDJ',9,3,3 )
print(params)
#{'KDJ': [9, 3, 3]}

params = fc.fc_gen_params('KDJ', N=1,M1=2,M2=3)
print(params)
#{'KDJ': [9, 3, 3]}

params = fc.fc_gen_params('KDJ')
print(params)
#{'KDJ': [9, 3, 3]},是指标公式中指定的默认值
注意:三种格式不能混用;

fc_add_params- 添加指标公式参数

fc_add_params(name, *args1, **args2)

增量添加指标公式参数

注意:

此返回值为当前已经被增量添加的所有指标公式参数,只为灵活使用,计算时不需要再次设置指标公式参数或者传入指标公式参数。

参数

name:指标公式名称;字符串(str)类型;

args1:不定长参数,不含变量名;整型;

args2:不定长参数,含变量名;整型;变量名=变量值,变量名应与设定的相应指标公式中的变量名一致;

返回

{‘name1’:[var1, var2, …], ‘name2’:[var1, var2, …], ….}。

示例
fc.fc_add_params('MACD')
fc.fc_add_params('KDJ')
params = fc.fc_add_params('MA1', 5)
print(params)
#{'MA1': [5], 'KDJ': [9, 3, 3], 'MACD': [12, 26, 9]}

fc_set_params – 设置指标公式参数

fc_set_params(name_params_dict, *args1, **args2)

非增量设置指标公式参数,支持一次设置一个指标公式参数及多个指标公式参数。

注意:

调用该函数会先清除已经设置的指标公式参数再添加新的指标公式参数

参数

name_params_dict:

  1. 如果是一个或多个指标公式参数字典,则批量添加指标公式参数; 格式:{‘name1’:[v1,v2,..], ‘name2’:[v1,v2,…],…};
  2. 如果是字符串(str)类型,则表示一个指标公式名称,与args1或args2配合使用。

args1:不定长参数,不含变量名;整型;

args2:不定长参数,含变量名;整型;变量名=变量值,变量名应与设定的相应指标公式中的变量名一致;

返回

{‘name1’:[var1, var2, …], ‘name2’:[var1, var2, …], ….}。

注意:

此返回值为当前已经被设置的所有指标公式参数,只为灵活使用,计算时不需要再次设置指标公式参数或者传入指标公式参数。

示例
params = fc.fc_set_params({'BIAS1':[6],'BIAS2':[12],'BIAS3':[24],'ATR':[14],
'BOLL_UPPER':[20,2],'BOLL_MIDDER':[20,2], 'BOLL_LOWER':[],'MA1':[5],
'MA2':[20],'RSI1':[6],'RSI2':[12],'RSI3':[24],'MACD':[12,26,9],
'KDJ':[9,3,3],'WR':[10,6],'WAD':[10],'ATR':[14]})
print(params)
#{'BOLL_UPPER': [20, 2], 'BOLL_LOWER': [20, 2], 'MA1': [5], 'BIAS1': [6], 
#'RSI3': [24], 'MA2': [20], 'RSI1': [6], 'BIAS3': [24], 'KDJ': [9, 3, 3], 
#'BIAS2': [12], 'MACD': [12, 26, 9], 'WR': [10, 6], 'WAD': [10],
# 'ATR': [14], 'BOLL_MIDDER': [20, 2], 'RSI2': [12]}
#其中BOLL_LOWER未传参数值,使用默认值填充
params = fc.fc_set_params('MACD', 12,6,9)
print(params)
#{'MACD': [12, 26, 9]}

fc_set_datas – 设置数据

fc_set_datas(datas, stock_one='')

设置公式引擎计算需要的数据,非增量形式。

参数

datas:公式引擎计算需要的数据;

格式:支持以下三种格式;

  1. 研究内部函数get_price返回的panel;

    Items:dataframe的列名

    Major:日期时间索引

    Minor:股票代码

  2. 自组装的dict,{‘stock1’: dataframe1, ‘stock2’:dataframe2, …};
  3. Dataframe类型;

    注意:所有dataframe列名: ['open', 'close', 'high', 'low', 'volume', 'money'];顺序可变,列名不可变;

stock_one:一支股票代码,字符串类型;当datas为Dataframe时,需要传此参数,如果不传,在计算时不能指定股票代码;

返回

示例
datas = get_price(['600570.SS', '600571.SS'],
start_date='20160101', end_date='20170109', frequency='1m')
fc.fc_set_datas(datas)

fc_calc- 计算指标公式

fc_calc(security_list=[], params = {}, datas = {}, period = '1m')

计算指标公式

参数

security_list:股票代码列表;

  1. 用列表(list)格式可以指定一支或多支股票代码;
  2. 用字符串(str)格式只能指定一支股票代码;
  3. 不指定,则计算全部数据
  4. 格式:’name’ 或 [‘name1’, ‘name2’, …]

params:指标公式参数;

  1. 如果不传,则计算当前已设置或者添加的所有指标公式;
  2. 如果传入,则清除当前已设置的指标公式及参数,然后添加新传入的指标公式及参数,最后计算传入的这些指标公式;
  3. 格式:{‘name1’:[var1, var2, …], ‘name2’:[var1, var2, …], ….}

    注意:如果传入的指标公式参数列表为空,如{‘KDJ’:[]},会用默认值填充;

datas:计算指标公式需要的数据;

  1. 如果不传,使用当前已设置的数据;
  2. 如果传入,则覆盖已有数据;
  3. 格式:支持以下三种格式;
    1. 研究内部函数get_price返回的panel;

      Items:dataframe的列名;

      Major:日期时间索引;

      Minor:股票代码

    2. 自组装的dict,{‘stock1’: dataframe1, ‘stock2’:dataframe2, …};
    3. Dataframe;

      注:dataframe列名: ['open', 'close', 'high', 'low', 'volume', 'money'];顺序可变,列名不可变;

period:周期;当编辑指标公式时用到了时间函数PERIOD时使用;

格式:’m’, ‘d’, ‘5m’, ‘15m’, ‘30m’, ‘60m’,分别对应,1分钟、1天、5分钟、15分钟、30分钟、60分钟。

注意:如果计算的指标公式中没有用到时间函数,则这个参数不用传。

返回

Panel

Items:股票代码;

Major:日期时间索引;

Minor:dataframe列名

示例
datas=get_price(['600570.SS','600571.SS'],start_date='20160101', 
                    end_date='20160109', frequency='1m')
ret_dict = fc.fc_calc(params = fc.fc_gen_params('MA1', 5), datas=datas)
ret_dict = fc.fc_calc(['600570.SS'], params = fc.fc_gen_params('MA1', 10), datas=datas)

fc_get_params - 获取指标公式参数

fc_get_params()

获取当前已添加或者设置的所有指标公式参数。

参数

返回

格式:{‘name1’:[var1, var2, …], ‘name2’:[var1, var2, …], ….}。

示例
parmas = fc.fc_get_params()
print(params)
#{'KDJ': [9, 3, 3]}

fc_clear_params – 清空指标公式参数

fc_clear_params()

清除所有已添加或者设置的指标公式参数。

参数

返回

示例
fc.fc_clear_params()

fc_get_datas- 获取数据

fc_get_datas()

获取已经设置的数据。

参数

返回

已经设置的数据

示例
fc.fc_get_datas()

fc_clear_datas – 清空数据

fc_clear_datas()

清除当前已设置的数据。

参数

返回

示例
fc.fc_clear_datas()

研究示例

暂无

API介绍(策略)

函数说明

生成指标公式参数:同研究中的fc_gen_params

fc_gen_params(name, *args1, **args2)

增量增加指标公式参数:同研究中的fc_add_params

fc_add_params(name, *args1, **args2)

设置指标公式参数:同研究中的fc_set_params

fc_set_params(name_params_dict, *args1, **args2)

设置数据:同研究的fc_set_datas

fc_set_datas(datas, stock_one='')

计算指标公式

fc_calc(security_list=[], frequency='1m', params={}, datas={}, timeperiod=100)

参数:

  1. frequency:频率
  2. timeperiod:周期
  3. datas:如果不传,会根据timeperiod和Frequency取数据
  4. 其它同研究中的fc_calc

函数使用实例:

ret_dict = fc_calc(params = fc_gen_params('MA1', 5), timeperiod = 30, frequency = '1m')
log.info(ret_dict)

取当前指标公式参数:同研究中的fc_get_params

fc_get_params()

清空当前指标公式参数:同研究中的fc_clear_params

fc_clear_params()

取当前数据:同研究中的fc_get_datas

fc_get_datas()

清空当前数据:同研究中的fc_clear_datas

fc_clear_datas()

策略示例

暂无