一般pywinauto可以这样实现出口一个股票自动交易系统,接口代码如下:

import easyocr
from PIL.ImageGrab import grab
from pywinauto.application import Application
import time
#交易软件可以电脑和手机同时登陆
#print(easyocr.model_storage_directory)
#模型保存路径Windows:C:\Users\<用户名>\.EasyOCR\model
#Linux:~/ .EasyOCR / model
class exchange():
    def __init__(self):
        self.reader = easyocr.Reader(["ch_sim","en"],gpu=False)
        self.app = Application(backend="win32").start(r"C:\xxx\xiadan.exe").Dailog
        self.jpgpath=r"C:\Users\xxx\1.jpg"
        self.numindex=(xx,xx,xx,xx)  #验证码的位置,可以用微信截屏来定位。
    def grabnum(self):
        img=grab(bbox=(self.numindex))
        img.save(self.jpgpath)
    def loadfirst(self):
        self.grabnum()
        while True:  # 这个识别软件老是出错,所以只能这样了。
            try:
                valinum = self.reader.readtext(self.jpgpath)
                valicode = int(valinum[0][1].replace(" ", ""))  # 有时候识别的字符间有空格
            except Exception as e:
                print(e)
                # app.Button10.click() #重新刷新验证码,其实这里可以不用刷新
                continue
            else:
                break
        self.app.Edit3.type_keys(valicode)
        self.app.Botton.click()
    def loadlast(self):
        loadflag = 1
        self.app.Edit2.type_keys("your_password")
        while loadflag:
            self.loadfirst()
            time.sleep(1)
            if self.app[u"验证码错误,请重新输入!"].is_visible():
                self.app[u"确定"].click()  # 这里会自动刷新验证码
            else:
                loadflag = 0
    # app["Button10"].get_properties()
    def load(self):
        try:
            self.loadlast()
        except Exception as e:
            pass
        time.sleep(1)
    # app2=Application(backend="win32").connect(process=7xx4) #通过进程连接不靠谱,重启进程就变了
    # app2.top_window().print_control_identifiers()
    def link_new_window(self):
        app2 = Application(backend="win32").connect(title="网上股票交易系统5.0", visible_only=True)  # 其实这里可以用uia的
        try:
            app2[u"新股申购Dialog"].is_visible()
        except Exception as e:
            pass
        else:
            app2[u"新股申购Dialog"].close()
        return app2
    def mybuy(self,bcode,bprice,bnum):
        app2=self.link_new_window()
        time.sleep(0.1)
        app2.top_window().type_keys("{F1}")
        time.sleep(0.1)
        app2.top_window().Edit0.type_keys(bcode)
        app2.top_window().Edit2.type_keys(bprice)
        app2.top_window().Edit3.type_keys(bnum)
        app2.top_window().set_focus()    #要加这个才得
        app2.top_window().type_keys('^~')
        time.sleep(0.5) #这里要暂停一下
        app2.top_window().Button2.click()  #是的话就是Button1

def mysell(self,scode,sprice,snum):
        app2 = self.link_new_window()
        time.sleep(0.1)
        app2.top_window().type_keys("{F2}")
        time.sleep(0.1)
        app2.top_window().Edit0.type_keys(scode)
        app2.top_window().Edit2.type_keys(sprice)
        app2.top_window().Edit3.type_keys(snum)
        app2.top_window().set_focus()  # 要加这个才得
        app2.top_window().type_keys('^~')
        time.sleep(0.5)  # 这里要暂停一下
        app2.top_window().Button2.click()  # 是的话就是Button1,测试环境,所以点击Button1(否)

def cancel_order(self,how):
        app2 = self.link_new_window()
        time.sleep(0.1)
        app2.top_window().type_keys("{F3}")
        time.sleep(0.1)
        if how=="all":
            app2.top_window()[u"全撤(Z /)"].click()  # 全撤
        elif how=="cbuy":
            app2.top_window()[u"撤买(X)"].click()  # 撤买
        else:
            app2.top_window()[u"撤卖(C)"].click()  # 撤卖
        time.sleep(0.5)  # 这里要暂停一下
        try:
            app2.top_window()[u"无可撤委托"].is_visible()
        except Exception as e:
            app2.top_window().Button2.click()  # 是的话就是Button1
        else:
            app2.top_window().Button.click()

def myquery(self):
        app2 = self.link_new_window()
        time.sleep(0.1)
        app2.top_window().type_keys("{F4}")
        time.sleep(0.1)
        total_assets=app2.top_window().Static12.get_properties()['texts']
        useful_money=app2.top_window().Static6.get_properties()['texts']
        return total_assets[0],useful_money[0]
if __name__=="__main__":
    my=exchange()
    my.load()
    my.mybuy("0000","12","30")
    my.mysell("0000","12","30")
    my.cancel_order("all")
    to,us=my.myquery()
    print(to,us)

