在我们的项目中,如果是做流程或者是一些涉及到计算的模块时,经常有对动态进行计算的需求,或者是动态的编写一个计算公式进行计算的业务场景;比如:一个计算有关三角函数的业务模板 sin(A) + cos(B);如果是你单独去实现的话;虽然不难但是还要要花一番时间的;今天在这里给大家推荐一款这样的开源项目,expression4j专门就是来进行这样的动态公式计算的。
Expression4j项目地址
https://github.com/gohutool/expression4j
Expression4js使用JAVA实现;是笔者专门针对金融公司的指标数据计算的一个量化跟踪引擎项目中进行抽象而来的一个子项目;项目是一个java的工具包项目,使用ANT进行构建;使用时引入相关的jar包即可;
通常对于公式计算的实现上来说,从最简单的四则运算得实现,或者用bsh,jython,jruby/groovy等脚本引擎,或者更高级的AST语法树规则的实现;或者更有甚者直接用sql执行,有许多种不同的解决方案的;等等方法多种多样。不过每种方法或多或少都有自己一定的局限。各自有着各自的适用场景;而这个Expression4j除了支持动态的 四则运算得实现, 更加支持脚本化的公式;同时expression4j有金融项目诞生,所以其对金融产品的公式计算更为适用;
使用实现公式计算模板;在量化计算的自编规则和自编指标的模块中定义出一个或者是一套计算公式,然后程序会根据你指定的公式进行计算,作为商业上的应用,这里的计算不仅仅局限于加减乘除,还包含标准偏差,平均线,移动平均线等指标的计算;
定义公式
String txt = "DIF:EMA(CLOSE,SHORT)-EMA(OPEN,LONG);"
+ "DEA:EMA(DIF,MID);"
+ "MACD:(DIF-DEA)*2::COLORSTICK;";
定义公式中的输入参数
String[] defs = new String[]
{ "SHORT", "LONG", "MID" };
声明参数
声明一个Formula的变量,这里就是整个公式计算的entry
FormulaParameters fp = new FormulaParameters();
fp.addParameter("short", 12);
fp.addParameter("long", 26);
fp.addParameter("mid", 9);
fp.addParameter("CLOSE", closeArray)
fp.addParameter("OPEN", openArray)
调用公式
FormulaResult fr = f.eval(fp);
Map
结果
更多例子{dea=[0.9358484784928137, 5.223248740604646, 9.484484720782131, 12.812405231923686, 17.625797032274512, 21.48934699188941, 24.338687429831023, 24.967767843873517, 23.7475, 23.4735, 22.735086398910138, 22.495512066265064, 22.42045061047972, 21.686444772033873, 20.699838512275377, 19.800386512274844, 20.637560544699593, 22.0218, 24.403776610862046, 24.227408662528966, 22.3154, 21.27741048836811, 20.240579387890197, 19.05695339586254, 16.70384447055847, 16.076128111445378, 14.8784, 13.7649,
可以参考项目中的test目录下的测试用例。
谢谢大家继续关注
一、投资标的研究及文章写作
2022年共完成40篇文章写作,其中个股研究16篇,投资思考23篇,投资组合构建1篇。
2022年主要对次高端白酒、调味品及部分食品板块进行了研究,研究的标的有:舍得、酒鬼酒、今世缘;千禾味业、中炬高新、海天味业、日辰股份、安琪酵母、绝味食品、涪陵榨菜;恰恰食品、安井食品;片仔癀。
个股及投资思想具体见:
二、阅读书籍
2022年阅读32本书籍,主要涉及商业模式、投资体系、行为金融学等方向。
1、《上瘾五百年》
2、《零售的哲学》
3、《跳着踢踏舞去上班》
4、《3G资本帝国》
5、《富甲美国》
6、《选股》
7、《彼得林奇的成功投资》
8、《股市真规则》
9、《股票投资的24堂必修课》
10、《股票作手回忆录》
11、《上瘾》
12、《将心注入》
13、《大败局》
14、《激荡三十年》
15、《笑傲股市》
16、《黑天鹅》
17、《动物精神》
18、《结构性改革》
19、《趋势的力量》
20、《时间的玫瑰》
21、《如果巴西下雨就买星巴克股票》
22、《滚雪球:巴菲特和他的财富人生》
23、《事实》
24、《奥马哈之雾》
25、《巴菲特之道》
26、《费雪论成长股获利》
27、《乌合之众》
28、《商界局外人》
29、《大钱细思》
30、《理解人性》
31、《鞋狗》
32、《商业模式全史》
三、基金经理研究
2022年未新增基金经理研究,仅对2021年研究的部分基金经理进行定期回顾:
张坤、萧楠、刘彦春、谢志宇、朱少醒、周雪军、李晓星、杜猛、李巍、张慧
四、投资组合构建
2022年12月3日开始构建模拟组合《》,截至目前组合收益率为6.52%。
2023年目标
1、阅读35本书籍
2、完成10个投资标研究
3、完成24篇文章写作
往年总结