Giter Site home page Giter Site logo

hustcer / star Goto Github PK

View Code? Open in Web Editor NEW
930.0 90.0 245.0 2.17 MB

A STock Analysis and Research tool for terminal(cli) users. 技术控和命令行爱好者的 A 股辅助分析工具。

License: MIT License

JavaScript 100.00%
stock-analysis stock cli

star's Introduction

Star是什么?

Star是 STock Analysis and Research tool 的简称,主要用于A股股票追踪分析。star目前的主要作用是根据您所设定的股票目标价及当前价计算出相对该目标价的上涨空间,即(目标价-当前价)/当前价x100%,然后将此上涨空间按顺序排列方便您从中找到上涨空间最大的股票作为买入参考。star不提供股价预测和股票交易服务,目前只是单纯的计算,所以它的价值很大程度上取决于您所设定的目标价的有效性,目标价可以选择近期股票的最高价格或者分析师给出的价格,在大牛市里面这样的目标价还是比较容易达到的。同时star还具有股票基本报价信息查询、看盘、股票董监高持股信息批量查询、查阅未来30日财经日历等功能,未来可能会加入更多功能,也欢迎大家反馈建议

Donate

这个工具的开发和维护花费了我大量的时间和精力,如果Star对你有所帮助,也欢迎您给予支持,谢谢: 赞助Star

安装及使用

Star是基于node.js的所以先要安装node.js, 推荐您使用最新版本的node.js,同时最好使用 Mac/Linux系统,Windows下目前还没测试过,理论上可以使用,如果具体使用过程中遇到问题也可以在此反馈;具体安装步骤如下:

  1. 安装 node.js, version >= 4.2.0,始终建议您采用最新版本的 node.js;
  2. 安装star: sudo npm i -g star,注意一定记得加上 -g 参数,这样在任意路径下都可以调用star命令,否则可能找不到可执行文件;
  3. 运行star: 直接执行 star 即可,第一次运行的时候需要加-f--file参数指定股票数据文件(推荐采用绝对路径,详见后文说明),之后可以省略该参数;
  4. 更多帮助可以参考: star --help;

注意:如果npm安装很慢(由于一些众所周知的原因),可以使用cnpm代替,下同;

从源码安装

如需从源码安装用如下步骤替换前面的第二步即可:

  1. 在安装 git 之后 clone star源码:git clone [email protected]:hustcer/star.git;
  2. star目录下安装依赖的 node 模块: cd star && sudo npm install或者sudo npm install --production,加上--production参数则不安装开发依赖的相关模块比如gulp等;
  3. 然后执行 ./star.js 即可,推荐创建软链接:ln -s /absolute/path/to/star.js /usr/local/bin/star, 这样就可以在任意位置通过star命令进行调用;

升级

本工具会不定时更新,升级方法如下:

  1. 【可选】升级node.js, 建议您使用nvm来管理node这样升级起来很方便,mac下也可以使用brew来安装、升级node;
  2. 更新 starsudo npm update -g star;

FAQ

搜集了一些常见问题及解决办法,参考这里

What' New ?

变更详情 见此,主要变更如下:

  • 【v0.5.0】 修复财经日历获取异常;修复深交所股票董监高增减持记录查询异常.
  • 【v0.3.9】 修复财经日历内容解码问题.
  • 【v0.3.8】 修复 node.js V6+ 环境下帮助文档输出被截断的 bug.
  • 【v0.3.5】 优化命令行中数据表格展示;
  • 【v0.3.2】 股票追踪增加对融资融券标的的过滤支持,可以通过-M或者--margin实现;
  • 【v0.3.1】 修复深市股票董监高持股变动查询时的分页显示问题;
  • 【v0.3.1】 -g--grep参数支持对股票代码的过滤;
  • 【v0.3.0】 通过-i--insider参数查询董监高持股变化信息的时候也可以不指定股票代码,此时查询沪深两市最近的董监高交易记录,按交易时间倒序排列;
  • 【v0.3.0】 未指定股票代码查询董监高持股变动信息时允许通过--market参数来指定板块儿:SZM-深圳主板, SZGEM-深圳创业板, SZSME-深圳中小板, SHM-上海主板. 大小写不敏感; 指定股票代码时会根据股票代码来判断属于哪个市场,所以--market参数无效。
  • 【v0.3.0】 可以通过-i --top-buy参数查询最近买入总额排名前列的股票,--span参数代表查询时间区间:1m~12m,即最近一个月到最近12个月;数据源: uzfin.com
  • 【v0.3.0】 可以通过-i --top-sell参数查询最近卖出总额排名前列的股票,--span参数代表查询时间区间:1m~12m,即最近一个月到最近12个月;数据源: uzfin.com
  • 【v0.3.0】 修复查询深市个股董监高持股变动信息时的分页问题,可以通过-p或者--page参数指定要查询的分页,默认为第一页。
  • 【v0.2.8】 增加--remove参数筛选证券名称和备注里面不包含指定关键词的股票,多个关键词之间用','或','隔开.
  • 【v0.2.8】 股票追踪增加按bdiff即根据(s.price - s.cheap)/s.price指标排序.
  • 【v0.2.8】 股票追踪增加按sdiff即根据(s.price - s.expensive)/s.price指标排序.
  • 【v0.2.7】 增加--lteb [pct] 参数用于筛选出使得如下条件成立的股票:100*(s.price - s.cheap)/s.price <= pct,如果pct为空则上述条件退化为:s.price <= s.cheap.
  • 【v0.2.7】 增加--gtes [pct] 参数用于筛选出使得如下条件成立的股票:100*(s.price - s.expensive)/s.price >= pct,如果pct为空则上述条件退化为:s.price >= s.expensive.
  • 【v0.2.6】 新增--lteb--gtes参数,用于筛选当前价小于等于适合买入的便宜价格或者大于等于应该卖出的昂贵价格的股票(分别对应股票配置里面的cheapexpensive价格)。
  • 【v0.2.6】 允许通过 star -wo 或者 star -w -o watch 当前持有的股票, 原有的 fallback 机制不变。
  • 【v0.2.5】 改进内部交易查询等在命令行终端输出时的对齐问题。
  • 【v0.2.5】 看盘股票列表的数目从 20 调整到 25,批量请求的数目也作相应地调整。
  • 【v0.2.4】 财经日历的事件列表输出排版改进——去掉冗余的空白字符。
  • 【v0.2.4】 股票配置文件的symbols部分添加重复股票检查功能。

