自己做量化交易软件(14)通通量化AI框架的用户插件设计指南-通通框架遥控器设计

117 篇文章 124 订阅
116 篇文章 47 订阅

自己做量化交易软件(14)通通量化AI框架的用户插件设计指南-通通框架遥控器设计
既然通通量化AI框架是开放平台,用户怎么来设计自己的插件和回测程序呢?
用户的简单语句可以直接在信息窗,对话界面输入。
程序输入格式,第1行只有一个字符>,第2行开始输入python的命令或程序。
通通量化AI框架除了自己知识库AI外,还有两个外部聊天机器人,通通和茉莉。我们在对话框输入程序,让2个机器人互相聊天。这个程序我们放到help目录中了,这个程序不能执行,只能复制程序段到对话框中。下面看看运行结果。
在这里插入图片描述
下面我们介绍通通AI量化框架的整体部件,这些部件用程序怎么来控制或获取信息或修改。
在这里插入图片描述
上图我们介绍了通通AI量化框架的部件和获取的全局变量。用户通过这些全局变量的定义,来改变通通框架的工作状态。
为了说明这个问题,也为了我们用户学习掌握窗口布局,我们设计一个通通AI量化框架的遥控器程序,这个程序可以通过按钮,来对通通AI量化框架操做,例如改变窗口,输入对话信息,以及关闭通通AI量化框架主程序等等工作。
在这里插入图片描述
我们可以看到右图通通框架遥控器。
这个遥控器是半透明的窗口,最下面可以关闭窗口边框。
中间的按钮可以对通通AI量化框架操作,以及输入对话信息。
因为已经做成完整的功能了,算是一个用户学习的插件,这个程序放到view目录中了。程序名称:通通框架遥控器.py
因为代码已经写的很详细了,控制变量可以参考前面的图片。如果看不懂,可以在群中咨询。下面给出全部[通通框架遥控器.py]插件的代码。

# -*- coding: utf-8 -*-
#通通AI量化框架 演示
# 通通AI量化框架遥控器
#日期:2018-11-04
#QQ:2775205
#QQ群:524949939

import tkinter as tk
import HP_global as g
from HP_formula import *
from  HP_edit import *
import  HP_tk as myw
from  HP_robot import *


class mywin(Frame):
    def __init__(self, master=None):  
        self.master = master
        Frame.__init__(self, master.top)  
        self.root = master.top
        self.mym=None
        self.root.attributes('-topmost', 1)
        self.flag=True
        self.createPage()
         
    def createPage(self): 
        def closew1():   #关闭遥控器窗口
            self.root.destroy()

        def closett():   #关闭通通量化主程序
            g.G_root.quit()
            g.G_root.destroy()   
        
        def overturn():
            #self.master.overturn()
            self.root.update_idletasks()
            self.root.overrideredirect(self.flag)
            self.flag=not self.flag #switch

        
        def btn1cmd():
            g.tabControl.select(g.tab1)

        def btn2cmd():
            g.tabControl.select(g.tab2)

        def btn3cmd():
            g.tabControl.select(g.tab3)

        def btn4cmd():
            g.tabControl.select(g.tab4)

        def btn5cmd():
            g.tabControl.select(g.tab5)

        def btn6cmd():
            g.tabControl.select(g.tab6)


        lab1=tk.Label(self.root, text='通通框架遥控器',font = 'Helvetica -24 bold',bg='#1E488F',fg='white').grid(row=0, column=0,columnspan=2)
        
        # 按钮  (Button)
        btn1 = tk.Button(self.root , width=10,text='信息窗' ,command=btn1cmd).grid(row=1, column=0, padx=4, pady=4, sticky=tk.E)
        btn2 = tk.Button(self.root, width=10,text='综合信息' ,command=btn2cmd).grid(row=1, column=1, padx=4, pady=4, sticky=tk.E)
        
        btn3 = tk.Button(self.root, width=10,text='技术分析' ,command=btn3cmd).grid(row=2, column=0, padx=4, pady=4, sticky=tk.E)
        btn4 = tk.Button(self.root, width=10,text='编写代码' ,command=btn4cmd).grid(row=2, column=1, padx=4, pady=4, sticky=tk.E)
        
        btn5 = tk.Button(self.root, width=10,text='模拟回测' ,command=btn5cmd).grid(row=3, column=0, padx=4, pady=4, sticky=tk.E)
        btn6 = tk.Button(self.root , width=10,text='双色球' ,command=btn6cmd).grid(row=3, column=1, padx=4, pady=4, sticky=tk.E)
        
        self.mym = tk.Text(self.root,bg='#FFF8DC', width=25)
        self.mym.grid(row=4, column=0,rowspan=1,columnspan=2, sticky=tk.E)

        def btn7cmd():
            self.mym.delete(1.0,END)

        def sendmessage(): 
            g.tabControl.select(g.tab1)
            msgcontent = '我:' + time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) + '\n ' 
            g.ttmsg.insert(END, msgcontent, 'green') 
            xx=self.mym.get('0.0', END)
            g.ttmsg.insert(END, xx)
            self.mym.delete('0.0', END)
            txt=tt_robot(xx)
            if len(txt.strip())<1:
                g.ttmsg.see(END)
                return
            msgcontent = '通通:' + time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) + '\n ' 
            g.ttmsg.insert(END, msgcontent, 'green') 
            g.ttmsg.insert(END,txt+'\n','blue')
            g.ttmsg.see(END)
                        
        btn7 = tk.Button(self.root , width=10,text='清除信息' ,command=btn7cmd).grid(row=5, column=0, padx=4, pady=4, sticky=tk.E)
        btn8 = tk.Button(self.root , width=10,text='发送信息' ,command=sendmessage).grid(row=5, column=1, padx=4, pady=4, sticky=tk.E)
        
        btn9 = tk.Button(self.root , width=10,text='关闭遥控器' ,command=closew1).grid(row=6, column=0, padx=4, pady=4, sticky=tk.E)
        btn10 = tk.Button(self.root, width=10,text='关闭通通' ,command=closett).grid(row=6, column=1, padx=4, pady=4, sticky=tk.E)
        btn11 = tk.Button(self.root, width=20,text='开关遥控器边框' ,command=overturn).grid(row=7, column=0, padx=4, pady=4, columnspan=2)
                




#通通框架,弹出新窗口
##新建弹出窗口哦
window1 = tk.IntVar(g.G_root, value=0)
window1.set(1)
win_w=190  
win_h=580
w_title='通通框架遥控器'
w1 =myw.myWindow(g.G_root,w_title,win_w,win_h)

w1.top["bg"]='#1E488F'
w1.top.attributes("-alpha",0.8)   #透明度从0-1,1是不透明,0是全透明
myw.setCenter(w1.top,win_w,win_h)  #移动新窗口到屏幕中央
myw.reSizable(w1.top,False, False)   #允许改变窗口大小
myw1=mywin(w1)
window1.set(0)

后面有时间再介绍更多插件程序的设计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

荷蒲

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

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

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

打赏作者

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

抵扣说明:

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

余额充值