Package: etonger
Welcome to etonger !This is a repo for theetongertrading engine under the Mac OSX system.Authoretonger©RobinShare, Released under theGPL-3.0License.What's etonger support for?e海通财PC端Mac版.Details:1、e海通财PC端Mac3.08版，支持Mac10.12以上版本。

2、支持科创板交易和新股申购业务。

3、支持普通交易、融资融券、贵金属三种交易类型。

5、支持多个基金品种交易，如场内基金、分级基金、ETF申赎、场外开放基金等业务功能。

6、支持新股一键申购，打新从此更方便。

7、增加沪深全景图，创业板注册制，全面支持IPv6。

8、支持在线客户服务，24小时在线为您解答。Repo structureetonger/
    ├── LICENSE
    ├── pyproject.toml
    ├── README.md
    ├── setup.py  
    ├── src/
    │   └── etonger/
    │        ├── __init__.py
    │        ├── ascmd.py
    │        ├── ehelper.py             
    │        └── etonger.py
    └── tests/

tree ~/.config/etonger
    ~/.config/etonger
    └── config.xmlInstallation guideRequirementspython >= 3.9.4Dependenciesbrewinstallcliclick
cliclick-V# cliclick 4.0.1, 2018-04-10whichcliclick# /usr/local/bin/cliclickpipinstallpandas==1.2.4InstallationBuildingetongerfrom pippip3install-ihttps://test.pypi.org/simple/etonger==1.1.8Buildingetongerfrom sourcegitclonegit@github.com:RobinShare/etonger.git~/etonger;cd~/etonger;pythonsetup.pyinstall;rm-rf~/etongerConfigurationmkdir-p~/.config/etongerecho"""<etonger><trading><userid>77777777777</userid><password>123456</password><broker_code>PAZQ</broker_code><broker_account>66666666</broker_account><broker_password>123456</broker_password><bank_name>华夏银行</bank_name><bank_account>666666666666666666</bank_account><bank_password>123456</bank_password></trading><mail><mail_host>smtp.163.com</mail_host><mail_sender>mailAddress@163.com</mail_sender><mail_license>SNRRQOKFKEUNNSFT</mail_license><mail_receivers>mailAddress@163.com</mail_receivers></mail></etonger>""">~/.config/etonger/config.xmlHow to useetongerDemo.py# -*- coding: utf-8 -*-
#After you have run "pip3 install -i https://test.pypi.org/simple/ etonger==1.1.8"

from etonger import etonger 
import time

if __name__ == "__main__":
    pass
    # --- Service
    # -----------------------------------------
    service = etonger.Service()

    status = service.isClientLoggedIn()
    print(status)
    time.sleep(1)

    status = service.loginClient()
    print(status)
    time.sleep(1)

    status = service.isClientLoggedIn()
    print(status)
    time.sleep(1)

    status = service.logoutClient()
    print(status)
    time.sleep(1)

    status = service.isClientLoggedIn()
    print(status)
    time.sleep(1)

    status = service.reLoginClient()
    print(status)
    time.sleep(1)

    status, entrustDf = service.getEntrustInfo()
    print("status:", status, "entrustDf:", entrustDf)

    time.sleep(5)
    status = service.lockClient()
    print("status:",status)


    #---暂时不知道锁屏后怎么解锁操作，待定
    # service.unlockClient()



    # --- Etonger
    # -----------------------------------------
    tonger = etonger.Etonger()
    tonger.keepInformed = True

    status = tonger.isBrokerLoggedIn()
    print(status)

    status = tonger.loginBroker()
    print(status)

    status = tonger.isBrokerLoggedIn()
    print(status)

    accountInfo = tonger.getAccountInfo()
    print("accountInfo:",accountInfo)

    status, entrustDf = tonger.getEntrustMentInfo()
    print("status:",status, "entrustDf:", entrustDf)

    status, entrustNo = tonger.sellAStock(stock_code='600336', price=7.45, amount=100, mode=0)
    print("status:", status, "entrustNo:", entrustNo)

    status, entrustNo = tonger.sellAStock(stock_code='300059', price=32.29, amount=100, mode=5)
    print("status:", status, "entrustNo:", entrustNo)

    statusList, entrustNoDict = tonger.sellAllStocks(stock_codeList=['600336','300059'], priceList=[7.28, 32.88], amountList=[100,500], mode=0)
    print("statusList:", statusList, "entrustNoDict:", entrustNoDict)

    status, entrustNo = tonger.buyAStock(stock_code='300059', price=29.29, amount=100, mode=0)
    print("status:", status, "entrustNo:", entrustNo)

    status, entrustNo = tonger.buyAStock(stock_code='600336', price=7.29, amount=100, mode=2)
    print("status:", status, "entrustNo:", entrustNo)

    statusList, entrustNoDict = tonger.buyAllStocks(stock_codeList=['600336','300059'], priceList=[6.59, 28.29], amountList=[100,100], mode=0)
    print("statusList:", statusList, "entrustNoDict:", entrustNoDict)

    positionDataFrame = tonger.checkPosition()
    print("positionDataFrame:", positionDataFrame)

    time.sleep(15.0)
    status = tonger.cancelAllSellStocks()
    print(status)

    status = tonger.cancelAllStocks()
    print(status)

    status = tonger.cancelAllBuyStocks()
    print(status)

    status = tonger.oneKeyIPO()
    print(status)For more informationHint:If you want to use the email notification module, you need to open a 163 email account.Be Careful【手动要求】：客户端手动提前设置：双向委托[F6]---->>>>委托(R),勾选☑️可撤委托,同时向右拖动该窗口，让委托信息中全部列名可见。【注意：版式切换不要变更，使用原来的版式<上>】