最简单直接的方式是通过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)")
后续项目团队如果想做脚本的工程化管理,有两种思路
1. 使用module封装
2. 将脚本存放在数据库中,并封装调用接口,如callScripts(String host, int port, String functionID, Object... args)