搭建一个简易的量价选股系统(node做数据抓取)

最近迷上股市无法自拔,因为想提高胜率,所以在学习技术分析,一开始是使用通达信软件写写选股公式,后面打算自己弄一个选股系统(事实证明用处不大,哈哈哈)。

大概是这样实现的:首先用node写了个简单的服务,每天定时跑日k线数据。然后设计了个简单的mysql表来存储这些数据,最后自己写了一些sql来分析这些k线数据,固定了一个简单的模型。但是收益效果实在一般,还需要加强学习。这次主要是简单分享一下实现的方式,也顺便做一次技术总结,并不是劝朋友们去炒股哈。

系统结构

搭建一个简易的量价选股系统(node做数据抓取)

ig507(ig507.com)是我从网上找的一个提供免费接口的网站,普通版不收费,我觉得暂时还够用。所以就把它作为数据源了。

有一个注意点是这些接口限制单位时间的请求次数,每3s,2s才能请求一次。

请求的方式很简单,文档介绍

请求代码

const axios = require('axios');
const licence ='个人申请一个免费的licence就够用了,访问网站就能看到怎么申请。';

const getStockHistoryData = async (sid) => {
  const historyUrl = `http://ig507.com/data/time/history/trade/${sid}/Day_qfq?licence=${licence}`;
  const { data = [] }  = await axios.get(historyUrl);
  return data;
}

mysql mystock 数据库只有一个quantity_and_kline表,表设计也很简单(需要数据可以自己加字段)

CREATE TABLE `quantity_and_kline` (
  `id` varchar(45) NOT NULL COMMENT '股票id',
  `close` float DEFAULT NULL COMMENT '收盘价',
  `open` float DEFAULT NULL COMMENT '开盘价',
  `high` float DEFAULT NULL COMMENT '最高价',
  `low` float DEFAULT NULL COMMENT '最低价',
  `quantity` int(11) DEFAULT NULL COMMENT '成交量',
  `ds` int(11) NOT NULL,
  PRIMARY KEY (`id`,`ds`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

node 服务也比较简单,大概说一下服务的运行逻辑

搭建一个简易的量价选股系统(node做数据抓取)

目前来看,任务的启动还需要访问特定路由,因为我还只是部署在本地,一直开着一个服务耗内存,假设上线了,应该调整为时间条件出发,比如交易日的15:10分左右开始跑任务,这个时候数据源的数据已经更新完成了

代码我直接放github上了

sql 有了数据之后就通过sql来做筛选,来看看我蹩脚的sql语句(能用就行的那种)

获取最近四天,股价与成较量连续下跌,并且连续收阴线的股票,如图类型

搭建一个简易的量价选股系统(node做数据抓取)

select * from 
 quantity_and_kline t0,
 quantity_and_kline t1,
 quantity_and_kline t2, 
 quantity_and_kline t3
-- 关联 ,
 where t0.id = t1.id
 and t1.id = t2.id
 and t2.id = t3.id
-- 时间 
 and t0.ds = 20210426
 and t1.ds = 20210427
 and t2.ds = 20210428
 and t3.ds = 20210429
-- 缩量 
 and t0.quantity > t1.quantity
 and t1.quantity > t2.quantity
 and t2.quantity > t3.quantity
-- 股价跌
 and t0.close > t1.close
 and t1.close > t2.close
 and t2.close > t3.close
-- 四天收阴
 and t0.close < t0.open
 and t1.close < t1.open
 and t2.close < t2.open
 and t3.close < t3.open

目前胜率挺低的,也没太多时间去验证。
另外使用这样的系统时间成本还是比较大,每天跑数据都要很久,还不如直接用通达信选股。
这次全当练手了,感兴趣的同学可以一起探讨一下。
欢迎评论,指出意见,或者说说你的想法。

上一篇:2021-06-03


下一篇:使用国内docker镜像源