Python一眼看到股票的买卖点(111)

下面,继续趁热打铁,结合前面的MA5和MA20来继续分析。最好一眼能看到买卖点。

这个图可能就是我们想要的。

python可视化股票的买卖点

在这个图里,X是时间,Y是2--2的区间。然后黄线是缩放后的股票收盘价,蓝色的是分析出来的买卖点曲线。可以对比看下,股票低点时候,蓝线建议买入点。当股票高点,蓝线建议卖出。还是结合的比较好。

如果还要深入挖掘,可以把程序自动化,买卖点出现时候,可以自动提示我们,这样“一眼看到买卖点“了。

来看看代码吧:

其中要点是求出ma5和ma20的差,并求出其中的“趋势”。这样,按照变化趋势来标注买卖点。并且为了和实际做对比,将科大讯飞的收盘价按比例做缩小,标注出来。

然后还有一个函数,大家注意下。

np.sign

这个函数作用是,np.sign(a),返回数组中各元素的正负符号,用1和-1表示。这样就可以有初步变化了。

然后求出变化临界点后,对整个临界点数据进行遍历,标注出来。OK!齐活!

源码全都在这里,收好不谢!

#!/usr/bin/python
# -*- encoding: utf-8
import sys
import os
reload(sys)
sys.setdefaultencoding('utf-8')
import matplotlib as mpl
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
def rowIndex(row):
    global plt
    if row.signal> 0:
      plt.annotate(u'买', xy=(row.date_o, row.signal),arrowprops=dict(facecolor='red', shrink=0.05))
    if row.signal < 0:
      plt.annotate(u'卖', xy=(row.date_o, row.signal))
if __name__ == "__main__":
    mpl.rcParams['font.sans-serif'] = [u'simHei']
    mpl.rcParams['axes.uncode_minus'] = False
    dateparse1 = lambda dates: pd.datetime.strptime(dates, '%Y-%m-%d')

    s_list = pd.read_csv("./kd.csv",skiprows=0, encoding='utf-8', index_col='date', parse_dates=True,

                    date_parser=dateparse1)

    s_list["date_o"]=s_list.index          s_list["ma_sub"]=s_list["ma5"] - s_list["ma20"] s_list['diff'] = np.sign(s_list['ma_sub'] s_list['signal'] = np.sign(s_list['diff'] - s_list['diff'].shift(1))  s_list['signal'].plot(ylim=(-2, 2)  (s_list['close']/40).plot(ylim=(-2, 2))#将收盘价缩小范围,便于画图比较 s_list.apply(rowIndex, axis=1)    plt.legend(loc='upper right')  plt.show()

推荐阅读更多精彩内容