Git Product home page Git Product logo

stockmanager's Introduction

炒股多年,一直苦于没有一个特别让我满意的股票交易记录软件,于是这周花了点时间写了一个类似的工具,同时也学习了一些相关的知识。

效果如下 (并非真实数据):

image.png

主要的特点包括:

  • 完整而精确的个股、整体数据指标。
  • 完整的个股操作记录。
  • 自动生成除权除息记录。
  • 准确的个股排序功能。
  • 极简界面,无广告,无妖艳的干扰元素。

技术方案

后端

我实在找不到一个不选择django的理由,用它搭建一个简单的Web api实在是太简单了。而数据的获取和计算,使用Python也非常方便。

数据库使用sqlite,我们需要存储的数据很少,用最轻量级调试最方便的方案就行。

我之前其实完全没有用过django,但作为流行了很多年的技术方案,django的相关文档十分丰富,基本上遇到的常见问题连百度都能很方便的找到解决方案。

前端

前端采用Vue + element-ui的方案,其实stockManager的前端就一个页面,相对比较简单。同时因为django前后端分离的架构设计,以后如果想要切换成例如react + antd这样的方案也很简单。

我之前的前端代码写得不多,在实际编码的时候,还是花了一点时间去学习框架和处理交互视觉问题。

数据源

实时的交易指标来自于新浪的接口:http://hq.sinajs.cn/list=sh600000

支持多代码查询,支持股票、场内基金等产品,获取数据后做个简单的处理即可。

离线交易指标来自baoStock:http://baostock.com/baostock/index.php

主要用来获取历史除权除息的数据。

之前也调研过Tushare,历史除权数据好像要积分才能查询...整个数据拉取工作,比较坑爹的地方是新浪的返回数据竟然是gb18030的编码...

数据指标

所有的计算公式来自雪球:

1、成本价
持股数 = ∑买入数量 + ∑红股数量 + ∑拆股所增数量 - ∑卖出数量 - ∑合股所减数量
摊薄成本 = (∑买入金额 - ∑卖出金额 - ∑现金股息) / 持股数
持仓成本 = ∑买入金额 / (∑买入数量 + ∑红股数量 + ∑拆股所增数量 - ∑合股所减数量) 

2、浮动盈亏
浮动盈亏额 = (当前价 - 持仓成本) * 多仓持股数
浮动盈亏率 = 浮动盈亏额 / (持仓成本价 * 持股数)
分市场浮动盈亏额 = ∑个股浮动盈亏额
分市场浮动盈亏率 = 分市场浮动盈亏额 / ∑(个股持仓成本 * 个股持股数)

3、累计盈亏
个股累计盈亏额 = 多仓市值 - (∑买入金额 - ∑卖出金额 - ∑现金股息) 

4、当日盈亏
昨日市值 > 0
当日盈亏额 = (现市值 - 昨收市值 + 当日∑卖出 - 当日∑买入)
当日盈亏率 = 当日盈亏额 / (昨市值 + 当日∑买入 + 当日∑卖空)
昨日市值 = 0
当日盈亏额 = (现价 - 持仓成本) * 股数 + 当日∑卖出 - 当日∑买入
当日盈亏率 = 当日盈亏额 / 当日∑买入
现金 = 本金+累计盈亏-市值

比较坑爹的是,一个股票持仓成本计算的时候,只计算清仓后最近一次开始的持股成本。

这块计算花了我整整一个下午的时间来做,有很多小逻辑细节,都体现在了代码里。

数据迁移

个人交易的数据可以从券商的软件获取,如果之前在别的平台有记录也可以做导出。

我在想导出的时候发现我的券商没有Mac的客户端,于是我果断去了离家最近的网鱼网咖,在一堆社会人打游戏的叫骂中,胆战心惊地安装券商软件,导出了所有的股票交易记录...即使如此,表格的解析,数据的校对极其繁琐耗时,也是整个工作中最花时间的地方。

搭建方式

  1. 安装Python3,pip,git。
  2. 使用pip安装django,baoStock,pandas等模块。
  3. 依次安装node,npm,vue,element ui,axios等前端依赖。
  4. git clone相关代码:https://github.com/gunerguner/stockManager
  5. 进入frontend目录, npm install 前端部分的依赖。
  6. 在frontend目录,npm run build 生成目标文件。
  7. 在主目录下python manage.py migrate 生成数据库(或者直接copy数据库文件)。
  8. 添加自己的股票操作记录,可以使用自己的脚本,或者在django admin界面添加(或者直接copy数据库文件)。
  9. 在主目录下,python manage.py runserver

stockmanager's People

Contributors

dependabot[bot] avatar gunerguner avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.