from tkinter import *
from tkinter import messagebox
import tkinter.ttk as ttk
import test_support
import datetime
from BotGetData import BotGetData
from botstrategy import BotStrategy
from matplotlib import pyplot as plt
from botChart import botChart
from botlog import BotLog
from AutoScroll import *
import matplotlib.pyplot as plt
import matplotlib
matplotlib.use('TkAgg')
import colorama
import crayons
import warnings
warnings.filterwarnings("ignore")
colorama.init()
def vp_start_gui():
'''Starting point when module is the main routine.'''
global val, w, root
root = Tk()
top = Trading_Gui (root)
test_support.init(root, top)
root.mainloop()
w = None
def create_Trading_Gui(root, *args, **kwargs):
'''Starting point when module is imported by another program.'''
global w, w_win, rt
rt = root
w = Toplevel (root)
top = Trading_Gui (w)
test_support.init(w, top, *args, **kwargs)
return (w, top)
def destroy_Trading_Gui():
global w
w.destroy()
w = None
def clear_all():
gl = globals().copy()
for var in gl:
if var[0] == '_': continue
if 'func' in str(globals()[var]): continue
if 'module' in str(globals()[var]): continue
del globals()[var]
class Trading_Gui:
def __init__(self, top=None):
'''This class configures and populates the toplevel window.
top is the toplevel containing window.'''
_bgcolor = '#d9d9d9' # X11 color: 'gray85'
_fgcolor = '#000000' # X11 color: 'black'
_compcolor = '#d9d9d9' # X11 color: 'gray85'
_ana1color = '#d9d9d9' # X11 color: 'gray85'
_ana2color = '#d9d9d9' # X11 color: 'gray85'
self.root = root
self.style = ttk.Style()
self.style.theme_use("vista")
self.style.configure('.',background=_bgcolor)
self.style.configure('.',foreground=_fgcolor)
self.style.configure('.',font="TkDefaultFont")
self.style.map('.',background= [('selected', _compcolor), ('active',_ana2color)])
self.strategy= []
self.showChart = False
self.startTrading = False
self.closeAll= False
self.stopRunning= False
self.numberOfExecutions= 0
self.numberOfTrades = 0
self.output = BotLog()
self.liveChartObject= []
self.CheckVar = IntVar()
top.geometry("990x518+446+155")
top.title("Trading Gui")
top.configure(background="#d9d9d9")
self.TFrame1 = ttk.Frame(top)
self.TFrame1.place(relx=0.01, rely=0.02, relheight=0.98, relwidth=0.11)
self.TFrame1.configure(relief=GROOVE)
self.TFrame1.configure(borderwidth="2")
self.TFrame1.configure(relief=GROOVE)
self.TFrame1.configure(width=95)
self.Run = ttk.Button(self.TFrame1, command=self.main)
self.Run.place(relx=0.11, rely=0.07, height=35, width=76)
self.Run.configure(takefocus="")
self.Run.configure(text='''Run''')
self.Run.configure(width=76)
self.Stop = ttk.Button(self.TFrame1, command=self.stopRun)
self.Stop.place(relx=0.11, rely=0.17, height=35, width=76)
self.Stop.configure(takefocus="")
self.Stop.configure(text='''Stop''')
self.Stop.configure(width=76)
self.StartTrade = ttk.Button(self.TFrame1, command= self.useStartegy)
self.StartTrade.place(relx=0.11, rely=0.27, height=35, width=76)
self.StartTrade.configure(takefocus="")
self.StartTrade.configure(text='''StartTrade''')
self.StartTrade.configure(width=76)
self.StopTrade = ttk.Button(self.TFrame1, command=self.stopTrade)
self.StopTrade.place(relx=0.11, rely=0.37, height=35, width=76)
self.StopTrade.configure(takefocus="")
self.StopTrade.configure(text='''StopTrade''')
self.StopTrade.configure(width=76)
self.ShowChart = ttk.Button(self.TFrame1, command= self.chartOpen)
self.ShowChart.place(relx=0.11, rely=0.47, height=35, width=76)
self.ShowChart.configure(takefocus="")
self.ShowChart.configure(text='''ShowChart''')
self.ShowChart.configure(width=76)
self.CloseChart = ttk.Button(self.TFrame1, command= self.chartClose)
self.CloseChart.place(relx=0.11, rely=0.57, height=35, width=76)
self.CloseChart.configure(takefocus="")
self.CloseChart.configure(text='''CloseChart''')
self.CloseChart.configure(width=76)
self.ClosePos = ttk.Button(self.TFrame1, command= self.closeAllPositions)
self.ClosePos.place(relx=0.11, rely=0.67, height=35, width=76)
self.ClosePos.configure(takefocus="")
self.ClosePos.configure(text='''ClosePos''')
self.CheckVar.set(1)
self.SaveTrades = Checkbutton(self.TFrame1, text="SaveHistory", variable=self.CheckVar, bg=_bgcolor)
self.SaveTrades.place(relx=0.11, rely=0.77, height=35, width=80)
self.Exit = ttk.Button(self.TFrame1, command= self.CloseWindow)
self.Exit.place(relx=0.11, rely=0.9, height=35, width=76)
self.Exit.configure(takefocus="")
self.Exit.configure(text='''Exit''')
self.Exit.configure(width=76)
self.ticker = Entry(self.TFrame3)
self.ticker.insert(END, str("USDT_BTC"))
self.ticker.place(relx=0.07, rely=0.18, relheight=0.44, relwidth=0.09)
self.ticker.configure(font=('Helvetica', 10))
self.ticker.configure(background="white")
self.ticker.configure(font="TkTextFont")
self.ticker.configure(foreground="black")
self.ticker.configure(highlightbackground="#d9d9d9")
self.ticker.configure(highlightcolor="black")
self.ticker.configure(insertbackground="black")
self.ticker.configure(selectbackground="#c4c4c4")
self.ticker.configure(selectforeground="black")
self.ticker.configure(takefocus="0")
self.StopLossEdge = Entry(self.TFrame3)
self.StopLossEdge.insert(END, str(10))
self.StopLossEdge.place(relx=0.28, rely=0.18, relheight=0.44, relwidth=0.09)
self.StopLossEdge.configure(font=('Helvetica', 10))
self.StopLossEdge.configure(background="white")
self.StopLossEdge.configure(font="TkTextFont")
self.StopLossEdge.configure(foreground="black")
self.StopLossEdge.configure(highlightbackground="#d9d9d9")
self.StopLossEdge.configure(highlightcolor="black")
self.StopLossEdge.configure(insertbackground="black")
self.StopLossEdge.configure(selectbackground="#c4c4c4")
self.StopLossEdge.configure(selectforeground="black")
self.StopLossEdge.configure(takefocus="0")
self.EntryEdge = Entry(self.TFrame3)
self.EntryEdge.insert(END, str(1))
self.EntryEdge.place(relx=0.47, rely=0.15, relheight=0.44, relwidth=0.09)
self.EntryEdge.configure(background="white")
self.EntryEdge.configure(font="TkTextFont")
self.EntryEdge.configure(foreground="black")
self.EntryEdge.configure(highlightbackground="#d9d9d9")
self.EntryEdge.configure(highlightcolor="black")
self.EntryEdge.configure(insertbackground="black")
self.EntryEdge.configure(selectbackground="#c4c4c4")
self.EntryEdge.configure(selectforeground="black")
self.EntryEdge.configure(takefocus="0")
self.OpenTradesLimit = Entry(self.TFrame3)
self.OpenTradesLimit.insert(END, str(4))
self.OpenTradesLimit.place(relx=0.69, rely=0.15, relheight=0.44, relwidth=0.09)
self.OpenTradesLimit.configure(background="white")
self.OpenTradesLimit.configure(font="TkTextFont")
self.OpenTradesLimit.configure(foreground="black")
self.OpenTradesLimit.configure(highlightbackground="#d9d9d9")
self.OpenTradesLimit.configure(highlightcolor="black")
self.OpenTradesLimit.configure(insertbackground="black")
self.OpenTradesLimit.configure(selectbackground="#c4c4c4")
self.OpenTradesLimit.configure(selectforeground="black")
self.OpenTradesLimit.configure(takefocus="0")
self.Maintenance = Entry(self.TFrame3)
self.Maintenance.insert(END, str(1))
self.Maintenance.place(relx=0.89, rely=0.15, relheight=0.44, relwidth=0.09)
self.Maintenance.configure(background="white")
self.Maintenance.configure(font="TkTextFont")
self.Maintenance.configure(foreground="black")
self.Maintenance.configure(highlightbackground="#d9d9d9")
self.Maintenance.configure(highlightcolor="black")
self.Maintenance.configure(insertbackground="black")
self.Maintenance.configure(selectbackground="#c4c4c4")
self.Maintenance.configure(selectforeground="black")
self.Maintenance.configure(takefocus="0")
self.style.configure('Treeview.Heading', font="TkDefaultFont")
self.Scrolledtreeview1 = ScrolledTreeView(top)
self.Scrolledtreeview1.place(relx=0.15, rely=0.23, relheight=0.28, relwidth=0.6)
self.Scrolledtreeview1.configure(columns="Col1 Col2 Col3 Col4 Col5")
self.Scrolledtreeview1.configure(takefocus="0")
self.Scrolledtreeview1.heading("#0",text="Id")
self.Scrolledtreeview1.heading("#0",anchor="center")
self.Scrolledtreeview1.column("#0",width="35")
self.Scrolledtreeview1.column("#0",minwidth="20")
self.Scrolledtreeview1.column("#0",stretch="1")
self.Scrolledtreeview1.column("#0",anchor="w")
self.Scrolledtreeview1.heading("Col1",text="Time")
self.Scrolledtreeview1.heading("Col1",anchor="center")
self.Scrolledtreeview1.column("Col1",width="150")
self.Scrolledtreeview1.column("Col1",minwidth="20")
self.Scrolledtreeview1.column("Col1",stretch="1")
self.Scrolledtreeview1.column("Col1",anchor="w")
self.Scrolledtreeview1.heading("Col2",text="Symbol")
self.Scrolledtreeview1.heading("Col2",anchor="center")
self.Scrolledtreeview1.column("Col2",width="80")
self.Scrolledtreeview1.column("Col2",minwidth="20")
self.Scrolledtreeview1.column("Col2",stretch="1")
self.Scrolledtreeview1.column("Col2",anchor="w")
self.Scrolledtreeview1.heading("Col3",text="Side")
self.Scrolledtreeview1.heading("Col3",anchor="center")
self.Scrolledtreeview1.column("Col3",width="80")
self.Scrolledtreeview1.column("Col3",minwidth="20")
self.Scrolledtreeview1.column("Col3",stretch="1")
self.Scrolledtreeview1.column("Col3",anchor="w")
self.Scrolledtreeview1.heading("Col4",text="Price")
self.Scrolledtreeview1.heading("Col4",anchor="center")
self.Scrolledtreeview1.column("Col4",width="80")
self.Scrolledtreeview1.column("Col4",minwidth="20")
self.Scrolledtreeview1.column("Col4",stretch="1")
self.Scrolledtreeview1.column("Col4",anchor="w")
self.Scrolledtreeview1.heading("Col5",text="Pnl")
self.Scrolledtreeview1.heading("Col5",anchor="center")
self.Scrolledtreeview1.column("Col5",width="80")
self.Scrolledtreeview1.column("Col5",minwidth="20")
self.Scrolledtreeview1.column("Col5",stretch="1")
self.Scrolledtreeview1.column("Col5",anchor="w")
self.menubar = Menu(top,font="TkMenuFont",bg='#bef7bb',fg=_fgcolor)
top.configure(menu = self.menubar)
self.Label1 = Label(top)
self.Label1.place(relx=0.15, rely=0.17, height=25, width=595)
self.Label1.configure(font=('Helvetica', 10))
self.Label1.configure(anchor=N)
self.Label1.configure(background="#b4c2fe")
self.Label1.configure(compound="left")
self.Label1.configure(cursor="bottom_left_corner")
self.Label1.configure(disabledforeground="#a3a3a3")
self.Label1.configure(foreground="#000000")
self.Label1.configure(justify=LEFT)
self.Label1.configure(relief=RIDGE)
self.Label1.configure(text='''Opened Positions''')
self.Label1.configure(textvariable=test_support)
self.Label1.configure(width=459)
vp_start_gui()