零基础搭建量化投资系统—以Python为基础:视频课件及代码(3)

mac2025-03-28  12

零基础搭建量化投资系统—以Python为基础:视频课件及代码(3) 自编股票指标公式及显示

import tkinter as tk #导入Tkinter import tkinter.ttk as ttk #导入Tkinter.ttk import tkinter.tix as tix #导入Tkinter.tix import HP_tk as htk #导入htk from PIL import Image, ImageTk, ImageDraw, ImageFont from matplotlib import ticker as mticker import time import HP_view as hpv import matplotlib.pyplot as plt from HP_formula import * #使用HP_formula公式基本函数库 #建立主窗口 root=htk.MainWindow(title='自定义公式演示',x=100,y=200,w=800, h=600) root.iconbitmap('ico/py.ico') #设置应用程序图标 root.SetCenter() #移动到屏幕中央 #把window划分为左右2个子容器,左为v1,右为v2 v1=tk.Frame(root,width = 200,bg='blue') v1.pack(side=tk.LEFT,fill=tk.Y) v2=tk.Frame(root,bg='yellow') v2.pack(side=tk.RIGHT, fill=tk.BOTH, expand=1) #《零基础搭建量化投资系统—以Python为基础》树中示例 8-23 tree=ttk.Treeview(v1) myid=tree.insert("",0,"指标",text="指标",values=("1"),open=True) myidx1=tree.insert(myid,0,"技术指标",text="技术指标",values=("2")) myidx2=tree.insert(myid,1,"交易系统",text="交易系统",values=("3")) myidx3=tree.insert(myid,2,"条件选股",text="条件选股",values=("4")) myidx4=tree.insert(myid,3,"五彩 K 线",text="五彩 K 线",values=("5")) myidy=tree.insert("",1,"工具",text="工具",values=("6"),open=True) myidy1=tree.insert(myidy,0,"系统设置",text="系统设置",values=("7")) myidy1=tree.insert(myidy,0,"指标排序",text="指标排序",values=("8")) tree.pack(side=tk.TOP,fill=tk.BOTH, expand=1) tree.selection_set("指标") ds='2018-01-01' #行情开始日期 de=time.strftime('%Y-%m-%d',time.localtime(time.time())) #行情结束日期 ###--------------------------------------------------------------------------- #本部分四选一 #二. #小白离线行情,需要xbdata数据 import tushare as ts #小白离线行情,需要xbdata数据 #读取股票数据 df2a=ts.get_k_data('300202',ktype='D',start=ds,end=de,index=False,autype='qfq') #六均线3指标图,K线算一个指标 ax,ax2=hpv.axview3x2(v2,df2a,'300202聚龙股份 六均线K线演示',6) #在ax区绘制荷蒲操盘线HPCPX def draw_HPCPX(ax1,mydf): CLOSE=mydf['close'] LOW=mydf['low'] HIGH=mydf['high'] OPEN=mydf['open'] VOL=mydf['volume'] df=mydf.copy() def HPCPX(): S0=(CLOSE+OPEN+LOW+HIGH)/4 S1=EMA(SLOPE(S0,5),60) S2=EMA(S1,20) S3=IF(S1>=0,S1,DRAWNULL()) S4=IF(S1>S2 ,S3,DRAWNULL()) return S1,S2,S4 #使用KDJ指标,返回K,D,J序列。 x,y,z=HPCPX() df = df.join(pd.Series( x,name='CPX')) df = df.join(pd.Series( y,name='Y')) df = df.join(pd.Series( z,name='Z')) df['Y0']=0 #开始绘图 ax1.plot(df.date.values,df.CPX.values, color= 'green', lw=2,label="荷蒲操盘线") ax1.plot(df.date.values, df.Z.values, color= 'red', lw=2) ax1.plot(df.date.values, df.Y0.values, color= 'yellow', lw=2) text = ax1.text(0.05, 0.05, '红线持股!绿线持币!', fontdict={'size': 20},color='yellow') plt.ylabel('HPCPW', color='white') plt.legend() # 显示图中右上角的提示信息。 plt.gca().yaxis.set_major_locator(mticker.MaxNLocator(prune='upper')) ax1.xaxis.set_major_locator(mticker.MaxNLocator(8)) #x轴分成几等分 ax1.yaxis.set_major_locator(mticker.MaxNLocator(nbins=3, prune='upper')) ax1.grid(True, color='r') ax1.tick_params(axis='x', colors='white') ax1.tick_params(axis='y', colors='white') plt.subplots_adjust(left=.075, bottom=.08, right=.96, top=.96, wspace=.15, hspace=0.1) plt.close() # 关窗口 return ax1 #调用自定义公式 ax3=draw_HPCPX(ax2,df2a) root.mainloop() #进入Tkinter消息循环

最新回复(0)