一、前言
零零散散大概花了半年时间终于把自己这三年的区块链量化交易实践总结成了一门课程,总共十一章、61节课,包含了Java后端、Web前端、APP移动端的开发过程和整套项目源码。从一开始的软件安装、数据库建表、代码编写,到最后金融知识的讲解。也算是总结了自己在软件开发领域、金融领域的部分知识技能。如果你感兴趣的话,可以点击链接购买:https://edu.csdn.net/course/detail/25822
二、感悟
这里简单提炼下,自己在软件项目开发和量化交易中所用到的思维模型和方法论。
在软件开发中框架思维是比较常用的,现在的软件开发基本都是先搭建好一个框架,测试好没问题后,再开始填充相应的功能模块。
框架的好处是确定了基本公用模块后,能根据自己的业务需求进行伸展和收缩;同时也减少了代码的冗余,提高了开发效率和开发人员的协同合作。
现在的软件开发基本都是属于框架开发模式,这样做的好处就是很多人可以同时参与一个项目,并且互不干扰,简化了繁琐的过程,规范化了处理流程。
当然框架也有局限性,任何事物都存在多面性。因为框架规范化事物处理逻辑,相当于制定了规则,如果要使用框架,就必须按照规则来执行,这就丧失了相对的灵活性和自由度。
这点在该项目中的代码生成模块就体现出来了,因为我想要直接生成前后端的代码,减少开发量,就是直接建立规范化的代码模板,使用模板引擎来直接生成代码,这样我就不用重复开发类似功能了,开发效率是大大提升了。
但也存在问题,就是我想更改某个方法时不好操作,一改就会破坏其规范性。但解决方法总比问题多,后面我增加其框架的可扩展性,添加特殊功能方法手写的模式就解决了。
当然实际生活中,我们也可以运用框架性思维的特性来改善我们的生活,提高工作效率。
我们先明白框架的特性:
1、框架提供可重用的公共模块。
2、框架把繁琐的过程简单化。
3、框架把处理流程规范化。
根据这些特性,我们就可以使用它了,比如说,你想完整的输出一个像模像样的东西,比如一份报告、一门课程,一篇文章等等,可以使用框架思维,使用框架思维的一种工具就是思维导图,就像我下面的课程大纲一样,它能让我抓住整个课程的整体。其他的例子就不再一一例举。
在没有接触到金融交易前,我几乎没有认真了解过关于对策学的东西,自己也没有想过什么概率思维。一直不断的去学习、了解,才知道自己不懂概率思维、策略思维。
对策学,是一门涉及到人类一切生活领域里的科学。所为对策,是指主题在和客体的交往过程中,由于客体业已发生了变化,主体为了求得自身的生存和发展,继续保持和客体的平衡状态,遂依靠自身的主观能动性,提出的目的旨在对付已经变化的客体的方针、政策、办法和措施等等。
之所以要了解对策学的知识,是源自金融交易本身是要根据行情做出决策,以应对不同的变化来达到盈利,并且这点在我们的量化交易策略的开发中是要考虑到的。当然对策学的相关知识在其实我们也是在生活中很常用的,只是我们自己没有发觉而已,在经济学学科分支有一个博弈论,其实也称为对策论(Game Theory)还有一个名称是运筹学。大家可以自己去搜索了解,这里就不再介绍了。相关的学术论文请查看文末链接。
分享个在对策学中常用的一种分析方法:“向前展望,倒后推理。”
向前展望:决策前,预测对方的行为以及行为的结果。
倒后推理:明确最终目标,往后倒推逐渐确定策略。
这点的重要性常常体现在我们遇到bug时的处理环节。大部分人写代码时遇到问题,首先是复制问题,然后百度搜索,看看别人是如何处理的,在看看自己的情况。我在刚开始学习软件开发时也是这样操作的,后面遇到百度上也没人提供解决方法的问题,于是就自己去看官方的文档,解决了。
有时发现官方文档里面已经包含绝大数我们会遇到的问题的处理方法。
就像这个项目的APP端开发中用到的Ionic框架,一部分问题是搜索不到的,因为我是采用最新版的,即使搜到了也不是最新版的。去看官方文档的话,会发现其实官方已经给出了解决方法。
当然,导致我们不能直接去看原生文档的一个原因,可能是语言问题。
在软件开发领域,大部分官方文档都是英文文档,比如SpringBoot、Maven等等。能用英语看懂官方文档可能是绝大数国内程序员的天花板。
还有一个可能是逻辑思考能力不足,这点我自己也是存在,记得再刚毕业去找工作时,去了一家外企公司面试。进去后直接给了一份英文的逻辑思维能力测试题,我自己测试的结果是没有通过。但这不影响我去提高自己的逻辑思维能力,只要不放弃就一定会有进步。
三、项目信息
整个课程的大纲我就直接用思维导图列出来了,或者你也可以直接点击链接(https://edu.csdn.net/course/detail/25822)查看课程的目录:
简单说下整套系统所用到技术框架:
1、Java后端:
SpringBoot2.2.4、SpringSecurity5.2.1、MyBatisPlus3.3.1、JJwt0.9.1、Maven。
2、数据库:
PostgreSQL12.1。
3、Web前端:
Vue CLI4.2.0、Vue2.6.11、 VueRouter3.1.5、Axios0.19.2、ElementUI2.13.0、Echarts4.6.0。
4、APP移动端:
Ionic CLI、Ionic、Angular、TypeScript、Cordova、Cordova CLI
因为一个人开发的话主要是考虑工作量和效率,所以APP端就采用WebApp的混合开发模式。
全部看下来可以说是一个人完成了全部开发,也算是全栈开发了,哈哈。
下图是大概的系统功能模块图:
功能模块主要是分为基础功能模块,交易任务策略管理模块,安全模块。整个系统去除了我以前开发的多余功能,只留下了精简实用的功能。
下面是系统的WEB端界面截图:
下面是APP端的界面图:
下面是APP的夜间模式:
最后简单说明下软件开发和金融市场交易都是属于实践领域,需要自己实际去动手操作,才算学习,才能掌握相应的技能。
祝一路顺风!课程链接:https://edu.csdn.net/course/detail/25822
参考文献:
1、https://www.jianshu.com/p/5a6d7efed329
2、https://blog.csdn.net/hawksoft/article/details/87910842
3、https://www.jianshu.com/p/a05e8d16559e
4、https://www.doc88.com/p-0562542090557.html
5、https://www.ixueshu.com/document/dbd5fac680c53666318947a18e7f9386.html
6、http://xueshu.baidu.com/usercenter/paper/show?paperid=cd7c77ae4cb63144efe43608c292e8dd