【Python】 利用Matplotlib验证进出场点

更新补充

数据来源请大家参考文章:原始数据
文章详细介绍了如何爬取所需数据,并保存至本地,另外此文操作的数据还需股价信息而链接(原始数据)所抓取的数据只是一部分,股价信息还未合并,待我找时间再全部更新补充出来吧,大家先谅解哈~~大家也可以自己爬取合并后再结合本文进行处理啊

===========================================很皮的分隔线================================


这是很久以前利用matplotlib绘制的图简单验证相关标的其LSI指标的吻合程度,当时写的过程比较粗糙,后面再择机修改吧 ~~ 各位可以大概参考参考~

准备工作

-  已经将融资融券标的的历史数据(包括股价信息)抓取到本地
-  已经将数据预处理过
-  所需库:numpy、matplotlib

正式处理

- 字体设置

提前考虑到后面可能会用到汉字做,故先设置字体

font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14) #可自定义

构建LSI指标  (细看文章链接:从融资融券数据挖掘个股绝佳买点

LSI = [(float(x[3])*float(x[7])*100/float(x[6])+float(x[2]))/(float(x[4])*float(x[7])*100/float(x[6])+float(x[1]) +float(x[3]) * float(x[7]) * 100 / float(x[6]) + float(x[2]))for x in need_list[1:]][::-1]

- 创建一个figure对象

fig = plt.figure()
ax = plt.gca()

- 图的绘制和处理

ax1 = fig.add_subplot(111)
ax1.plot(LSI, 'r', label=u'LSI指标', linewidth=4)
ax1.legend(loc=2, prop=font)
ax1.set_ylabel(u'LSI刻度', fontproperties=font)

plt.title('%s'%code)

plt.grid()  # 显示网格
plt.subplots_adjust(bottom=0.16)  # 图的底边距

ax2 = ax1.twinx()
ax2.plot(MP, 'b', label=u'标的均价', linewidth=2)
ax2.set_ylabel(u'标的刻度', fontproperties=font)
ax2.legend(loc=1, prop=font)

- 根据需要保存至本地

plt.savefig('...\\png_result\%s.png'%code)


效果展示



-  当然,上面的只是作图过程中的几个相对重要的点,丑姑娘总是要见人的,将完整源码附在后面
# coding:utf-8
# author:buracag_mc

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

# =====================设置字体====================#
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)

def draw(code):
    f = open('...\result\\%s.csv'%code, 'r')
    linelist = f.readlines()
    f.close()

    # ==================后续做的list===================#
    need_list = [line.strip().split(',') for line in linelist]
    years = [x[0] for x in need_list[1:]]
    # print years
    LSI = [(float(x[3])*float(x[7])*100/float(x[6])+float(x[2]))/(float(x[4])*float(x[7])*100/float(x[6])+float(x[1])
                  +float(x[3]) * float(x[7]) * 100 / float(x[6]) + float(x[2]))for x in need_list[1:]][::-1]
    MP = [float(x[7]) * 100 / float(x[6]) for x in need_list[1:]][::-1]

    # ======创建一个figure对象======#
    fig = plt.figure()
    ax = plt.gca()
    lens = int(len(years))
    # ======x轴间隔五个显示时期,根据实际选择=====#
    k = 0
    while k in range(0, lens):
        if k % 5 != 0:
            years[k] = ''
        k += 1
    plt.xticks(np.linspace(0, lens))          # x轴上还是有len(years)个刻度
    ax.set_xticklabels(years, rotation=90)    # 旋转90度,实际选择
    # ax.xaxis.set_major_locator( MultipleLocator(5)) 主刻度
    # ax.xaxis.set_minor_locator( MultipleLocator(1)) 次刻度

    ax1 = fig.add_subplot(111)
    ax1.plot(LSI, 'r', label=u'LSI指标', linewidth=4)
    ax1.legend(loc=2, prop=font)
    ax1.set_ylabel(u'LSI刻度', fontproperties=font)
    plt.title('%s'%code)
    plt.grid()  # 显示网格
    plt.subplots_adjust(bottom=0.16)  # 图的底边距

    ax2 = ax1.twinx()
    ax2.plot(MP, 'b', label=u'标的均价', linewidth=2)
    ax2.set_ylabel(u'标的刻度', fontproperties=font)
    ax2.legend(loc=1, prop=font)


    plt.savefig('...\\png_result\%s.png'%code)
    print '%s已经完成'%code

if __name__ == '__main__':
    list = [  ]      #stock_list
    for i in list:
        draw(i)

注意事项

-  最后,提醒一下:
    1. 大家将最后运行的list按需补上
    2. 数据数据当时是用的绝对路径,大家可自行修改








  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值