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