A1anSong / mahakala

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mahakala

这是对量化交易的一次研究和探索

项目起源的idea: 7月份因为在外旅游,错过行情的节奏,萌生了一个想法,能不能将自己交易的理论模型化和指标化,来达到自动化提醒的目的,这样就不用每天盯着电脑看盘了,也不用担心错过行情的节奏了。

因为交易中的许多理论和概念都是多维度参考的,所以想通过程序来将各种指标和理论实现并通过自己的逻辑整合,这样就可以通过程序来自动化的提醒了。

写在2023.10.16

本项目正确的使用方法其实是:接收提醒->人为筛选有效指标->计算仓位和容量->下单交易。为什么没有把机器筛选做完善呢?因为一个完善的交易系统是很多个复杂的逻辑结合在一起的结果,这对我个人来说是一个比较庞大的工作量,所以之作出一些关键指标的筛选,那么机器筛选的正确率就不会高,而且机器筛选的结果也是需要人为判断的,所以干脆就不做了,直接人为筛选,而机器只需要在关键指标上给出相应的提示和绘制出相应的逻辑图表,这样也可以减少一些不必要的麻烦。

其实关于本项目的想法和计划还是很多的,关于指标的完善和优化,新增不同的交易所数据来源,中枢区间的合并和指标共振等,这些并没有想完全分享出来,故不一一列举。

这本来是一个私有项目,但是由于个人精力有限,短期内没有办法继续完善下去,以后即使继续完善,也会在另一个私有项目中进行,这个项目就公开了,希望能给有缘看到的人带来一些启发和帮助。

为什么直接从mahakala-python转为本项目

本项目最初是mahakala-python,python在数据分析上的确有很大的优势,但是对于数据获取来说,python的效率并不是很高,所以在花了一两周将mahakala-python稍微完善后,为了提高效率,开启了本项目,为的是将数据获取和数据分析分开,数据获取使用golang,数据分析使用python,这样可以充分发挥各自的优势。

在并发获取币安永续合约交易对的数据时,由于python语言的设计原因,无法充分发挥多核的优势,所以在获取数据时,使用golang来获取数据,然后将数据存储到数据库中,然后使用python来进行数据分析和绘图。

后续关于项目效率优化的一些想法:analyze基于CUDA来提高分析的效率,同时也可以使用GPU来进行绘图,这样可以充分发挥GPU的优势,提高效率。

了解本项目可能需要的准备

数据库选型:基于PostgreSQL的TimescaleDB扩展用于存储数据,因为数据量比较大,所以选用了时序数据库,TimescaleDB是基于PostgreSQL的,所以可以使用PostgreSQL的所有功能,同时还有时序数据库的优势。可以参考Timescale文档自行部署

分析绘图:使用的是mplfinance,基于matplotlibpandas的绘图库,可以视作是matplotlib的一个拓展,可以绘制各种K线图,同时还可以绘制各种指标,比如均线、MACD、KDJ等等

项目结构

项目主要分为两个部分,一个是数据获取(server),一个是数据分析(analyze)。

展示部分截图

About


Languages

Language:Go 51.0%Language:Python 45.5%Language:Jupyter Notebook 2.7%Language:Dockerfile 0.7%