python调用同花顺函数_python自动化+tk同花顺交易

# -*- encoding: utf8 -*-

# version 1.11

import tkinter.messagebox,os

from tkinter import *

from tkinter.ttk import *

from tkinter import Menu

import datetime

import threading

import pickle

import time

#import tushare as ts

import pywinauto

import pywinauto.clipboard

import pywinauto.application

NUM_OF_STOCKS = 5  # 自定义股票数量

is_start = False

is_monitor = True

set_stocks_info = []

actual_stocks_info = []

consignation_info = []

is_ordered = [1] * NUM_OF_STOCKS  # 1:未下单  0:已下单

is_dealt = [0] * NUM_OF_STOCKS  # 0: 未成交   负整数:卖出数量, 正整数:买入数量

stock_codes = [''] * NUM_OF_STOCKS

class OperationThs:

def __init__(self):

try:

self.__app = pywinauto.application.Application()

self.__app.connect(title='网上股票交易系统5.0')

top_hwnd = pywinauto.findwindows.find_window(title='网上股票交易系统5.0')

dialog_hwnd = pywinauto.findwindows.find_windows(top_level_only=False, class_name='#32770', parent=top_hwnd)[0]

wanted_hwnds = pywinauto.findwindows.find_windows(top_level_only=False, parent=dialog_hwnd)

print('wanted_hwnds length', len(wanted_hwnds))

if len(wanted_hwnds)==0:

tkinter.messagebox.showerror('错误', '无法获得“同花顺双向委托界面”的窗口句柄,请将同花顺交易系统切换到“双向委托界面”!')

exit()

self.__main_window = self.__app.window_(handle=top_hwnd)

self.__dialog_window = self.__app.window_(handle=dialog_hwnd)

except:

pass

def __buy(self, code, quantity):

"""买函数

:param code: 代码, 字符串

:param quantity: 数量, 字符串

"""

self.__dialog_window.Edit1.SetFocus()

time.sleep(0.2)

self.__dialog_window.Edit1.SetEditText(code)

time.sleep(0.2)

if quantity != '0':

self.__dialog_window.Edit3.SetEditText(quantity)

time.sleep(0.2)

self.__dialog_window.Button1.Click()

time.sleep(0.2)

def __sell(self, code, quantity):

"""

卖函数

:param code: 股票代码, 字符串

:param quantity: 数量, 字符串

"""

self.__dialog_window.Edit4.SetFocus()

time.sleep(0.2)

self.__dialog_window.Edit4.SetEditText(code)

time.sleep(0.2)

if quantity != '0':

self.__dialog_window.Edit6.SetEditText(quantity)

time.sleep(0.2)

self.__dialog_window.Button2.Click()

time.sleep(0.2)

def __closePopupWindow(self):

"""

关闭一个弹窗。

:return: 如果有弹出式对话框,返回True,否则返回False

"""

popup_hwnd = self.__main_window.PopupWindow()

if popup_hwnd:

popup_window = self.__app.window_(handle=popup_hwnd)

popup_window.SetFocus()

popup_window.Button.Click()

return True

return False

def __closePopupWindows(self):

"""

关闭多个弹出窗口

:return:

"""

while self.__closePopupWindow():

time.sleep(0.5)

def order(self, code, direction, quantity):

"""

下单函数

:param code: 股票代码, 字符串

:param direction: 买卖方向, 字符串

:param quantity: 买卖数量, 字符串

"""

if direction == 'B':

self.__buy(code, quantity)

if direction == 'S':

self.__sell(code, quantity)

self.__closePopupWindows()

def maxWindow(self):

"""

最大化窗口

"""

if self.__main_window.GetShowState() != 3:

self.__main_window.Maximize()

self.__main_window.SetFocus()

def minWindow(self):

"""

最小化窗体

"""

if self.__main_window.GetShowState() != 2:

self.__main_window.Minimize()

def refresh(self, t=0.5):

"""

点击刷新按钮

:param t:刷新后的等待时间

"""

self.__dialog_window.Button5.Click()

time.sleep(t)

def getMoney(self):

"""

获取可用资金

"""

return float(self.__dialog_window.Static19.WindowText())

@staticmethod

def __cleanClipboardData(data, cols=11):

"""

清洗剪贴板数据

:param data: 数据

:param cols: 列数

:return: 清洗后的数据,返回列表

"

  • 4
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值