量化交易学习笔记七 - matplotlib、tkinter做价量关系分析图

感觉一直在加工完善分析工具而不是做量化学习,路有点走偏。。

说下最近在做什么事:

1.之前调试的时候每个策略是存为一个py文件,import导入使用的。这次改成下拉框选择好以后动态导入

 核心代码如下:

import importlib

_mdfunc = importlib.import_module(_importFileName)
_mdfunc.analysisfiles(savepath)    
#analysisfiles()为模块定义的方法,每个策略文件里都有定义同样名字的这个方法做为入口

2.做一个查看各个股票价量关系的工具,类似下图

数据源是新浪抓下来的日k或者周k数据保存为csv,之前新浪这边笔记中有提及。

按按钮可以浏览文件夹内这些股票数据转成图形。蓝线是价格,红线是量。坐标是百分比。整个数据周期内最大价格为100%。最大量为100%,两线叠加。

画图是用matplotlib,画在tkinter窗体内,用tk的按钮做交互。

这次为了解决参数问题使用了类的方式

'''
价量关系图
'''
import os
import pandas as pd
import matplotlib

matplotlib.use('TkAgg') #配置后端渲染器
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import tkinter as tk

class myDraw:
    def __init__(self,_win="",_path=""):
        #定义画布
        self._f = Figure(figsize=(5, 4), dpi=100)
        self.f_plot = self._f.add_subplot(111)
        #画布关联窗口
        self._canvs = FigureCanvasTkAgg(self._f, _win)
        self._canvs.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)
        self._path = _path
        
        #遍历文件
        self._files = os.listdir(_path)
        print("共", len(self._files), "图像可预览...")
        
        #自定义文件指针
        self._now = 0
        self._filename = ""
        self._win = _win

    def drawPic(self):
        self._filename = self._files[self._now]
        #排除非数据类型文件
        if self._filename[-4:] != ".csv":
            return
        self._win.title("价量关系分析" + self._filename[:-4])

        self.f_plot.clear()
        _pd = pd.read_csv(self._path + "/" + self._filename)
        _pd = _pd.sort_values('trade_date', ascending=True)  # 按日期升序排列
        _maxPrice = max(_pd['close'])
        _maxVol = max(_pd['vol'])
        
        #增加价格线和成交量线数据
        _pd['pline'] = _pd.apply(lambda x: round(x['close'] / _maxPrice, 2), axis=1)
        _pd['vline'] = _pd.apply(lambda x: round(x['vol'] / _maxVol, 2), axis=1)
        y1 = list(_pd['pline'])
        y2 = list(_pd['vline'])
        x = list(_pd.index)
        self.f_plot.plot(x, y1, color='b')
        self.f_plot.plot(x, y2, color='r')
        self._canvs.draw()

    def next(self):
        if self._now<len(self._files):
            self._now += 1
            self.drawPic()

    def prev(self):
        if self._now>0:
            self._now -= 1
            self.drawPic()

def analysisfiles(_path=""):
    #遍历目录
    if _path == "":
        print("目录未设定")
        return

    _selfWin = tk.Tk()
    _selfWin.title("价量关系分析")
    _selfWin.geometry('800x600')

    md = myDraw(_selfWin,_path)
    md.drawPic()

    tk.Button(_selfWin, text='上一个', command=md.prev).pack(fill=tk.BOTH,side=tk.LEFT)
    tk.Button(_selfWin, text='下一个', command=md.next).pack(fill=tk.BOTH,side=tk.RIGHT)

    _selfWin.mainloop()





这里股友朋友可以讨论下价量关系可以从什么角度去研究好?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值