赞
踩
小白量化平台框架是本地化量化平台,用户的策略在用户自己电脑中执行,操作习惯仿股票软件,指标算法支持类通达信指标,回测也支持通达信大智慧等自定义股票格式。
小白量化平台框架是跨平台的,任何平台都能使用,但是要安装必要的支持模块。
(1)安装必要的包。
pygame,matplotlib,mpl_finance,PILlow,jieba
requests,bs4,sklearn,keras
(2)金融数据包
tushare,jqdatasdk,quantaxis,opendatatools,pytdx
安装好这些模块,我们的平台已经搭建好了。
小白全部模块以及全部代码随书
《零基础搭建量化投资系统――以Python为工具》下载。
书中提供的演示源码如下。
上面2套源代码随书下载。支持多种行情源。
作者又为读者设计了新一代小白量化平台系统,支持pytdx实时行情、期货等行情。
#框架中[增强插件]在view目录中
#框架中[用户程序]在user目录中
#股票代码框输入:fst分时图 rxt日线图 f10 F10信息
下面我们看看[日线图]插件的写法。
# -*- coding: utf-8 -*- #日线图.py # 显示日线图的模板 import tkinter as tk #导入Tkinter import tkinter.ttk as ttk #导入Tkinter.ttk import tkinter.tix as tix #导入Tkinter.tix import time import pandas as pd import numpy as np import HP_global as g import HP_data as hp from HP_view import * #菜单栏对应的各个子页面 import HP_tdx as htdx #系统设定了g.tab1--g.tab9,系统只是用了g.tab1--g.tab6 #控件结构 g.G_root -〉 g.tabControl -〉g.tab1 #增加tab,用add() #删除tab,用forget() #当然用户可以设置更多的tab窗口。必须使用全局变量g.变量名 #重复建立新tab窗会出错,所以我们先检测是否None,不是就先做删除旧tab窗口。 g.gtype=g.book_s.get() stockn=g.stock_i.get() stockn=stockn.strip() stockn=stockn.zfill(6) stock.set(stockn) g.stock=stockn ds=date_s.get() de=date_e.get() g.sday=ds.strip() g.eday=de.strip() df2=htdx.get_k_data(g.stock,ktype='D',start=g.sday,\ end=g.eday,index=False,autype='qfq') if g.tab3!=None: g.tabControl.forget(g.tab3) g.tab3=None #用户自建新画面 g.tab3 = tk.Frame(g.tabControl) g.tabControl.add(g.tab3, text='日线图') g.tabControl.select(g.tab3) axview3x(g.tab3,df2,t=g.stock+' '+g.stock_names[g.stock],n=2,f1='VOL',f2=g.gtype) g.tabControl.select(g.tab3) g.tabs=3
下面是KDJ回测代码。
# -*- coding: utf-8 -*- """ #功能:小白股票分析软件框架 回测工具 #版本:Ver1.00 #设计人:独狼荷蒲 #电话:18578755056 #QQ:2775205 #百度:荷蒲指标 #开始设计日期: 2018-07-08 #公众号:独狼股票分析 #使用者请同意最后<版权声明> #最后修改日期:2019年12月22日 """ global CLOSE,LOW,HIGH,OPEN,VOL ds=g.hcdate_s.get() #获取框架开始日期 de=g.hcdate_e.get() #获取框架结束日期 stockn=g.hcstock.get() #获取框架股票代码 df2=htdx.get_k_data(stockn,ktype='D',start=ds,end=de,index=False,autype='qfq') df3=df2 ##数据规格化 df3.dropna(inplace=True) mydf=df3.copy() CLOSE=mydf['close'] LOW=mydf['low'] HIGH=mydf['high'] OPEN=mydf['open'] VOL=mydf['volume'] C=mydf['close'] L=mydf['low'] H=mydf['high'] O=mydf['open'] V=mydf['volume'] ##KDJ交易策略 def KDJ(N=9, M1=3, M2=3): RSV = (CLOSE - LLV(LOW, N)) / (HHV(HIGH, N) - LLV(LOW, N)) * 100 K = SMA(RSV,M1,1) D = SMA(K,M2,1) J = 3*K-2*D return K, D, J k,d,j=KDJ(22,11,22) mydf = mydf.join(pd.Series( k,name='K')) mydf = mydf.join(pd.Series( d,name='D')) mydf = mydf.join(pd.Series( j,name='J')) mydf['S80']=80 #增加上轨80轨迹线 mydf['X20']=20 #增加下轨20轨迹线 mydf['Z50']=50 #增加中轨50轨迹线 ##下面开始生成RSI指标买卖点 ##买点J上穿数值20 b1=CROSS(mydf['J'],mydf['X20']) mydf = mydf.join(pd.Series( b1,name='B1')) ##卖点J下穿80 s1=CROSS(mydf['S80'],mydf['J']) #卖点J下穿50 s2=CROSS(mydf['Z50'],mydf['J']) #合并所有卖点信号 s3=s1 | s2 mydf = mydf.join(pd.Series( s1,name='S1')) mydf = mydf.join(pd.Series( s2,name='S2')) mydf = mydf.join(pd.Series( s3,name='S3')) g.tabControl.select(g.tab5) ##回测 tt=hpQuant() ##初始化类 tt.code=stockn #证券代码,必须输入 tt.stop_loss_on=False #关闭自动止损 df3=tt.Trade_testing(mydf,'B1','S3','HL') #开始回测 tt.PrintTrade() #打印交易过程 print('\n打印持仓信息') tt.PrintSecurity() #打印持仓信息 if g.UserCanvas!=None: g.UserPlot.cla() g.UserPlot.close() g.UserCanvas._tkcanvas.pack_forget() g.UserCanvas=None ######下面是绘图 # 开启一个双图例的窗口,定义为211和212 fig=plt.figure(2, figsize=(12,8), dpi=80) g.UserFig=fig g.UserPlot=plt ax1 = plt.subplot(211) ax2 = plt.subplot(212) # ax1(211窗口) plt.sca(ax1) #添加标题 ax_K(ax1,df3,stockn) plt.suptitle(stockn+' '+g.stock_names[stockn]+' KDJ回测结果') # ax2(212窗口) plt.sca(ax2) df3.HL.plot(color='orange', grid=True,label="获利") df3.B1.plot(color='red',label="$B$") df3.S3.plot(color='blue',label="$S$") plt.legend() # 显示图中右上角的提示信息。 ax2.grid(True) ax2.axhline(0, color='blue') plt.gca().yaxis.set_major_locator(mticker.MaxNLocator(prune='upper')) ax2.xaxis.set_major_locator(mticker.MaxNLocator(8)) #x轴分成几等分 ax2.yaxis.set_major_locator(mticker.MaxNLocator(nbins=3, prune='upper')) plt.close() canvas =FigureCanvasTkAgg(fig, master=g.UserFrame) canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1) g.UserCanvas=canvas canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=1)
独狼荷蒲qq:2775205
Python Tkinter小白量化群:524949939
电话微信:18578755056
微信公众号:独狼股票分析
其他QQ群:
PythonTkinterGUI : 517029284
Python学习交流: 647866213
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。