首页 > 其他分享 >onequant-pyautogui

onequant-pyautogui

时间:2023-12-25 23:34:53浏览次数:33  
标签:pyautogui onequant text self Algo file print root

import os
import time
import socket
from datetime import datetime
import datetime
# from wsgiref import headers

import pandas as pd
from cmath import isnan
import random
import csv
import copy
import codecs
from multiprocessing import Pool

import datetime
import json
import time
import requests
from tkinter import filedialog, messagebox
import tkinter as tk
import random
from tkinter.ttk import Combobox
from tkinter import messagebox
from tkinter import *
from tkinter.messagebox import *
from tkinter import font
import threading
import keyboard
import time


class Application(Frame):
    def __int__(self, master=None):
        super().__init__(master)
        self.master = master
        self.pack()
        # self.createWidget01()
        self.collect_Algo = []
        self.collect_Algo_param = {}
        self.running = False
        self.thread = None
        self.pythonGUI()

    def pythonGUI(self):
        # 登录客户端
        self.loginClient_var = IntVar()
        self.loginClient = Checkbutton(root, text="登录客户端", font=('仿宋体', 10, 'bold'), fg="blue",variable=self.loginClient_var)
        self.loginClient.place(x=5, y=7)
        Label(root, text="---------------------------------------------------------------------:", fg="orange",
              font=('仿宋体', 30, 'bold')).place(x=5, y=23)

        # Label(root, text="提示:必须选择至少一个算法", font=('仿宋体', 10, 'bold'), fg="red").place(x=5, y=5)
        self.smartOrder_var0 = IntVar()
        self.smartOrder_var1 = IntVar()
        self.smartOrder_var2 = IntVar()
        self.smartOrder_var3 = IntVar()
        self.smartOrder_var4 = IntVar()
        self.smartOrder_var5 = IntVar()
        self.smartOrder = Checkbutton(root, text='快捷交易:', font=('仿宋体', 10, 'bold'), fg="blue",
                                   variable=self.smartOrder_var0, onvalue=1, offvalue=0,
                                   command=self.smartOrderFun)
        self.smartOrder.place(x=5, y=60)
        self.smartOrder1 = Checkbutton(root, text="限价", font=('仿宋体', 10, 'bold'), fg="green",variable=self.smartOrder_var1)
        self.smartOrder1.place(x=100, y=60)
        self.smartOrder2 = Checkbutton(root, text="市价", font=('仿宋体', 10, 'bold'), fg="green",variable=self.smartOrder_var2)
        self.smartOrder2.place(x=180, y=60)
        self.smartOrder3 = Checkbutton(root, text="跟价", font=('仿宋体', 10, 'bold'), fg="green", variable=self.smartOrder_var3)
        self.smartOrder3.place(x=260, y=60)
        self.smartOrder4 = Checkbutton(root, text="金额", font=('仿宋体', 10, 'bold'), fg="green", variable=self.smartOrder_var4)
        self.smartOrder4.place(x=340, y=60)
        self.smartOrder5 = Checkbutton(root, text="算法", font=('仿宋体', 10, 'bold'), fg="green", variable=self.smartOrder_var5)
        self.smartOrder5.place(x=420, y=60)



        self.HXAlgo_var0 = IntVar()
        self.HXAlgo_var1 = IntVar()
        self.HXAlgo_var2 = IntVar()

        self.HXAlgo1 = Checkbutton(root, text='HXAlgo:', font=('仿宋体', 10, 'bold'), fg="blue",
                                   variable=self.HXAlgo_var0, onvalue=1, offvalue=0,
                                   command=self.HXAlgo)
        self.HXAlgo1.place(x=5, y=100)
        self.HXAlgo2 = Checkbutton(root, text="HX_SMART_TWAP", font=('仿宋体', 10, 'bold'), fg="green",
                                   variable=self.HXAlgo_var1)
        self.HXAlgo2.place(x=100, y=100)
        self.HXAlgo3 = Checkbutton(root, text="HX_SMART_VWAP", font=('仿宋体', 10, 'bold'), fg="green",
                                   variable=self.HXAlgo_var2)
        self.HXAlgo3.place(x=280, y=100)

        self.FTAlgo_var0 = IntVar()
        self.FTAlgo_var1 = IntVar()

        self.FTAlgo0 = Checkbutton(root, text='FTAlgo:', font=('仿宋体', 10, 'bold'), fg="blue",
                                   variable=self.FTAlgo_var0, onvalue=1, offvalue=0,
                                   command=self.FTAlgo)
        self.FTAlgo0.place(x=5, y=125)
        self.FTAlgo1 = Checkbutton(root, text="FT_AI_WAP", font=('仿宋体', 10, 'bold'), fg="green",
                                   variable=self.FTAlgo_var1)
        self.FTAlgo1.place(x=100, y=125)

        self.QNDAlgo_var0 = IntVar()
        self.QNDAlgo_var1 = IntVar()
        self.QNDAlgo_var2 = IntVar()

        self.QNDAlgo1 = Checkbutton(root, text='QNDAlgo:', font=('仿宋体', 10, 'bold'), fg="blue",
                                    variable=self.QNDAlgo_var0, onvalue=1, offvalue=0,
                                    command=self.QNDAlgo)
        self.QNDAlgo1.place(x=5, y=150)
        self.QNDAlgo2 = Checkbutton(root, text="QNDTWAP", font=('仿宋体', 10, 'bold'), fg="green",
                                    variable=self.QNDAlgo_var1)
        self.QNDAlgo2.place(x=100, y=150)
        self.QNDAlgo3 = Checkbutton(root, text="QNDVWAP", font=('仿宋体', 10, 'bold'), fg="green",
                                    variable=self.QNDAlgo_var2)
        self.QNDAlgo3.place(x=280, y=150)

        self.YRAlgo_var0 = IntVar()
        self.YRAlgo_var1 = IntVar()

        self.YRAlgo0 = Checkbutton(root, text='YRAlgo:', font=('仿宋体', 10, 'bold'), fg="blue",
                                   variable=self.YRAlgo_var0, onvalue=1, offvalue=0,
                                   command=self.YRAlgo)
        self.YRAlgo0.place(x=5, y=175)
        self.YRAlgo1 = Checkbutton(root, text="YRVWAP", font=('仿宋体', 10, 'bold'), fg="green",
                                   variable=self.YRAlgo_var1)
        self.YRAlgo1.place(x=100, y=175)

        Label(root, text="---------------------------------------------------------------------:", fg="orange",
              font=('仿宋体', 30, 'bold')).place(x=5, y=190)

        Button(root, text="输入资金账号", font=('仿宋体', 10, 'bold'), fg="blue", command=self.btnAcctFun).place(x=5,
                                                                                                                 y=225)

        Button(root, text="输入股票代码", font=('仿宋体', 10, 'bold'), fg="blue", command=self.btnSymbolFun).place(
            x=200, y=225)

        # Label(root, text="资金账号:",font=('仿宋体', 10, 'bold'),fg="blue").place(x=5, y=235)
        # self.acctType_acct = Text(root, font=('仿宋体', 10, 'bold'),height=1.3, width=80,fg="green")
        # self.acctType_acct.insert('1.0', "UF0_890500027916,UM0_20100051859")
        # self.acctType_acct.place(x=80, y=235)

        Label(root, text="每秒订单量:", font=('仿宋体', 10, 'bold'), fg="blue").place(x=5, y=264)
        self.targetVol = Text(root, font=('仿宋体', 10, 'bold'), height=1.3, width=10, fg="green")
        self.targetVol.insert('1.0', "10")
        self.targetVol.place(x=90, y=264)

        Label(root, text="运行结束时间:", font=('仿宋体', 10, 'bold'), fg="blue").place(x=200, y=264)
        self.runStopTime = Text(root, font=('仿宋体', 10, 'bold'), height=1.3, width=10, fg="green")
        self.runStopTime.insert('1.0', "230000")
        self.runStopTime.place(x=295, y=264)

        Label(root, text="批号起始值:", font=('仿宋体', 10, 'bold'), fg="blue").place(x=5, y=292)
        self.beginNum = Text(root, font=('仿宋体', 10, 'bold'), height=1.3, width=10, fg="green")
        self.beginNum.insert('1.0', "1")
        self.beginNum.place(x=90, y=292)

        Label(root, text="批号结束值:", font=('仿宋体', 10, 'bold'), fg="blue").place(x=200, y=292)
        self.endNum = Text(root, font=('仿宋体', 10, 'bold'), height=1.3, width=10, fg="green")
        self.endNum.insert('1.0', "50")
        self.endNum.place(x=295, y=292)

        Label(root, text="算法结束时间:", font=('仿宋体', 10, 'bold'), fg="blue").place(x=5, y=320)
        self.algoStopTimeSet = Text(root, font=('仿宋体', 10, 'bold'), height=1.3, width=10, fg="green")
        self.algoStopTimeSet.insert('1.0', "180000")
        self.algoStopTimeSet.place(x=100, y=324)
        self.algoStopTimeSet.bind("<Button-1>", self.algoStopTimeSet_bind)  # 点击输入框会清空算法结束时间单选框单选框

        global algoStopTime_var
        self.algoStopTime_var = StringVar()
        self.algoStopTime_var.set("6")
        # Radiobutton是单选文本框
        self.algoStopTime1 = Radiobutton(root, text="+5", font=('仿宋体', 10, 'bold'), fg="green", value="5",variable=self.algoStopTime_var, state="normal")
        self.algoStopTime1.place(x=180, y=320)
        self.algoStopTime2 = Radiobutton(root, text="+10", font=('仿宋体', 10, 'bold'), fg="green", value="10",
                                         variable=self.algoStopTime_var, state="normal")
        self.algoStopTime2.place(x=230, y=320)
        self.algoStopTime3 = Radiobutton(root, text="+20", font=('仿宋体', 10, 'bold'), fg="green", value="20",
                                         variable=self.algoStopTime_var, state="normal")
        self.algoStopTime3.place(x=280, y=320)
        self.algoStopTime4 = Radiobutton(root, text="+30", font=('仿宋体', 10, 'bold'), fg="green", value="30",
                                         variable=self.algoStopTime_var, state="normal")
        self.algoStopTime4.place(x=330, y=320)
        self.algoStopTime5 = Radiobutton(root, text="+60", font=('仿宋体', 10, 'bold'), fg="green", value="60",
                                         variable=self.algoStopTime_var, state="normal")
        self.algoStopTime5.place(x=380, y=320)
        Label(root, text="提示:+5表示算法只运行5分钟", font=('仿宋体', 10, 'bold'), fg="red").place(x=450, y=320)
        # 点击单选框会清空算法结束时间输入框
        self.algoStopTime1.config(command=lambda: self.radiobutton_command(self.algoStopTime1))
        self.algoStopTime2.config(command=lambda: self.radiobutton_command(self.algoStopTime1))
        self.algoStopTime3.config(command=lambda: self.radiobutton_command(self.algoStopTime1))
        self.algoStopTime4.config(command=lambda: self.radiobutton_command(self.algoStopTime1))
        self.algoStopTime5.config(command=lambda: self.radiobutton_command(self.algoStopTime1))

        self.label_orderNum = Label(root, text="生成订单数量为0", fg="red", font=('仿宋体', 10, 'bold'))
        self.label_orderNum.place(x=30, y=350)

        self.label_runStopNum = Label(root, text="运行结束批号值为0", fg="red", font=('仿宋体', 10, 'bold'))
        self.label_runStopNum.place(x=200, y=350)
        self.num = 0

        Label(root, text="---------------------------------------------------------------------:", fg="orange",
              font=('仿宋体', 30, 'bold')).place(x=5, y=365)

        self.btn_Algo = Button(root, text="onequant", font=('times', 19, 'bold'), bg='orange', command=self.toggle_running)
        self.btn_Algo.place(x=5, y=400)

        # self.photo = PhotoImage(file="E:/桌面/lwpaul/algoImport/imgs/logo.gif")
        # # image_create(END, image=self.photo)
        # Label(root, image=self.photo).place(x=5, y=350)

        # self.clock = Label(root, font=('times', 20, 'bold'), bg='orange')
        self.clock_second = 1000
        self.clock = Button(root, font=('times', 19, 'bold'), bg='orange', command=self.photoFun)
        self.clock.place(x=150, y=400)
        self.time_update()


    def btnSaveSymbolFun(self):  # 保存股票
        try:
            os.remove(symbol_file)
        except:
            print(symbol_file + "文件不存在")

        # 生成资金账号的CSV文件
        with open(symbol_file, "a+", newline='') as file:
            csv_file = csv.writer(file)
            datas = [["symbol"]]
            csv_file.writerows(datas)

        text_saveAcct = self.text_symbol.get(1.0, END)
        comma = 0  # 点的个数
        for i in text_saveAcct:
            if i == ".":
                comma = comma + 1
            if comma >= 2:
                break
        print("comma", comma)

        print("acctType112233", text_saveAcct)
        if comma == 1:
            print(333)
            symbol = text_saveAcct.replace("\n", "")
            print("acctType12", symbol)
            Parameter = []
            Parameters = []
            Parameter.append(symbol)
            Parameters.append(Parameter)

            with open(symbol_file, "a+", newline='') as file:
                csv_file = csv.writer(file)
                csv_file.writerows(Parameters)
        else:
            text_saveAcct_split = text_saveAcct.split("\n")
            print("15", text_saveAcct_split)
            for i in range(len(text_saveAcct_split)):
                if text_saveAcct_split[i] != "":
                    symbol = text_saveAcct_split[i]

                    print("symbol9999", symbol)
                    Parameter = []
                    Parameters = []
                    Parameter.append(symbol)
                    Parameters.append(Parameter)

                    with open(symbol_file, "a+", newline='') as file:
                        csv_file = csv.writer(file)
                        csv_file.writerows(Parameters)

    def btnSymbolFun(self):  # 输入股票
        root_btnSymbol = Tk()
        root_btnSymbol.geometry("200x500+230+200")
        self.btnSaveSymbol = Button(root_btnSymbol, text="点击保存", font=('仿宋体', 10, 'bold'), fg="blue",
                                    command=self.btnSaveSymbolFun)
        self.btnSaveSymbol.pack()
        self.text_symbol = Text(root_btnSymbol, height=50, width=42, fg='green', font=("仿宋体", 12))  # "helvetica"
        self.text_symbol.pack(side=LEFT)
        # 在文本框开头插入一段话
        filename = "symbol.csv"
        current_directory = os.getcwd()  # 获取当前目录
        print("current_directory", current_directory)
        file_path = os.path.join(current_directory, filename)  # 构建文件路径
        print("file_path", file_path)
        if os.path.isfile(file_path):  # 检查文件是否存在并且是.csv文件
            data = pd.read_csv(symbol_file, encoding="gbk")
            if len(data["symbol"]) == 0:
                self.text_symbol.insert('1.0', '000001.SZ\n300001.SZ\n600000.SH\n688001.SH')
            else:
                data_text = ""
                for i in range(len(data["symbol"])):
                    data_text = data_text + data["symbol"][i] + "\n"
                print("data_text", data_text)
                self.text_symbol.insert('1.0', data_text)
        else:
            self.text_symbol.insert('1.0', '000001.SZ\n300001.SZ\n600000.SH\n688001.SH')

        scrollbar = Scrollbar(root_btnSymbol, command=self.text_symbol.yview)
        scrollbar.pack(side=LEFT, fill=Y)
        self.text_symbol.configure(yscrollcommand=scrollbar.set)
        root_btnSymbol.mainloop()

    def btnSaveAcctFun(self):  # 保存资金账号
        try:
            os.remove(Acct_file)
        except:
            print(Acct_file + "文件不存在")

        # 生成资金账号的CSV文件
        with open(Acct_file, "a+", newline='') as file:
            csv_file = csv.writer(file)
            datas = [["acctType", "acct"]]
            csv_file.writerows(datas)

        text_saveAcct = self.text_widget.get(1.0, END)
        comma = 0  # 逗号的个数
        for i in text_saveAcct:
            if i == ",":
                comma = comma + 1
            if comma >= 2:
                break
        print("comma", comma)

        print("acctType112233", text_saveAcct)
        if comma == 1:
            print(333)
            acctType_acct = text_saveAcct.replace("\n", "").split(",")
            print("acctType12", text_saveAcct.split(","))
            print("acctType13", acctType_acct)
            acctType = acctType_acct[0]
            acct = acctType_acct[1]
            print("acctType", acctType)
            print("acct", acct)
            Parameter = []
            Parameters = []
            Parameter.append(acctType)
            Parameter.append(acct)
            Parameters.append(Parameter)

            with open(Acct_file, "a+", newline='') as file:
                csv_file = csv.writer(file)
                csv_file.writerows(Parameters)
        else:
            text_saveAcct_split = text_saveAcct.split("\n")
            print("15", text_saveAcct_split)
            for i in range(len(text_saveAcct_split) - 1):
                if text_saveAcct_split[i] != "":
                    acctType_acct = text_saveAcct_split[i].split(",")
                    acctType = acctType_acct[0]
                    acct = acctType_acct[1]
                    print("acctType", acctType)
                    print("acct", acct)
                    Parameter = []
                    Parameters = []
                    Parameter.append(acctType)
                    Parameter.append(acct)
                    Parameters.append(Parameter)

                    with open(Acct_file, "a+", newline='') as file:
                        csv_file = csv.writer(file)
                        csv_file.writerows(Parameters)

    def btnAcctFun(self):  # 输入资金长账号
        root_btnAcct = Tk()
        root_btnAcct.geometry("200x500+230+200")
        self.btnSaveAcct = Button(root_btnAcct, text="点击保存", font=('仿宋体', 10, 'bold'), fg="blue",
                                  command=self.btnSaveAcctFun)
        self.btnSaveAcct.pack()
        self.text_widget = Text(root_btnAcct, height=50, width=42, fg='green', font=("仿宋体", 12))  # "helvetica"
        self.text_widget.pack(side=LEFT)
        # 在文本框开头插入一段话
        filename = "Acct.csv"
        current_directory = os.getcwd()  # 获取当前目录
        print("current_directory", current_directory)
        file_path = os.path.join(current_directory, filename)  # 构建文件路径
        print("file_path", file_path)
        if os.path.isfile(file_path):  # 检查文件是否存在
            data = pd.read_csv(Acct_file, encoding="gbk")
            if len(data["acctType"]) == 0:
                self.text_widget.insert('1.0', 'UF0,89050027916\nUM0,20100051859')
            else:
                data_text = ""
                for i in range(len(data["acctType"])):
                    data_text = data_text + data["acctType"][i] + "," + str(data["acct"][i]) + "\n"
                print("data_text", data_text)
                self.text_widget.insert('1.0', data_text)
        else:
            self.text_widget.insert('1.0', 'UF0,89050027916\nUM0,20100051859')

        scrollbar = Scrollbar(root_btnAcct, command=self.text_widget.yview)
        scrollbar.pack(side=LEFT, fill=Y)
        self.text_widget.configure(yscrollcommand=scrollbar.set)
        root_btnAcct.mainloop()

    def time_update(self):
        current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        weekday = datetime.datetime.now().strftime("%A")
        self.clock.config(text=f"日期:{current_time}  星期:{weekday}")
        if self.clock_second == 1000:
            self.master.after(1000, self.time_update)
        else:
            time.sleep(1)
            self.master.after(1000, self.time_update)

    def photoFun(self):
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            s.connect(("8.8.8.8", 80))
            ip = s.getsockname()[0]
            print("ip", ip)
        except:
            ip = "127.0.0.1"
        finally:
            s.close()

        messages = ["不要拍我", "今天是星期五", "我能倒着背出滕王阁序", "我猜你此刻不想下DMA算法",
                        "不好,今天下班忘记打卡了",
                        "面朝大海,春暖花开", "忘记了时光与风", "上班又迟到了,都怪早上下雨"]

        choice_messages = random.choice(messages)
        self.clock["text"] = choice_messages
        self.clock_second = 3000

    def algoStopTimeSet_bind(self, event):
        self.algoStopTime_var.set("6")

    def radiobutton_command(self, event):
        print("555", self.algoStopTime_var.get())
        self.algoStopTimeSet.delete(1.0, END)

    # def radiobutton_command1(self):
    #     print("555", self.algoStopTime_var.get())

    def smartOrderFun(self):
        if self.smartOrder_var0.get() == 1:
            self.smartOrder_var1.set(1)
            self.smartOrder_var2.set(1)
            self.smartOrder_var3.set(1)
            self.smartOrder_var4.set(1)
            self.smartOrder_var5.set(1)
        else:
            self.smartOrder_var1.set(0)
            self.smartOrder_var2.set(0)
            self.smartOrder_var3.set(0)
            self.smartOrder_var4.set(0)
            self.smartOrder_var5.set(0)

    def XTAlgo(self):
        print("111", self.XTAlgo_var1.get())
        if self.XTAlgo_var1.get() == 1:
            self.XTAlgo_var2.set(1)
            self.XTAlgo_var3.set(1)
            self.XTAlgo_var4.set(1)
        else:
            self.XTAlgo_var2.set(0)
            self.XTAlgo_var3.set(0)
            self.XTAlgo_var4.set(0)

    def KFAlgo(self):
        print("111", self.KFAlgo_var1.get())
        if self.KFAlgo_var1.get() == 1:
            self.KFAlgo_var2.set(1)
            self.KFAlgo_var3.set(1)
            self.KFAlgo_var4.set(1)
            self.KFAlgo_var5.set(1)
            self.KFAlgo_var6.set(1)
        else:
            self.KFAlgo_var2.set(0)
            self.KFAlgo_var3.set(0)
            self.KFAlgo_var4.set(0)
            self.KFAlgo_var5.set(0)
            self.KFAlgo_var6.set(0)

    def HXAlgo(self):
        print("111", self.HXAlgo_var0.get())
        if self.HXAlgo_var0.get() == 1:
            self.HXAlgo_var1.set(1)
            self.HXAlgo_var2.set(1)

        else:
            self.HXAlgo_var1.set(0)
            self.HXAlgo_var2.set(0)

    def FTAlgo(self):
        print("111", self.FTAlgo_var0.get())
        if self.FTAlgo_var0.get() == 1:
            self.FTAlgo_var1.set(1)

        else:
            self.FTAlgo_var1.set(0)

    def QNDAlgo(self):
        print("111", self.QNDAlgo_var0.get())
        if self.QNDAlgo_var0.get() == 1:
            self.QNDAlgo_var1.set(1)
            self.QNDAlgo_var2.set(1)

        else:
            self.QNDAlgo_var1.set(0)
            self.QNDAlgo_var2.set(0)

    def YRAlgo(self):
        print("111", self.YRAlgo_var0.get())
        if self.YRAlgo_var0.get() == 1:
            self.YRAlgo_var1.set(1)

        else:
            self.YRAlgo_var1.set(0)

    def do_something():
        while True:
            print("执行任务")
            time.sleep(2)

    # 创建线程并启动
    t = threading.Thread(target=do_something, daemon=True)
    t.start()
    # 等待esc键按下
    keyboard.wait('ctrl+c')
    
    def toggle_running(self):
        if self.running:
            # 如果程序正在运行,停止运行
            self.label_orderNum.config(text="生成订单数量为" + str(self.num))
            self.label_runStopNum.config(text="运行结束批号值为" + str(
                self.num + int(self.beginNum.get(1.0, END)) + int(self.targetVol.get(1.0, END))))
            self.btn_Algo["text"] = "ALGO"
            self.btn_Algo["bg"] = "orange"
            self.running = False
            self.thread.join()
            # 等待线程结束
        else:
            # 如果程序没有运行,启动运行
            self.btn_Algo["text"] = "STOP"
            self.btn_Algo["bg"] = "red"
            self.running = True
            self.thread = threading.Thread(target=self.run_loop)
            #  创建新线程来运行run_loop方法
            self.thread.start()
            # 启动线程

    def run_loop(self):
        try:
            os.remove(algoStart_file)
        except:
            print(algoStart_file + "文件不存在")

        try:
            os.remove(algoStop_file)
        except:
            print(algoStop_file + "文件不存在")

        try:
            os.remove(algoExecStatic_file)
        except:
            print(algoExecStatic_file + "文件不存在")
        try:
            os.remove(assetInfo_file)
        except:
            print(assetInfo_file + "文件不存在")
        try:
            os.remove(compactInfo_file)
        except:
            print(compactInfo_file + "文件不存在")
        try:
            os.remove(crediStockInfo_file)
        except:
            print(crediStockInfo_file + "文件不存在")
        try:
            os.remove(crediTargetStockInfo_file)
        except:
            print(crediTargetStockInfo_file + "文件不存在")
        try:
            os.remove(orderUpdate_file)
        except:
            print(orderUpdate_file + "文件不存在")
        try:
            os.remove(positionInfo_file)
        except:
            print(positionInfo_file + "文件不存在")
        try:
            os.remove(tradeUpdate_file)
        except:
            print(tradeUpdate_file + "文件不存在")
        try:
            os.remove(TradeMaxNo_file)
        except:
            print(TradeMaxNo_file + "文件不存在")
        try:
            os.remove(OrderMaxNo_file)
        except:
            print(OrderMaxNo_file + "文件不存在")

        with open(algoStart_file, "a+", newline='') as file:
            csv_file = csv.writer(file)
            datas = [["updTime", "custAlgoNo", "acctType", "acct", "symbol", "tradeSide",
                      "targetVol", "targetAmt", "algoId", "algoParam"]]
            csv_file.writerows(datas)

        with open(algoStop_file, "a+", newline='') as file:
            csv_file = csv.writer(file)
            datas = [["updTime", "custAlgoNo", "acctType", "acct"]]
            csv_file.writerows(datas)

        beginNum = int(self.beginNum.get(1.0, END))
        endNum = int(self.endNum.get(1.0, END))
        targetVol = int(self.targetVol.get(1.0, END))
        runStopTime = int(self.runStopTime.get(1.0, END))
        algoStopTimeSet = str(self.algoStopTimeSet.get(1.0, END)).replace("\n", "")
        algoStopTime = self.algoStopTime_var.get()
        if algoStopTime == "6":
            print(6666)
        print("algoStopTime", algoStopTime)

        # 搜集勾选的算法
        if self.OQAlgo_var2.get() == 1:
            self.collect_Algo.append("OQ-TWAP")
        if self.OQAlgo_var3.get() == 1:
            self.collect_Algo.append("OQ-VWAP")
        if self.OQAlgo_var4.get() == 1:
            self.collect_Algo.append("OQ-POV")

        if self.XTAlgo_var2.get() == 1:
            self.collect_Algo.append("XT-TWAP")
        if self.XTAlgo_var3.get() == 1:
            self.collect_Algo.append("XT-VWAP")
        if self.XTAlgo_var4.get() == 1:
            self.collect_Algo.append("XT-VP")

        if self.KFAlgo_var2.get() == 1:
            self.collect_Algo.append("KF-POV")
        if self.KFAlgo_var3.get() == 1:
            self.collect_Algo.append("KF-TWAP-CORE")
        if self.KFAlgo_var4.get() == 1:
            self.collect_Algo.append("KF-TWAP-PLUS")
        if self.KFAlgo_var5.get() == 1:
            self.collect_Algo.append("KF-VWAP-CORE")
        if self.KFAlgo_var6.get() == 1:
            self.collect_Algo.append("KF-VWAP-PLUS")

        if self.HXAlgo_var1.get() == 1:
            self.collect_Algo.append("HX_SMART_TWAP")
        if self.HXAlgo_var2.get() == 1:
            self.collect_Algo.append("HX_SMART_VWAP")

        if self.FTAlgo_var1.get() == 1:
            self.collect_Algo.append("FT_WAP")

        if self.QNDAlgo_var1.get() == 1:
            self.collect_Algo.append("QND-TWAP")
        if self.QNDAlgo_var2.get() == 1:
            self.collect_Algo.append("QND-VWAP")

        if self.YRAlgo_var1.get() == 1:
            self.collect_Algo.append("YR-VWAP")

        print("collect_Algo", self.collect_Algo)

        if self.collect_Algo == [] and algoStopTimeSet == "" and self.algoStopTime_var.get() == "6":
            self.btn_Algo["text"] = "ALGO"
            self.btn_Algo["bg"] = "orange"
            self.running = False
            showinfo(title="友情提示", message="1,请至少选择一个算法\n2,请设置算法结束时间")
            return
        elif self.collect_Algo == []:
            self.btn_Algo["text"] = "ALGO"
            self.btn_Algo["bg"] = "orange"
            self.running = False
            showinfo(title="友情提示", message="1,请至少选择一个算法")
            return
        elif algoStopTimeSet == "" and self.algoStopTime_var.get() == "6":
            self.btn_Algo["text"] = "ALGO"
            self.btn_Algo["bg"] = "orange"
            self.running = False
            showinfo(title="友情提示", message="1,请设置算法结束时间")
            return
        elif len(str(runStopTime)) > 6:
            self.btn_Algo["text"] = "ALGO"
            self.btn_Algo["bg"] = "orange"
            self.running = False
            showinfo(title="友情提示", message="运行结束时间格式填写有误")
            return
        elif len(str(runStopTime)) == 6:
            if int(str(runStopTime)[0:2]) > 23:
                self.btn_Algo["text"] = "ALGO"
                self.btn_Algo["bg"] = "orange"
                self.running = False
                showinfo(title="友情提示", message="运行结束时间格式填写有误")
                return

            elif int(str(runStopTime)[2:4]) > 59:
                self.btn_Algo["text"] = "ALGO"
                self.btn_Algo["bg"] = "orange"
                self.running = False
                showinfo(title="友情提示", message="运行结束时间格式填写有误")
                return

            elif int(str(runStopTime)[4:6]) > 59:
                self.btn_Algo["text"] = "ALGO"
                self.btn_Algo["bg"] = "orange"
                self.running = False
                showinfo(title="友情提示", message="运行结束时间格式填写有误")
                return
        elif len(str(runStopTime)) == 5:
            if int(str(runStopTime)[1:3]) > 59:
                self.btn_Algo["text"] = "ALGO"
                self.btn_Algo["bg"] = "orange"
                self.running = False
                showinfo(title="友情提示", message="运行结束时间格式填写有误")
                return
            elif int(str(runStopTime)[3:5]) > 59:
                self.btn_Algo["text"] = "ALGO"
                self.btn_Algo["bg"] = "orange"
                self.running = False
                showinfo(title="友情提示", message="运行结束时间格式填写有误")
                return

        filename = "Acct.csv"
        current_directory = os.getcwd()  # 获取当前目录
        print("current_directory", current_directory)
        file_path = os.path.join(current_directory, filename)  # 构建文件路径
        print("file_path", file_path)
        if os.path.isfile(file_path):  # 检查文件是否存在
            data = pd.read_csv(Acct_file, encoding="gbk")
            if len(data["acctType"]) == 0:  # 判断文件内容是否为空
                self.btn_Algo["text"] = "ALGO"
                self.btn_Algo["bg"] = "orange"
                self.running = False
                messagebox.showinfo("提示", "请输入资金账号")
                return
        else:
            self.btn_Algo["text"] = "ALGO"
            self.btn_Algo["bg"] = "orange"
            self.running = False
            messagebox.showinfo("提示", "请输入资金账号")
            return

        filename = "symbol.csv"
        current_directory = os.getcwd()  # 获取当前目录
        print("current_directory", current_directory)
        file_path = os.path.join(current_directory, filename)  # 构建文件路径
        print("file_path", file_path)
        if os.path.isfile(file_path):  # 检查文件是否存
            data = pd.read_csv(symbol_file, encoding="gbk")
            if len(data["symbol"]) == 0:
                self.btn_Algo["text"] = "ALGO"
                self.btn_Algo["bg"] = "orange"
                self.running = False
                messagebox.showinfo("提示", "请输入股票")
                return
        else:
            self.btn_Algo["text"] = "ALGO"
            self.btn_Algo["bg"] = "orange"
            self.running = False
            messagebox.showinfo("提示", "请输入股票")
            return

        acctType_acct = []  # 获取资金账号
        data_acctType_acct = pd.read_csv(Acct_file, encoding="gbk")
        for i in range(len(data_acctType_acct["acctType"])):
            acctType_acct.append(data_acctType_acct["acctType"][i] + "_" + str(data_acctType_acct["acct"][i]))

        collect_symbol = []  # 获取股票代码
        data_symbol = pd.read_csv(symbol_file, encoding="gbk")
        for i in range(len(data_symbol["symbol"])):
            collect_symbol.append(data_symbol["symbol"][i])

        for i in range(beginNum, endNum, targetVol):
            if not self.running:
                # 检查程序是否需要停止
                break  # 停止循环
            for j in range(targetVol):
                self.num = i + j
                print("self.num", self.num)
                time.sleep(1 / targetVol)

                # print("999",1/targetVol)

                choice_acctType_acct = random.choice(acctType_acct)
                acctType = choice_acctType_acct.split("_")[0]
                acct = choice_acctType_acct.split("_")[1]
                symbol = random.choice(collect_symbol)
                algoStype = random.choice(self.collect_Algo)
                # algoParm = "beginTime="+beginTime+";"+"endTime="+self.algoStopTimeSet+";"
                Parameter = []
                Parameters = []
                Parameter.append("93000")
                Parameter.append(self.num)
                Parameter.append(acctType)
                Parameter.append(acct)
                Parameter.append(symbol)
                Parameter.append("1")
                Parameter.append("200")
                Parameter.append("0")
                Parameter.append(algoStype)
                beginTime = str(datetime.datetime.now().strftime("%H%M%S"))
                if algoStopTime == "6":
                    endTime = algoStopTimeSet
                else:
                    endTime = (datetime.datetime.now() + datetime.timedelta(minutes=int(algoStopTime))).strftime(
                        "%H%M%S")

                if algoStype in ["OQ-TWAP", "OQ-VWAP", "OQ-POV"]:
                    Parameter.append(
                        "beginTime=" + beginTime + ";endTime=" + endTime + ";limitPrice=0;participateRate=0.15;minAmount=0;tradingStyle=2;notBuyOnLLAndSellOnHL=0;custBatchNo=")
                elif algoStype in ["XT-TWAP", "XT-VWAP", "XT-VP"]:
                    Parameter.append(
                        "beginTime=" + beginTime + ";endTime=" + endTime + ";limitPrice=0;PartRate=0.20;MinAmount=0;m_nStopTradeForOwnHiLow=0;custBatchNo=")
                elif algoStype == "KF-POV":
                    Parameter.append(
                        "beginTime=" + beginTime + ";endTime=" + endTime + ";maxpercentageF=0.2;priceF=0;UpLimitF=0.05;DownLimitF=0.05;limitAction=0;afterAction=0;custBatchNo=")
                elif algoStype in ["KF-TWAP-CORE", "KF-TWAP-PLUS", "KF-VWAP-CORE", "KF-VWAP-PLUS"]:
                    Parameter.append(
                        "beginTime=" + beginTime + ";endTime=" + endTime + ";priceF=0;UpLimitF=0.05;DownLimitF=0.05;limitAction=0;afterAction=0;custBatchNo=")
                elif algoStype in ["HX_SMART_TWAP", "HX_SMART_VWAP"]:
                    Parameter.append("HXAlgo")
                elif algoStype == "FT_WAP":
                    Parameter.append("beginTime=" + beginTime + ";endTime=" + endTime)
                elif algoStype in ["QND-TWAP", "QND-VWAP"]:
                    Parameter.append(
                        "beginTime=" + beginTime + ";endTime=" + endTime + ";allowTradeAtLimit=0;allowTradeAfterEnd=0")
                elif algoStype == "YR-VWAP":
                    Parameter.append("beginTime=" + beginTime + ";endTime=" + endTime + ";limitRule=0")
                Parameters.append(Parameter)

                with open(algoStart_file, "a+", newline='') as file:
                    csv_file = csv.writer(file)
                    csv_file.writerows(Parameters)
            print("881", int(datetime.datetime.now().strftime("%H%M%S")), "   ", runStopTime)
            if int(datetime.datetime.now().strftime("%H%M%S")) >= runStopTime or self.num >= endNum:
                self.btn_Algo["text"] = "ALGO"
                self.btn_Algo["bg"] = "orange"
                self.running = False
                messagebox.showinfo("提示", "运行结束时间到了或者到了批号结束值")

                return