具体功能列表

股票追踪

  • 设置股票的买入价、卖出价、目标价、星级、备注等,可以自动获取股票的当前价格并且计算距离目标价的上涨空间:(目标价-当前价)/当前价x100%,上涨空间最大的股票通常也是最有利可图的,这也是本工具的最主要功能,方便快速决定值得买入的股票;
  • 支持两个股票信息获取数据源:腾讯和新浪股票数据源,万一其中一个有问题可以通过-d--data参数切换到另一个;
  • 可以按照股票的code(证券代码)、star(星级)、price(当前价)、incp(当前涨幅)、bdiff( (s.price - s.cheap)/s.price )、sdiff( (s.price - s.expensive)/s.price )、targetp(上涨空间: (s.target - s.price)/s.price )、capacity(市值)、pe(PE)、pb(PB)等条件进行升、降序排序,其中后三项排序只有在采用腾讯数据接口的时候才支持;
  • 股票数据比较多的时候可以设置每次显示多少条数据(通过-l--limit参数),并且进行分页(通过-p--page参数);
  • 可以设置是否关注、持有某股票,并根据这些条件进行过滤:可以显示所有股票(-a, --all)、只显示持有的股票(-o, --hold)、只显示不再关注的股票(-I, --ignore);
  • 可以通过-e--exclude参数排除所有证券代码以300,600,002或者000开头的股票,多个前缀之间以','或者','分隔;
  • 可以通过-c--contain参数只显示所有证券代码以300,600,002或者000开头的股票,多个前缀之间以','或者','分隔;
  • 可以通过-f--file参数指定股票文件路径,并自动保存该路径,下次执行命令的时候不必重复输入;
  • 可以通过-g--grep参数对股票列表里的股票名、股票代码、备注字段进行搜索、过滤,多个关键词之间以','或者','分隔;
  • 可以通过--remove参数筛选证券名称和备注里面不包含指定关键词的股票,多个关键词之间用','或','分隔.
  • 可以通过-L--lte参数过滤出当前价到目标价的上涨空间百分比小于等于指定百分比的股票;
  • 可以通过-G--gte参数过滤出当前价到目标价的上涨空间百分比大于等于指定百分比的股票;
  • 可以通过-U--under参数过滤出股票星级等于或在指定星级之下的股票;
  • 可以通过-A--above参数过滤出股票星级等于或在指定星级之上的股票;
  • 可以通过-M--margin参数过滤出支持融资融券的股票;
  • 可以通过--lteb [pct]参数用于筛选出使得如下条件成立的股票:100*(s.price - s.cheap)/s.price <= pct,如果pct为空则上述条件退化为:s.price <= s.cheap,其中s.price为股票当前价格,之所以使用s.price作为分母而不是s.cheap主要是为了减少因为后者的随意性而带来的偏差;
  • 可以通过--gtes [pct]参数用于筛选出使得如下条件成立的股票:100*(s.price - s.expensive)/s.price >= pct,如果pct为空则上述条件退化为:s.price >= s.expensive,其中s.price为股票当前价格,之所以使用s.price作为分母而不是s.expensive主要是为了减少因为后者的随意性而带来的偏差;

