前言
对于很多人来说这是一篇起点,但是对我来说这是终章,我在医院的厕所边拿着手机,怀着巨大的恐惧和压力完成了这一份研究。今天打开知乎和Tim,这两年来还是有很多人在关注mql5的事情,希望从我这里得到答案。这次我们不需要借助任何国外的软件,希望这次的研究成果成为你们的利器
接下来我可能不会再在这个舞台出现了。留下心路以供后学者发扬光大。
缘起
我大学的专业是投资学,在大二的时候,认识了当时的老大,比较系统的学习了技术分析的相关体系。在大三的时候,我手上就有过上七位数的资金,可惜后来模型破碎,并没有完全改变我的生活。大四那年遇到华少,他劝告我不可再无所事事,要掌握一门技能。我思考过后,由于之前构建模型的过程及其繁琐,大多是手动完成,于是我选择进入程序之门。当时并没有太好的规划,随大流学习了JavaWeb,后来进入了游戏公司成为了一名java后端开发人员,在Java端的学习让我接触了很多其他语言,python,js,golang等大多主流语言,也用他们完成了很多不错的线上游戏项目。在这期间我一直没有停止过对交易系统的探索,从数据源到策略编辑器,到最终的图表呈现。其实,这里面最致命的问题并不是策略,而是数据源和你迭代策略工具的效率。
相关的方法,你可以在我之前的文章中找到,这里就不赘述了。最后,关于A股,我的答案是
交易师+Lua
方案
我考差了很多国内的看盘软件,也研究了他们的版本历史,最终,我选择KT交易师作为工具,在编程语言上我选择了Lua。良好的性能加上程序的通用性是我想要的结果。
接下来我将展示,如何在交易师中使用Lua开发策略
他的核心其实是交易师的绘图加上Lua语言强大的编辑性。一次偶然的机会我在知乎看到有人出售通达信c#的DLL,后来我给他购买了交易师版本的DLL。再后来我发现其实飞狐交易师c语言文档官方早就有提供,只是开发厂商并不重视,我会把这篇pdf文档上传到github。对于编程自由有强烈要求的后来者就不要花这个冤枉钱了
基于这篇文档,我在上面植入了Lua。其实Lua和c语交互非常简单,不要对c语言有畏惧。不过就算你有畏惧,现在也不需要去触碰它了,我已经全部打通了交易师和Lua的接口,你只需要学习简单的Lua就能获得编程自由。我会把所有的源代码上传到github和gitee。希望对你们有帮助。
有了公共的标准和共识,我们可以构建比mt5更好的社区,中国的金融大基底希望可以有提升,有了竞争,在顶端的人也不要再去国际市场任人宰割了。虽然在一定高度来说,交易技术再厉害,可能赚的钱也只是一些人的起点,但是整个群体的力量提升,就可以成势。何况,全世界最好的技术真的不在中国么?技术分析真的不行么?后学者当自信自勉!
交易师DLL
以交易师软件的公式编辑器为例,
其实他引用的是一个数组,然后把这个数组的值绘制在图表上,但是我们这里把他交付给了Lua进行操作,然后从Lua中读取返回值
例如我们要绘制一个收盘价的曲线,lua代码如下
这里解释一下
- timeArr,openArr就是交易师中看到的K线数组的相关信息,包含所有历史以来的时间数组,开盘价数组他们天然的一一对应,例如访问索引为1的timeArr[1],openArr[1],highArr[1],lowArr[1],closeArr[1],volArr[1]就能获取到第一根k线的时间,开,高,低,收
- pResultBuf 就是作为返回给ss变量的数组,交易师软件会绘制他
- INPUT: P1(1); 这里我做了一个文件名字的映射,1表示他会访问交易师安装目录下Lua/LuaScript_1.lua这个文件,2就是会访问Lua/LuaScript_1.lua。由于交易师不能传递字符串,只能先这样,不过不影响使用。这个Lua文件夹需要自己创建
- 你需要把mLualib.dll放在你的交易师安装目录的FmlDll文件夹下面,可以从github上下载。也可以自行编译
附上github链接
之后如果有时间,我会补上更详细的注释