提供编辑公式接口介绍及使用方法
(温馨提示:鉴于内容太多,可使用Ctrl + F
进行搜索)
感谢您使用量化回测平台,如果有使用问题,请您通过邮件的方式告诉我们,谢谢。
客服热线:0571-26695555-2-1
邮箱:service.PBOX@hundsun.com
打开PBOX投资量化终端,点击最上方’编辑公式’按钮启动公式编辑器,如下图:
指标公式包括:系统默认指标公式及自定义指标公式,系统默认指标公式及自定义指标公式全部在“我的指标列表”区域,其中系统默认指标公式不支持修改,自定义指标公式可修改,如下图所示;
如果系统指标公式与用户自定义指标公式重名,系统自动修改默认指标公式名称,在其指标公式名后加时间戳以区分,当用户修改了自定义名称后,这些系统指标公式名称会在下次打开公式编辑器时更正,如:自定义指标公式已存在名为ATR的指标公式,系统指标公式中也有ATR,这时系统指标公式中的ATR名称会自动改为ATR-1514369192(后面的数据是时间戳),当自定义指标公式ATR名称被修改为与系统指标公式不重名时,如ATR3,下次打加公式编辑器时,系统指标公式ATR-1514369192名称会更正为ATR;
点击新增按钮,添加自定义指标公式
在弹出的编辑框中输入公式(指标)名称及描述
注:确定后,指标公式名称不可修改,如果要修改需要添加新指标公式,再删除当前指标公式
确定后,开始编写指标公式;函数库支持按函数名称搜索,双击后,添加到公式编辑区域
添加指标公式参数
完成指标公式编写后,点测试
测试通过后,保存
在"我的指标列表"中选中要修改的指标公式,在右侧编写区域直接修改;如修改指标公式内容、参数,描述;如下图,修改自定义指标公式ATR3。
选种要删除的指标公式,点删除按钮
注:1.要调用的指标公式必须是公式编辑器中已存在的;
2.系统指标公式与自定义指标公式,使用方式相同;
#导入公式引擎包:
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(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(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(name_params_dict, *args1, **args2)
非增量设置指标公式参数,支持一次设置一个指标公式参数及多个指标公式参数。
注意:
调用该函数会先清除已经设置的指标公式参数再添加新的指标公式参数
name_params_dict:
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(datas, stock_one='')
设置公式引擎计算需要的数据,非增量形式。
datas:公式引擎计算需要的数据;
格式:支持以下三种格式;
Items:dataframe的列名
Major:日期时间索引
Minor:股票代码
注意:所有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(security_list=[], params = {}, datas = {}, period = '1m')
计算指标公式
security_list:股票代码列表;
params:指标公式参数;
注意:如果传入的指标公式参数列表为空,如{‘KDJ’:[]},会用默认值填充;
datas:计算指标公式需要的数据;
Items:dataframe的列名;
Major:日期时间索引;
Minor:股票代码
注: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()
获取当前已添加或者设置的所有指标公式参数。
无
格式:{‘name1’:[var1, var2, …], ‘name2’:[var1, var2, …], ….}。
parmas = fc.fc_get_params()
print(params)
#{'KDJ': [9, 3, 3]}
fc_clear_params()
清除所有已添加或者设置的指标公式参数。
无
无
fc.fc_clear_params()
fc_get_datas()
获取已经设置的数据。
无
已经设置的数据
fc.fc_get_datas()
fc_clear_datas()
清除当前已设置的数据。
无
无
fc.fc_clear_datas()
暂无
生成指标公式参数:同研究中的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)
参数:
函数使用实例:
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()
暂无