股票报价查询

  • 通过证券代码查询相应股票的基本报价信息,多个代码之间以','或者','分隔,一次最多查询25个,例如:star 300315,600048,600015

股票报价自动更新/看盘

  • 可以通过-w--watch参数看盘,在该模式下股票报价数据会自动更新,目前更新时间间隔为3.6秒,例如:star -w 601179,600118,600893,000712,002625,最终执行效果类似于在终端执行top命令;
  • 每次输入这些股票代码可能比较麻烦,所以为了方便起见可以修改股票配置文件的 watchList 部分内容,详见后文说明,这样每次只需要执行star -w 命令即可;
  • 如果 watchList 部分内容为空则自动会查找 symbols 部分股票里面 holdtrue 的部分股票;
  • 如果在使用-w--watch参数的同时再加上-o--hold参数则忽略watchList里面的股票直接加载symbols 部分股票里面 holdtrue 的部分股票,比如star -w -o或者star -wo
  • 需要说明的是,目前看盘时股票数目有限制,最多同时观察25只股票,这个数目在大多数情况下已经足够了,加上这个限制主要是为了减少数据请求的次数;

董监高持股变动信息批量查询

  • 可以通过-i--insider参数加上对应的证券代码,查询相应股票的高管交易记录,多个代码之间以','或者','分隔,支持对深市主板、中小板、创业板及沪市股票的董监高持股变动信息进行查询;
  • 通过-i--insider参数查询董监高持股变化信息的时候也可以不指定股票代码,此时查询沪深两市最近董监高交易记录,按交易时间倒序排列,可以通过-p--page参数进行翻页;
  • 可以通过--from 2014/01/01 --to 2015/07/09参数限定高管交易记录的查询起始时间,默认从当前时间开始往前推一年;
  • 可以通过--span 6m参数限定高管交易记录的查询时间跨度月数,取值范围从1m24m6m表示从现在开始往前推6个月,默认为12m,例如:star -i 000768,002456,600118,300036 --span 3m
  • 需要注意的是目前一次最多可以查询25只股票,如果你有更多股票可以分多次进行查询,加上这个限制同样是为了减少数据请求次数和服务器压力;
  • 未指定股票代码查询董监高持股变动信息时允许通过--market参数来指定板块:SZM-深圳主板, SZGEM-深圳创业板, SZSME-深圳中小板, SHM-上海主板. 大小写不敏感。注意:当指定股票代码的时候会自动忽略该参数
  • 可以通过-i --top-buy参数查询最近买入总额排名前列的股票,--span参数代表查询时间区间:1m~12m,即最近一个月到最近12个月;
  • 可以通过-i --top-sell参数查询最近卖出总额排名前列的股票,--span参数代表查询时间区间:1m~12m,即最近一个月到最近12个月;

未来30日财经日历

  • 可以通过-C--cal参数查询**股市未来30日题材前瞻;

其它

  • 还有更多功能正在酝酿之中,同时也欢迎大家广泛提建议;

股票数据文件说明

Star的运行需要一个股票数据文件,如果未指定股票数据文件默认情况下会使用当前目录下的 symbols.yaml 文件,该文件采用yaml语法编写,修改的时候尤其要注意缩进问题,否则可能会解析错误。一个典型的股票数据文件格式说明如下:

股票追踪数据说明

symbols:
  -
    name      : '掌趣科技'            # <字符串>公司名称
    code      : '300315'             # <字符串>证券代码,必填,不可错
    cheap     : 16                   # <数字>买点价位,在此价格附近买入有利可图
    expensive : 22                   # <数字>卖点价位,在此价格附近可以卖出获利了结
    target    : 23                   # <数字>目标价位
    star      : 3                    # <数字>股票评级,越高越值得购买,范围:1~5
    hold      : false                # <true/false> true 表示当前持有该股票,反之不持有
    watch     : true                 # <true/false>是否关注此股票,如果 true 则关注,否则忽略
    comment   : '手游;高送转;自设目标'  # <字符串>行业/概念/题材等备注,后期可用于搜索过滤
  -
    name      : '启明星辰'
    code      : '002439'
    cheap     : 50
    expensive : 88
    target    : 78
    star      : 3
    hold      : false
    watch     : true
    comment   : '计算机;信息安全;腾讯合作;分析师推荐'

股票报价自动更新/看盘数据格式说明

# 通过`star.js -w`或`star.js --watch`看盘时如果没有传入证券代码参数则从这里取得看盘股票列表
# 如果 watchList 列表为空或者不存在则从 symbols 列表中获取 hold 为 true 的股票
watchList:
  -
    name :  '安信信托'
    code :  '600816'
  -
    name :  '中航飞机'
    code :  '000768'
  -
    name :  '华胜天成'
    code :  '600410'
  -
    name :  '**卫星'
    code :  '600118'
  -
    name :  '中航动力'
    code :  '600893'
  -
    name :  '锦龙股份'
    code :  '000712'

