如何定义用 DolphinDB 脚本编写的因子并在 python 中调用它?
最简单最直接的方式就是通过run方法来执行脚本。
defAlpha101="""
def WQAlpha100(vol, high, low, close, indclass){
tmprank = rowRank(((close - low - (high - close)) / (high - low) * vol), percent=true)
ind1 = byRow(contextby{demean, , indclass.row(0)}, tmprank)
ind2 = byRow(contextby{demean, , indclass.row(0)}, ind1)
adv20 = mavg(vol, 20)
argmin = mimin(close, 30)
rank1 = rowRank(adv20, percent=true)
rank2 = rowRank(argmin, percent=true)
x = mcorr(close, rank1, 5) - rank2
ind3 = byRow(contextby{demean, , indclass.row(0)}, x)
return -(each(div, 1.5 * ind2, sum(abs(ind2))) - each(div, ind3, sum(abs(ind3))))*(vol \ adv20)
}
"""
s.run(defAlpha100)
s.run("WQAlpha100(vol, high, low, close, indclass)")
如果项目组以后想要对脚本进行工程化管理,有两种做法:
使用模块或功能视图封装脚本。
将脚本存储在数据库中,并封装调用接口,如
callScripts(String host, int port, String functionID, Object... args)
。