主页 > imtoken钱包苹果版怎么用 > 小项目实战分享 | 用Python实现股票技术分析指标

小项目实战分享 | 用Python实现股票技术分析指标

imtoken钱包苹果版怎么用 2023-01-17 17:12:27

大家好,我是王老师。

许多人都对股票感兴趣。 我用Python实现了股市技术分析中常用的指标,比如:MA、MACD、RSI、BOLL、ATR、KDJ、CCI、PSY等,这些指标在通达信、同花顺等软件上都可以看到。 由于监管通达信 比特币,股票交易软件无法看到比特币行情,因此该项目以比特币为例来应用这些指标。 配合可视化其实可以达到和炒股软件一样的效果。

这里简单介绍一下项目的源码。

先看example1.py文件。

1.获取比特币行情数据

第一步是调用接口获取比特币交易数据。

比特币价值比特币最新_通达信 比特币_马斯克叫停比特币买车 比特币跳水

这里调用了get_price函数获取比特币的“每日”交易数据,我们来看get_price函数

马斯克叫停比特币买车 比特币跳水_比特币价值比特币最新_通达信 比特币

代码比较简单。 请求“api.huobi.de.com”接口的数据,并将返回的数据转换成DataFrame格式。 参数count表示返回数据的天数,参数frequency表示数据粒度,可以是“天”、“60分钟”、“15分钟”等。

我在jupyter中请求了12天的交易数据,可以看到函数返回的效果

马斯克叫停比特币买车 比特币跳水_比特币价值比特币最新_通达信 比特币

前4列代表一天的成交量:开盘价、收盘价、最高成交价、最低成交价。

2. 计算均线指标

有了交易数据,我们就可以计算出指标。 常见的是MA,即移动平均线指标,一般以“收盘价”计算。 MA5代表5日均线收盘价,连线为5日均线。 类似的还有 MA10、MA20、MA30、MA60。

获取收盘价

比特币价值比特币最新_通达信 比特币_马斯克叫停比特币买车 比特币跳水

其实我们需要的是“CLOSE=df.close.values;”。

计算 MA5 和 MA10

通达信 比特币_马斯克叫停比特币买车 比特币跳水_比特币价值比特币最新

调用MA函数通过传入不同的参数计算N天的平均收盘价。看MA函数代码

通达信 比特币_比特币价值比特币最新_马斯克叫停比特币买车 比特币跳水

利用pandas的滚动功能通达信 比特币,可以滑动选择N天的收盘价,调用mean函数可以计算出N天收盘价的平均值。 让我们看看效果:

比特币价值比特币最新_通达信 比特币_马斯克叫停比特币买车 比特币跳水

返回 12 天中每一天的前 N ​​天的平均收盘价。 我发现里面有很多nan。 以MA5为例,是因为5.25到5.28这几天收不到5天的收盘价,所以填nan。

计算移动平均线交叉

计算移动平均线的目的是计算两者是否相交以及何时相交。 交集可以作为买入(股票)和卖出(股票)的判断。

MA5可以画线,MA10也可以画线。 如果MA5与MA10交叉(向上交叉),可以说市场短期看涨情绪比较高。 相反,MA5 与 MA10 向下交叉(底切),表明市场短期看跌情绪较高。

来看看计算方法

马斯克叫停比特币买车 比特币跳水_通达信 比特币_比特币价值比特币最新

内层先调用CROSS函数计算两条线是否交叉

马斯克叫停比特币买车 比特币跳水_通达信 比特币_比特币价值比特币最新

在CROSS函数中,首先调用IF函数对MA5和MA10各位置的元素进行比较,计算结果存放在CROSS_BOOL中,内容如下:

比特币价值比特币最新_马斯克叫停比特币买车 比特币跳水_通达信 比特币

然后,调用 COUNT 函数对两个相邻元素求和。 传入2作为第二个参数,意思是计算相邻元素。看COUNT函数代码

通达信 比特币_比特币价值比特币最新_马斯克叫停比特币买车 比特币跳水

在COUNT函数中调用了SUM函数,SUM函数也是使用滚动函数,滑动选择2个元素,然后进行sum求和。 CROSS_BOOL中的元素都是布尔类型,False代表0,True代表1。

COUNT 函数返回以下结果:

马斯克叫停比特币买车 比特币跳水_比特币价值比特币最新_通达信 比特币

还需要判断COUNT函数返回的结果是否等于1,等于1有两种情况,第一种情况,前一天为0,当天为1,表示“向上”。 第二种情况,前一天为1,当天为0,表示“wear down”。 从上图看,6.4的值为1,由于6.3的值为0,说明5日线在6.4上穿10日线。

最终,CROSS函数的结果如下:

通达信 比特币_马斯克叫停比特币买车 比特币跳水_比特币价值比特币最新

6.4 的值为 True,这意味着两条线在同一天交叉。

回到最开始的代码“CROSS_TODAY=RET(CROSS(MA5,MA10))”,调用CROSS函数后,再调用RET函数检查某一天是否有交叉。

马斯克叫停比特币买车 比特币跳水_通达信 比特币_比特币价值比特币最新

RET函数比较简单,就是根据索引取对应位置的元素,默认取最后一位。

输出

输出CROSS_TODAY,存储6.5是否交叉。

马斯克叫停比特币买车 比特币跳水_比特币价值比特币最新_通达信 比特币

其实这里的描述是有问题的。 笔者在打印函数中打印的是“今天5日线是否穿越10日线”。 刚才我们说了,True只表示有交叉。 是涨还是跌,需要结合前面的。 判断的是一天还是第二天的状态,这里需要注意。

3.其他代码

除了MA,看看其他指标的计算

比特币价值比特币最新_马斯克叫停比特币买车 比特币跳水_通达信 比特币

第15行代码计算最近5天每一天的收盘价是否高于5日均线。 第 17 行计算 MACD 指标。

这里定义的函数和我们上面解释的差不多,这里就不一一解释了。

可以看出使用pandas可以非常方便的进行数据处理,代码中的很多用法都值得学习,包括函数封装的思想。

指标计算的函数都在MyTT.py文件中,总共100多行代码,涉及的指标很多。 有兴趣的可以自己查一下。

比特币价值比特币最新_通达信 比特币_马斯克叫停比特币买车 比特币跳水

今天的讲解就到此为止,有什么问题或者需要改进的地方欢迎留言。

如果你打算系统学习爬虫以及更多Python编程技巧,戳我文末名片,免费获取最新Python爬虫资讯/免费咨询/学习计划~