运行截图

  1. 帮助文档

  2. 股票筛选结果

  3. 股票基本报价信息查询

  4. 股票看盘(报价数据自动更新)

  5. 批量查询股票董监高增减持信息

  6. 董监高增减持排行榜

  7. **股市未来30日题材前瞻

star's People

Contributors

jagdish86 avatar topdna avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

star's Issues

运行./star.js 时出现的问题

/home/wangkr/star/star.js:11
let _ = require('lodash'),
^^^
SyntaxError: Unexpected strict mode reserved word
at exports.runInThisContext (vm.js:73:16)
at Module._compile (module.js:443:25)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3

star err

module.js:489
throw err;
^
SyntaxError: /Users/local/.star.json: Unexpected end of input
at Object.parse (native)
at Object.Module.extensions..json (module.js:486:27)
at Module.load (module.js:355:32)
at Function.Module.load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.Common.getSymbolFilePath (/usr/local/lib/node_modules/star/lib/common.js:43:26)
at Object.
.filter.
.filter._.filter.syms as getFilteredSymbols
at Object.actions.TRACE (/usr/local/lib/node_modules/star/star.js:109:29)
at doCmd (/usr/local/lib/node_modules/star/star.js:137:20)
at Object. (/usr/local/lib/node_modules/star/star.js:141:1)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)

运行star出现问题

yntaxError: /Users/oujun/.star.json: Unexpected end of input
at Object.parse (native)
at Object.Module._extensions..json (module.js:430:27)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Module.require (module.js:367:17)
at require (internal/module.js:16:19)
at Object.getSymbolFilePath (/usr/local/lib/node_modules/.star_npminstall/star/0.3.5/star/lib/common.js:45:26)
at Object.getFilteredSymbols (/usr/local/lib/node_modules/.star_npminstall/star/0.3.5/star/lib/trace.js:31:56)
at Object.trace (/usr/local/lib/node_modules/.star_npminstall/star/0.3.5/star/star.js:128:29)
at doCmd (/usr/local/lib/node_modules/.star_npminstall/star/0.3.5/star/star.js:161:20)
at Object. (/usr/local/lib/node_modules/.star_npminstall/star/0.3.5/star/star.js:165:1)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)

Trailing comma bugs

Trailing comma bugs when run the following commands:

  • star -i 600118,600117,600677,
  • star 600118,600117,600677,
  • star -w 600118,600117,600677,

‘REPLACE_INVALID_UTF8’ is not a member of ‘v8::String’

npm http 200 https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz
AR(target) Release/obj.target/iconv.a
CXX(target) Release/obj.target/iconv/src/binding.o
In file included from ../src/binding.cc:18:
../node_modules/nan/nan.h:316: error: ‘REPLACE_INVALID_UTF8’ is not a member of ‘v8::String’
make: *** [Release/obj.target/iconv/src/binding.o] Error 1
make: Leaving directory `/usr/lib/node_modules/star/node_modules/iconv/build'

Make `star -wo` to watch held stocks

Make star -wo or star -w -o to watch held stocks, and star -w to watch stocks in watchList then fallback to held stocks if there is no stock in watchList

Query insider trading from TI bug

Unhandled rejection Error: ESOCKETTIMEDOUT
    at ClientRequest.<anonymous> (/Users/hustcer/github/star/node_modules/request/request.js:820:19)
    at ClientRequest.g (events.js:199:16)
    at ClientRequest.emit (events.js:104:17)
    at Socket.emitTimeout (_http_client.js:543:10)
    at Socket.g (events.js:199:16)
    at Socket.emit (events.js:104:17)
    at Socket._onTimeout (net.js:348:8)
    at _makeTimerTimeout (timers.js:476:11)
    at Timer.unrefTimeout (timers.js:540:5)

无法创建有效地软件连接

从源代码安装Star(sudo npm install --production),使用软连接访问Star时,出现以下问题:

fs.js:584
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^

Error: ENOENT: no such file or directory, open 'symbols.yaml'
at Error (native)
at Object.fs.openSync (fs.js:584:18)
at Object.fs.readFileSync (fs.js:431:33)
at Object..filter..filter..filter..filter.syms as getFilteredSymbols
at Object.actions.TRACE (/Users/ChiangEarl/Documents/Project/git/star/star.js:128:29)
at doCmd (/Users/ChiangEarl/Documents/Project/git/star/star.js:161:20)
at Object. (/Users/ChiangEarl/Documents/Project/git/star/star.js:165:1)
at Module._compile (module.js:425:26)
at Object.Module._extensions..js (module.js:432:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Function.Module.runMain (module.js:457:10)
at startup (node.js:136:18)
at node.js:972:3

star

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.