美文网首页机器学习
Python一眼看到股票的买卖点(111)

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

作者: 一日歌 | 来源:发表于2017-11-29 22:03 被阅读212次

    下面,继续趁热打铁,结合前面的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()

    相关文章

      网友评论

        本文标题:Python一眼看到股票的买卖点(111)

        本文链接:https://www.haomeiwen.com/subject/dlxmbxtx.html