如何使用pywinauto实现一个股票自动交易系统?相关推荐

  1. 如何做一个股票自动交易系统的步骤

    如何做一个股票自动交易系统的步骤 1. 数据获取 股票自动交易系统需要获取的数据非常丰富,涉及到市场价格.资金流向.基本面报告等多方面信息.这些数据对于制定交易策略和决策分析至关重要. 首先,对于股票 ...

  2. python股票自动交易从零开始-怎样用 Python 写一个股票自动交易的程序-数字货币代理...

    1个赞 股票自动交易助手提供了一个 Python 自动下单接口,参考代码#股票自动交易助手 Python 自动下单使用 例子#把此脚本和 StockOrderApi.py Order.dll 放到你自 ...

  3. 怎样用 Python写一个股票自动交易接口的程序?

    交易商提供基于JSON的API接口的,直接查官方文档,用python request 连接接口发送指令交易. 1:想方设法找出内部接口交易,具体方法包括但不限于:官方网页版交易系统发送接收数据的监听, ...

  4. 华泰证券 python 自动交易_怎样用 Python 写一个股票自动交易的程序?(不包含交易算法)?...

    前言 股票或期货的价格波动,总会有一些可以规律可以遵循的.其中,"背离"也算是其中的一种,并且可以作为判断趋势结束或阶段调整的预警信号. 通常情况下,我们所说的"背离&q ...

  5. 怎样用 Python 写一个股票自动交易程序呢?

    如果是网址都没有给出怎么测试呢? 这个应该是服务器生成的token吧,可以urllib2抓一下,如果抓不到的话那么他可能用的js动态加载,这个得分析js源码了,如果他用了flash来算出这个值的. 像 ...

  6. python股票自动交易从零开始-python程序化交易编程-python制作自动交易程序!

    如何用python进行期货程序化交易 .程序化交易系统目前主要是通过计算机程序实现的,其实就是把交易者决策的过程用计算机语言描述出来,然后由计算机给出交易建议或直接发送交易指令到期货公司的. SDYG ...

  7. python控制mt4自动交易软件排名_股票自动交易软件排名

    原标题:股票自动交易软件排名 提起股票自动交易软件,大家都很不陌生了,很多用户也使用过很多不同品牌的产品,那么谁比较好呢?接下来我们就为大家来总体排名一下: 第一名:智能A股管家股票自动交易系统 把它 ...

  8. 强化学习+神经网络来训练一个股票交易系统

    简介: 本文采用强化学习+神经网络的框架,训练一个股票交易系统,并在个股上进行了测试. 下面为详细记录: 上面这个图是一个强化学习的交易模型.这个图是out sample的交易结果.2012~2015 ...

  9. Python项目实战学习案例--股票模拟交易系统

    Python学习案例–股票模拟交易系统 源代码地址:https://gitee.com/wujize188_admin/mini_stock.git 主要技术 后台:Flask框架,sqlalchem ...

  10. 搭建股票量化交易系统QTYX—持续进阶之路[更新至V2.5.2]

    开发者计划发布 看书学习了量化相关的知识之后,如何学会搭建自己的量化交易系统?这一步相信很多人很难跨过去. 其实边学习边实战,在实战中学习才是最有效地方式. 于是我们分享一个即可以用于学习,也可以用于 ...

最新文章

  1. PL/SQL开发五年工作经验精典实例
  2. iview地区加载_LoadingBar 加载进度条
  3. DeepLink唤醒App的简单实现方法
  4. Wireshark数据包分析之数据包信息解读
  5. 2021 ACDU China Tour-北京站暨数据库大咖讲坛(第3期)成功举办!(附PPT下载)
  6. 获取输入数组的最小值(含界面)例子详细分析
  7. 基于MATLAB的PID控制器设计
  8. linux服务器一键可视化,安装宝塔教程
  9. 抖音数据统计_抖音大数据,抖音最全数据分析工具,全知道算你厉害!
  10. github中文件夹名带数字,git下来为空文件夹
  11. UART协议及其Verilog实现
  12. 【最实用的chrome插件】CSDN 浏览器插件:CSDN 开发者助手(测评手册1)
  13. QCC3040---DFU(OTA)固件生成方法OTA方法
  14. 抖音小店营业执照怎么办理?新手做抖店营业执照范围应该怎么选?
  15. 使用U盘或移动硬盘制作系统盘
  16. 《魔兽世界》国服团队正与新合作方洽谈;爆苹果将允许第三方应用商店替代 App Store;Vite 4.0发布|极客头条
  17. 如何在Windows10下安装ubuntu双系统(无U盘)
  18. 微信小程序:音乐播放器带进度条
  19. udev规则以及编写
  20. 编写一个c语言程序 杨辉三角,杨辉三角 c语言

热门文章

  1. Nginx系列(5):Web服务器分析之Linux I/O(理论中)
  2. Understanding COM Apartments
  3. 常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript
  4. eclipse tomcat找不到或无法加载
  5. 【Codeforces 1114C】Trailing Loves (or L'oeufs?)
  6. nginx(三)初步搭建nginx虚拟主机
  7. 使用SqlBulkCopy类实现导入excel表格
  8. 引用一个falsh使它显示出来
  9. 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
  10. python通过jdbc连接hive_Python使用JDBC连接Hive