Giter VIP home page Giter VIP logo

puppet's Introduction

本项目为学习WIN32 API而写,擅自将puppet用于生产环境,后果自负!

推荐一站式解决方案 【策略易】 http://www.iguuu.com/e?x=19829


快速入门:

import puppet

# 自动登录账户, comm_pwd 是可选参数
accinfo = {
    'account_no': '你的账号',
    'password': '登录密码',
    'client_path': 'path/to/xiadan.exe',
    # 'comm_pwd': '通讯密码'
}

acc = puppet.login(accinfo)

# 绑定已登录账户
acc = puppet.Account(title='')

acc.buy('000001', 12.68, 100)
acc.sell('000001', 12.68, 100)

# 只支持按代码撤单。
acc.cancel_buy('510050')
acc.cancel_all()

acc.query('historical_deal')
acc.query('position')

使用环境: 1、Python3.5及以上,强烈推荐使用Anaconda3的最新版本。

2、(不推荐!)Linux平台需安装最新的Wine,环境设为WIN7,并安装Windows平台的Anaconda3。

安装:

打开命令提示符或Windows PowerShell,然后执行:

pip install https://github.com/Raytone-D/puppet/archive/master.zip

或者

git clone https://github.com/Raytone-D/puppet.git
pip install -e puppet

技术说明:

1、本项目使用User32.dll, Kernel32.dll所涵盖的win32 API。

2、按MSDN的API说明,win32 API支持WIN2000及以上版本,建议Win 7+。

鸣谢:

///////////////////////做事有底线///////////////////////////////////////

puppet's People

Contributors

hardywu avatar raytone-d avatar zhongjyyy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

puppet's Issues

1.8.5版本无法运行query命令

升级1.8.5版本之后,acc.query部分命令无法正确执行。
acc.query('position')无法自动置顶xiadan.exe界面,导致无法正确获取到账户信息,手动切换xiadan界面之后才能正确返回。
但是下发acc.query('summary')命令执行却没有问题,能够正确返回账户信息。

回退到1.8.3版本以上命令执行都没有问题。

基于0.8.8的4个问题

问题1、华泰只能在新股页面打新。如下修改方法:
(1)159行MEMBERS字典中可以增加打新的界面参数。
测试修改方法如下:

'raffle': (1032, 1541, 1033, 1847, 1034, 0)

(2)298行增加打新按钮的判断。
测试修改方法如下:

return self.fill(qty or full).click_button(label={
    'buy': '买入[B]',
    'sell': '卖出[S]',
    'raffle': '申购[B]'
}[action])

(3)346行修改在新股申购界面打新,并增加科创板的判断。
测试修改方法如下:

def raffle(self):
    "新股申购"
    self.query.cache_clear()
    def func(ipo, orders):
        symbol = ipo.get('新股代码') or ipo.get('证券代码')
        price = ipo.get('申购价格') or ipo.get('发行价格')
        had = [order['证券代码'] for order in orders]
        if symbol in had:
            r = (0, 'SUCC: %s 已经申购!!!' % symbol)
        elif symbol.startswith('787'):
            r = (0, '请开通科创板')
        elif symbol not in had:
            r = self.trade('raffle', symbol, price, 0).wait().answer()
        else:
            r = (0, '不可预测的申购错误')
        return r
    target = self.new
    if target:
        orders = self.entrustment
        return [func(ipo, orders) for ipo in target]

(4)508行增加打新的判断。
测试修改方法如下:

if action in ('buy', 'buy2', 'sell', 'sell2', 'raffle'):

问题2、登陆页面未登陆成功或者程序异常,导致无法正常关闭交易客户端。如下修改方法:
(1)255行退出方法增加登陆框的判断和主窗体的判断。
测试修改方法如下:

def exit(self):
    "退出系统并关闭程序"
    try:
        if self.hLogin and self.hLogin != 0:
            user32.PostMessageW(self.hLogin, MSG['WM_CLOSE'], 0, 0)
            print("退出登陆界面")
    except Exception as e:
        print(repr(e))
    try:
        if self.root and self.root != 0:
            user32.PostMessageW(self.root, MSG['WM_CLOSE'], 0, 0)
        print("退出客户端")
    except Exception as e:
        print(repr(e))   
    return self

问题3、交易之后总是返回“木偶无响应”的提示。如下修改方法:
(1)616行增加返回字符串的判断,并再次获取弹出框提示。
测试修改方法如下:

def answer(self):
    text = self.capture()
    if any(('木偶' in text, '小数部分' in text, '您确认' in text, )):
        print(text)
        text = self.capture()
    if '合同编号' in text:
        return (re.findall(r'(\w*[0-9]+)\w*', text)[0], 'action succ!!!')
    else:
        return (0, text)

问题4:华泰在打新页面、打新结果这两个页面,表格没有焦点,所以ctrl+s没有反应。最终结果是提示table.xls文件找不到的错误。

这个暂时不会修改。

问题5:在云服务器上部署,无法通过快捷键复制表格的数据,总是提示table.xls文件找不到的错误。

.

.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.