下面洞翩,繼續(xù)趁熱打鐵役纹,結(jié)合前面的MA5和MA20來(lái)繼續(xù)分析葵袭。最好一眼能看到買賣點(diǎn)。
這個(gè)圖可能就是我們想要的进统。
在這個(gè)圖里,X是時(shí)間浪听,Y是2--2的區(qū)間螟碎。然后黃線是縮放后的股票收盤價(jià),藍(lán)色的是分析出來(lái)的買賣點(diǎn)曲線迹栓〉舴郑可以對(duì)比看下,股票低點(diǎn)時(shí)候,藍(lán)線建議買入點(diǎn)酥郭。當(dāng)股票高點(diǎn)华坦,藍(lán)線建議賣出。還是結(jié)合的比較好褥民。
如果還要深入挖掘季春,可以把程序自動(dòng)化,買賣點(diǎn)出現(xiàn)時(shí)候消返,可以自動(dòng)提示我們载弄,這樣“一眼看到買賣點(diǎn)“了。
來(lái)看看代碼吧:
其中要點(diǎn)是求出ma5和ma20的差撵颊,并求出其中的“趨勢(shì)”宇攻。這樣,按照變化趨勢(shì)來(lái)標(biāo)注買賣點(diǎn)倡勇。并且為了和實(shí)際做對(duì)比逞刷,將科大訊飛的收盤價(jià)按比例做縮小,標(biāo)注出來(lái)妻熊。
然后還有一個(gè)函數(shù)夸浅,大家注意下。
np.sign
這個(gè)函數(shù)作用是扔役,np.sign(a)帆喇,返回?cái)?shù)組中各元素的正負(fù)符號(hào),用1和-1表示亿胸。這樣就可以有初步變化了坯钦。
然后求出變化臨界點(diǎn)后,對(duì)整個(gè)臨界點(diǎn)數(shù)據(jù)進(jìn)行遍歷侈玄,標(biāo)注出來(lái)婉刀。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))#將收盤價(jià)縮小范圍突颊,便于畫圖比較 s_list.apply(rowIndex, axis=1)? ? plt.legend(loc='upper right')? plt.show()