《中文Python穿云箭量化平台二次开发技术03》利用Tkinter高级模块设计自己策略代码编辑器及策略运行窗口

110 篇文章 121 订阅
108 篇文章 107 订阅

《中文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源代码程序。
我们后面设想实现一个股票行情软件。

好了,欢迎继续关注我的博客。后面我们介绍更多的二次开发技术。

超越自己是我的每一步!我的进步就是你的进步!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荷蒲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值