Python Day155-163(一眼看到股票买卖点)

2017-11-13  本文已影响0人  TianAff
DAY 155-163 2017.11.4-2017.11.12

Windows下装Anaconda

Anaconda包含有超过720个关于科学,数据,工程和数据分析的Python和R包,如果不想在电脑里安装过多的包,你可以使用miniconda,它包含了conda,它的依赖包以及Python包。
Anaconda官网下载地址
Anaconda package lists
然而从官网下载的速度实在太慢了!!!!!!!!!!!

我的环境:win7;我下载了Python2.7,32位以及Python3.6,32位


python程序化股票分析

R版——Python小白社群之程序化股票分析
Python版——Python小白社群之python分析股票的买点来挣钱


一眼看到股票买卖点

python大大提供的代码前几行是这样的:

import sys
import os
reload(sys)
sys.setdefaultencoding('utf-8')

因为我用的python3,前面几行需要做出修改,不然会出现AttributeError,NameError不断出错,修改后代码如下:

#!/usr/bin/python
# -*- encoding: utf-8
import sys
import importlib
importlib.reload(sys)

import matplotlib as mpl
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
cn=1
cnb=1
def rowIndex(row):
    global plt,cn,cnb
    buyt=0.5
    buyb=0.5
    if row.signal> 0:
       plt.annotate(u'买', xy=(row.date_o, row.signal),arrowprops=dict(facecolor='red', shrink=0.05))
       if cn==1:
           buyt=1
           cn = -1
       else:
           buyt=0.5
           cn=1
       plt.annotate(str(row.date_o).replace("-","")[2:8], xytext=(row.date_o, row.signal+buyt), xy=(row.date_o, row.signal+0.5),arrowprops=dict(facecolor='red', shrink=0.5))


    if row.signal < 0:
       plt.annotate(u'卖', xy=(row.date_o, row.signal))
       if cnb==1:
           buyb=1
           cnb = -1
       else:
           buyb=0.5
           cnb=1
       plt.annotate(str(row.date_o).replace("-","")[2:8], xytext=(row.date_o, row.signal-buyb), xy=(row.date_o, row.signal+0.5),arrowprops=dict(facecolor='red', shrink=0.5))

if __name__ == "__main__":
    mpl.rcParams['font.sans-serif'] = [u'simHei']
    mpl.rcParams['axes.unicode_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.grid(b=True)
    plt.show()

上一篇下一篇

猜你喜欢

热点阅读