if __name__ == '__main__':
    date = str(datetime.datetime.now().strftime("%Y%m%d"))
    algoStart_file = os.getcwd() + "\\" + "algoStart_" + date + ".csv"
    algoStop_file = os.getcwd() + "\\" + "algoStop_" + date + ".csv"
    algoExecStatic_file = os.getcwd() + "\\" + "algoExecStatic_" + ".csv"
    assetInfo_file = os.getcwd() + "\\" + "assetInfo_" + date + ".csv"
    compactInfo_file = os.getcwd() + "\\" + "compactInfo_" + date + ".csv"
    crediStockInfo_file = os.getcwd() + "\\" + "crediStockInfo_" + date + ".csv"
    crediTargetStockInfo_file = os.getcwd() + "/" + "crediTargetStockInfo_" + date + ".csv"
    orderUpdate_file = os.getcwd() + "\\" + "orderUpdate_" + date + ".csv"
    positionInfo_file = os.getcwd() + "\\" + "positionInfo_" + date + ".csv"
    tradeUpdate_file = os.getcwd() + "\\" + "tradeUpdate_" + date + ".csv"
    TradeMaxNo_file = os.getcwd() + "\\" + "TradeMaxNo.txt"
    OrderMaxNo_file = os.getcwd() + "\\" + "OrderMaxNo.txt"

    Acct_file = os.getcwd() + "/" + "Acct" + ".csv"
    symbol_file = os.getcwd() + "/" + "symbol" + ".csv"

    # 初始化窗口
    root = Tk()

    root.title("生成算法单导入文件")
    root.geometry("700x470+350+100")
    app = Application().__int__(master=root)
    root.mainloop()

 

