《中文Python穿云箭量化平台》是纯Python开发的量化平台,因此其中很多Python模块,我们可以自己设计新的量化工具,例如自己新的行情软件、新的量化平台、以及各种量化研究工具。
穿云箭自带指标公式源码运行模块,可以为其他量化平台提供量化功能扩展或量化功能增强效果。
《中文Python穿云箭量化平台》本身是中文Python关键字的Python集成开发工具,支持纯英文Python,同时支持中文Python。
《中文Python穿云箭量化平台》是自带Tkinter模块设计的,因此可以很方便建立新的应用工具窗口。
Tkinter图形设计过程。
1、建立主窗口,root = tk.Tk()。
2、在主窗口中放置各种 tk.Frame,tk.PanedWindow等容器,这些容器可以嵌套。
3、在这些容器中可以放置其他小部件,例如Text,Button,Label等部件。
4、根据需要可以放置窗口菜单,工具栏,弹出菜单,状态栏等等。
《中文Python穿云箭量化平台》针对Tkinter模块做了二次开发,增加了很多新工具,例如工具栏,皮肤,状态栏,可调部件,以及网页浏览,表格浏览,行情K线等模块工具。我们后面将逐步介绍,利用这些工具可以建立自己的量化平台软件和行情软件。
假定想定做一个自己的量化工具,这个工具可以实现Python代码编辑和运行,不需要利用其他的Python代码编辑器。
只需要下面几行,就能实现自己的Python代码编辑及运行调试等功能。
import os,sys
import tkinter as tk
import HP_tka as htk
import HP_ide as ide
global mroot
mroot=root = tk.Tk()
root.title('我的量化平台')
root.geometry('1200x800+200+100')
def closewindow():
root.destroy()
#建立菜单
menus = [['文件',['执行程序','-','新建','打开','运行','-','保存','另存为']],\
['编辑',['撤销','重做','-','剪切','复制','粘贴','-','全选']],\
['程序',['运行','运行插件','转中文','转英文']],\
['项目',['项目目录','系统设置']],\
['帮助',['关于软件','项目缩略图','退出']]]
mymenu=htk.windowMenu(root,menus=menus)
#在左右可调区域中创建,可上下调整区域paned2
paned2 = tk.PanedWindow(root,orient=tk.VERTICAL, showhandle=True, sashrelief=tk.SUNKEN,sashwidth=1,bg='#2a2a2a')
paned2.pack(expand=1,fill=tk.BOTH)
paned2.config(sashwidth=3, sashrelief=tk.RAISED)
ucode=ide.Codeedit(paned2,mroot=mroot,fontsize=14,ispop=False) #代码编辑框
paned2.add(ucode)
paned3 = tk.PanedWindow(paned2,orient=tk.VERTICAL, showhandle=True, sashrelief=tk.SUNKEN,bg='#2a2a2a',sashwidth=1)
paned2.add(paned3)
umess=ide.PythonCMD(paned3,ipy="ipython",py="ipython ",runx=True,fontsize=12,bg='#5a5a5a',heigh=100)
umess.pack(expand=1,fill=tk.BOTH)
htk.ttmsg=umess.text #绑定信息输出变量,
ucode.outmess=htk.ttmsg #设置代码输出信息框
status=htk.StatusBar(root,bg='#8a8a8a') #建立状态栏
status.pack(side=tk.BOTTOM, fill=tk.X) #把状态栏放到窗口底部
status.clear()
status.text(2,'超越!是我们的每一步!')
status.text(3,'版权所有')
status.text(4,'侵权必究')
status.text(5,'设计:小白')
status.config(0,color='#ffffff')
status.config(1,color='#ffffff') #改变状态栏2信息颜色
status.config(2,color='#ffffff')
status.config(3,color='#ffffff') #改变状态栏4信息颜色
status.config(4,color='#ffa500') #改变状态栏5信息颜色
status.config(5,color='#ffa500')
status.Sizegrip.configure(style="xb.TSizegrip")
root.mainloop()
程序运行出现下面窗口。
如果想要美观,需要熟悉ttk.Style(),通过修改属性,来进一步美化。
我们在编辑其中运行一段Python代码测试一下。
# -*- coding: utf-8 -*-
# KDJ指标演示
import os,sys
sys.path.append(os.path.abspath('.'))
sys.path.append(os.path.abspath('..'))
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import HP_tdx as htdx
import HP_formula as gs
from HP_formula import *
#连接行情主站
htdx.TdxInit(ip='40.73.76.10',port=7709)
code='688212'
#获取日线数据,800条数据
df=htdx.get_bars(nCategory=4,nMarket = -1,code=code,start='2021-05-01',end='2022-09-29',\
index=False,autype='qfq')
mydf=initmydf(df) ##初始化mydf表
mydf['K'],mydf['D'],mydf['J']=KDJ(9,3,3)
mydf['S80']=80 #增加上轨80轨迹线
mydf['X20']=20 #增加下轨20轨迹线
mydf['buy']=CROSS(mydf['K'],mydf['D'])*10
mydf['sell']=IF(CROSS(mydf['D'],mydf['J'])>0,0,10)
mydf=mydf.tail(200) #显示最后100条数据线
##下面是绘线语句
mydf.S80.plot.line()
mydf.X20.plot.line()
mydf.K.plot.line(legend=True)
mydf.D.plot.line(legend=True)
mydf.J.plot.line(legend=True)
print(mydf)
plt.show()
程序运行结果如下:
这只是一个小功能,这个窗口中可以执行能在VScode和Pychram下运行的任何Python源代码程序。
我们后面设想实现一个股票行情软件。
好了,欢迎继续关注我的博客。后面我们介绍更多的二次开发技术。
超越自己是我的每一步!我的进步就是你的进步!