感觉一直在加工完善分析工具而不是做量化学习,路有点走偏。。
说下最近在做什么事:
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()
这里股友朋友可以讨论下价量关系可以从什么角度去研究好?