标签:pyautogui,onequant,text,self,Algo,file,print,root
From: https://www.cnblogs.com/liuweipaul123/p/17927192.html

相关文章

  • Python之PyAutoGUI的使用
    PyAutoGUI是Python的一个库,使用示例如下。一、移动到某个坐标点进行点击importpyautoguiprint(pyautogui.position())pyautogui.moveTo(56,18,duration=1)pyautogui.click()二、依照图片相似度移动到某个图片的位置进行点击importpyautoguipos=pyautogui.locateO......
  • pyautogui.locateOnScreen()函数
    如何在屏幕上搜索某个图像假设桌面有个熟悉的图标如下:我们该如何用pyautogui找到它呢?如果是你,你该怎么找呢?是不是首先得参照上面这个图片,然后在屏幕上逐行扫描,扫到为止。pyautogui也是类似的:#图像识别(一个)oneLocation=pyautogui.locateOnScreen('weixin.png')print(on......
  • python selenium 利用pyautogui+ActionChains 完美解决我的滑块验证登录问题
    在解决滑块验证的时候不知道什么原因明明是滑块已经对上了,代码执行就是会校验不通过,手动时就可以,中间也做利用ActionChains模块减速滑动轨迹的操作,但仍然不行,后面在执行代码中添加了pyautogui模块使鼠标悬停在屏幕中的某个点而不改变ActionChains鼠标的定位后终于每次都能通过了fro......
  • python pyautogui AttributeError: module 'pyscreeze' has no attribute 'locateOnW
    目录pythonpyautoguiAttributeError:module'pyscreeze'hasnoattribute'locateOnWindow'pythonpyautoguiAttributeError:module'pyscreeze'hasnoattribute'locateOnWindow'安装好pyautogui后测试脚本报错如标题这个报错百度查询是版本过高导致......
  • python提取论文图片波形数据:pyautogui键盘移动鼠标,跨模块全局变量使用,cv2局部放大窗口
    最近写了一个python提取论文图片波形数据的脚本,代码如下。涉及新知识点:pyautogui键盘移动鼠标,跨模块全局变量使用,cv2局部放大窗口,matplotlib图片在pyQT5lable显示,坐标变换,多线程同时使用。搜索相关关键字去对应代码区看注释就可以了。gui窗口:1#-*-coding:utf-8-*-2......
  • python操作windows桌面实现鼠标、键盘操作,python之pyautogui库文档详解
    文章目录一、概述1、概述2、安装二、屏幕操作1、获取屏幕分辨率2、某个坐标是否在屏幕上3、获取当前鼠标位置三、鼠标操作1、移动鼠标2、点击操作3、滚轮操作4、记录光标小程序5、鼠标拖拽6、缓动/渐变(Tween/Easing)函数99、保护措施(FAILSAFE)99、延迟操作(PAUSE)四、键盘操作1、......
  • pyautogui 屏幕倍率的坑
    在我的2倍屏设备上,鼠标移动不准确。直接上演示代码importpyautoguiscreenSize=pyautogui.size()print(screenSize)#输出:Size(width=1512,height=982)。这是屏幕尺寸,以dip(设备独立像素device-independentpixel)度量。buttonPoint=pyautogui.locateCenterOnScreen......
  • pyautogui locateCenterOnScreen和locateOnScreen不生效
    如果传入了正确的图片,却无法在屏幕中找到定位,则可能是因为权限问题,导致pyautogui无法获取到窗口截图。请参照:https://www.cnblogs.com/ZJT7098/p/17695865.html......
  • Mac执行pyautogui.screenshot()只能截取桌面背景
    明明有程序窗口在前台,却只获取到桌面背景。如果无法正确的获取截屏,那么pyautogui.locateCenterOnScreen或pyautogui.locateOnScreen等函数都无法正确执行。原因很简单,就是权限问题。应将屏幕录制权限开放给你的开发工具。这里我赋予Anaconda-Navigator和Terminal屏幕录制权......
  • Mac执行pyautogui.screenshot()时报错
    报错信息---------------------------------------------------------------------------TypeErrorTraceback(mostrecentcalllast)CellIn[3],line1---->1pyautogui.screenshot()File~/anaconda3/lib/python3.11/site-package......