• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

easytrader: 提供券商华泰/佣金宝/银河/广发/雪球的基金、股票自动程序化交易,量化交 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

easytrader

开源软件地址:

https://gitee.com/chchsheng/easytrader

开源软件介绍:

easytrader

  • 进行自动的程序化股票交易
  • 实现自动登录
  • 支持命令行调用,方便其他语言适配
  • 支持 Python3 / Python2, Linux / Win
  • 有兴趣的可以加群 549879767429011814(已满) 一起讨论

开发环境 : Ubuntu 16.04 / Python 3.5

相关

量化交流论坛

获取新浪免费实时行情的类库: easyquotation

简单的股票量化交易框架 使用 easytrader 和 easyquotation

捐助: 支付宝 微信

支持券商

模拟交易

requirements

pip install -r requirements.txt

华泰 / 佣金宝 的自动登录需要安装以下二者之一, 银河的自动登录需要安装下列的 tesseract:

  • JAVA : 推荐, 识别率高,安装简单, 需要命令行下 java -version 可用 (感谢空中园的贡献)
  • tesseract : 保证在命令行下 tesseract 可用

安装

pip install easytrader

注: Windows 用户 pip 安装时会提示 No module named xxx, 请使用 pip install xxx 安装对应缺失的 module, 然后再重新 pip install easytrader, 可以参考此文档 INSTALL4Windows.md

升级

pip install easytrader --upgrade

用法

引入:

import easytrader

设置账户:

佣金宝
user = easytrader.use('yjb') # 佣金宝支持 ['yjb', 'YJB', '佣金宝']
华泰
user = easytrader.use('ht') # 华泰支持 ['ht', 'HT', '华泰']

注: 如果你的华泰账户是以 08 开头,而且可以正常登录,但是其他操作返回 账户记录表不存在 等错误时,请尝试 user = easytrader.use('ht', remove_zero=False)

银河
user = easytrader.use('yh') # 银河支持 ['yh', 'YH', '银河']
广发
user = easytrader.use('gf') # 广发支持 ['gf', 'GF', '广发']

登录帐号

user.prepare('ht.json') // 或者 yjb.json 或者 yh.json 等配置文件路径

:

配置文件需要自己用编辑器编辑生成, 请勿使用记事本, 推荐使用 notepad++ 或者 sublime text

格式可以参照 Github 目录下对应的 json 文件

  • 华泰需要配置 ht.json 填入相关信息, trdpwd 加密后的密码首次需要登录后查看登录 POSTtrdpwd 值确定
  • 佣金宝需要配置 yjb.json 并填入相关信息, 其中的 password 为加密后的 password
  • 银河需要配置 yh.json 填入相关信息, trdpwd 加密后的密码首次需要登录后查看登录 POSTtrdpwd 值确定
  • 雪球配置中 username 为邮箱, account 为手机, 填两者之一即可,另一项改为 "", 密码直接填写登录的明文密码即可,不需要抓取 POST 的密码

如何获取配置所需信息, 可参考此文章

交易相关

以下用法以佣金宝为例,华泰类似

获取资金状况:

user.balance

return

[{ 'asset_balance': '资产总值',   'current_balance': '当前余额',   'enable_balance': '可用金额',   'market_value': '证券市值',   'money_type': '币种',   'pre_interest': '预计利息' ]}

获取持仓:

user.position

return

[{'cost_price': '摊薄成本价',   'current_amount': '当前数量',   'enable_amount': '可卖数量',   'income_balance': '摊薄浮动盈亏',   'keep_cost_price': '保本价',   'last_price': '最新价',   'market_value': '证券市值',   'position_str': '定位串',   'stock_code': '证券代码',   'stock_name': '证券名称'}]

获取今日委托单

user.entrust

return

[{'business_amount': '成交数量',  'business_price': '成交价格',  'entrust_amount': '委托数量',  'entrust_bs': '买卖方向',  'entrust_no': '委托编号',  'entrust_price': '委托价格',  'entrust_status': '委托状态',  # 废单 / 已报  'report_time': '申报时间',  'stock_code': '证券代码',  'stock_name': '证券名称'}]

买入:

user.buy('162411', price=0.55, amount=100)

return

[{'entrust_no': '委托编号',  'init_date': '发生日期',  'batch_no': '委托批号',  'report_no': '申报号',  'seat_no': '席位编号',  'entrust_time': '委托时间',  'entrust_price': '委托价格',  'entrust_amount': '委托数量',  'stock_code': '证券代码',  'entrust_bs': '买卖方向',  'entrust_type': '委托类别',  'entrust_status': '委托状态',  'fund_account': '资金帐号',  'error_no': '错误号',  'error_info': '错误原因'}]

卖出:

user.sell('162411', price=0.55, amount=100)

撤单

华泰
user.cancel_entrust('委托单号')
佣金宝
user.cancel_entrust('委托单号', '股票代码')
银河证券
user.cancel_entrust('委托单号', '股票代码')

银河证券场内基金功能

基金认购
user.fundsubscribe('基金代码', '基金份额')
基金申购
user.fundpurchase('基金代码', '基金份额')
基金赎回
user.fundredemption('基金代码', '基金份额')
基金合并
user.fundmerge('基金代码', '基金份额')
基金拆分
user.fundsplit('基金代码', '基金份额')

查询交割单

华泰/广发

需要注意通常券商只会返回有限天数最新的交割单,如查询2015年整年数据, 华泰只会返回年末的90天的交割单

user.exchangebill   # 查询最近30天的交割单user.get_exchangebill('开始日期', '截止日期')   # 指定查询时间段, 日期格式为 "20160214"

return

{["entrust_bs": "操作", # "1":"买入", "2":"卖出", " ":"其他"  "business_balance": "成交金额",  "stock_name": "证券名称",  "fare1": "印花税",  "occur_balance": "发生金额",  "stock_account": "股东帐户",  "business_name": "摘要", # "证券买入", "证券卖出", "基金拆分", "基金合并", "交收证券冻结", "交收证券冻结取消", "开放基金赎回", "开放基金赎回返款", "基金资金拨入", "基金资金拨出", "交收资金冻结取消", "开放基金申购"  "farex": "",  "fare0": "手续费",  "stock_code": "证券代码",  "occur_amount": "成交数量",  "date": "成交日期",  "post_balance": "本次余额",  "fare2": "其他杂费",  "fare3": "",  "entrust_no": "合同编号",  "business_price": "成交均价",]}# 未确认的key有, farex, fare3# 未确认的表头有 结算汇率, 备注

查询当日成交

佣金宝
user.current_deal

return

[{'business_amount': '成交数量','business_price': '成交价格','entrust_amount': '委托数量','entrust_bs': '买卖方向','stock_account': '证券帐号','fund_account': '资金帐号','position_str': '定位串','business_status': '成交状态','date': '发生日期','business_type': '成交类别','business_time': '成交时间','stock_code': '证券代码','stock_name': '证券名称'}]

查看新股可申购额度(目前仅佣金宝可用)

user.ipo_enable_amount('股票代码')

场内基金赎回(广发)

user.cnjj_redemption('股票代码', '赎回份额')

场内基金申购(广发)

user.cnjj_apply('股票代码', '赎回份额')

广发牛熊宝

牛熊宝查询

user.nxbQueryPrice('基金代码')

牛熊宝单项申报

user.nxbentrust('基金代码', '转入数量', '转换比例', '转换方向')

单日委托

user.nxbQueryEntrust('开始日期,ex:20160515', '结束日期', '查询类型[0:历史, 1:单日]')

单日转换

user.nxbQueryDeliverOfToday()

历史转换

user.nxbQueryHisDeliver()

牛熊宝代码查询

user.queryOfStkCode()

牛熊宝持仓查询

user.queryNXBOfStock()

命令行模式

登录

 python cli.py --use ht --prepare ht.json 

注: 此时会生成 account.session 文件保存生成的 user 对象

获取余额 / 持仓 / 以及其他变量

 python cli.py --get balance

买卖 / 撤单

 python cli.py --do buy 162411 0.450 100

查看帮助

 python cli.py --help

Q&A

Question

如何关闭 debug 日志的输出

Answer
user = easytrader.use('ht', debug=False)
Question

编辑完配置文件,运行后出现 json 解码报错的信息。类似于下面

raise JSONDecodeError("Expecting value", s, err.value) from NoneJSONDecodeError: Expecting value
Answer

请勿使用 记事本 编辑账户的 json 配置文件,推荐使用 notepad++ 或者 sublime text

其他

软件实现原理

附录

银河的返回

balance
[{    '资金帐号': 'x',     '参考市值': 10.1,     '资金余额': 10.1,     '可用资金': 10.1,     '总资产': 10.1,     '股份参考盈亏': 10.1,     '币种': '人民币'}]
entrust
[{    '委托时间': '11:11:11',     '证券名称': 'x',     '成交数量': 100,     '股东代码': 'x',     '证券代码': 'x',     '状态说明': '已成',     '委托数量': 100,     '委托日期': '20160401',     '交易市场': '深A',     '撤单数量': 0,     '委托价格': 0.999,     '委托序号': '12345',     '买卖标志': '买入'}]
position
[{    '参考市值': 10.1,     '参考盈亏': -0.0,     '当前持仓': 100,     '股份余额': 100,     '证券名称': 'x',     '参考市价': 0.111,     '卖出冻结': 0,     '买入冻结': 0,     '交易市场': '深A',     '证券代码': '123456',     '盈亏比例(%)': '0.00%',     '股份可用': 100,     '股东代码': 'x'}]

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap