# easytrader
* 进行自动的程序化股票交易
* 实现自动登录
* 支持跟踪 `joinquant` 的模拟交易
* 支持跟踪 雪球组合 调仓
* 支持命令行调用,方便其他语言适配
* 支持 Python3 / Python2, Linux / Win, 推荐使用 `Python3`
* 有兴趣的可以加群 `556050652` 、`549879767`(已满) 、`429011814`(已满) 一起讨论
* 捐助: [支付宝](http://7xqo8v.com1.z0.glb.clouddn.com/zhifubao2.png) [微信](http://7xqo8v.com1.z0.glb.clouddn.com/wx.png) 或者 银河开户可以加群找我
**开发环境** : `Ubuntu 16.04` / `Python 3.5`
### 相关
[量化交流论坛](http://www.celuetan.com)
[获取新浪免费实时行情的类库: easyquotation](https://github.com/shidenggui/easyquotation)
[简单的股票量化交易框架 使用 easytrader 和 easyquotation](https://github.com/shidenggui/easyquant)
### 支持券商
* 银河
* 广发
* 佣金宝
### 模拟交易
* 雪球组合 by @[haogefeifei](https://github.com/haogefeifei)([说明](doc/xueqiu.md))
### requirements
> pip install -r requirements.txt
> 银河可以直接自动登录
> 佣金宝 的自动登录需要安装以下二者之一, 广发的自动登录需要安装下列的 tesseract:
* `JAVA` : 推荐, 识别率高,安装简单, 需要命令行下 `java -version` 可用 (感谢空中园的贡献)
* `tesseract` : 非 `pytesseract`, 需要单独安装, [地址](https://github.com/tesseract-ocr/tesseract/wiki),保证在命令行下 `tesseract` 可用
### 安装
```shell
pip install easytrader
```
注: `Windows` 用户 `pip` 安装时会提示 `No module named xxx`, 请使用 `pip install xxx` 安装对应缺失的 `module`, 然后再重新 `pip install easytrader`, 可以参考此文档 [INSTALL4Windows.md](INSTALL4Windows.md)
### 升级
```shell
pip install easytrader --upgrade
```
### 用法
#### 引入:
```python
import easytrader
```
#### 设置账户:
##### 银河
```python
user = easytrader.use('yh') # 银河支持 ['yh', 'YH', '银河']
```
##### 佣金宝
```python
user = easytrader.use('yjb') # 佣金宝支持 ['yjb', 'YJB', '佣金宝']
```
##### 广发
```python
user = easytrader.use('gf') # 广发支持 ['gf', 'GF', '广发']
```
#### 登录帐号
##### 使用配置文件
```python
user.prepare('/path/to/your/ht.json') // 或者 yjb.json 或者 yh.json 等配置文件路径
```
##### 参数登录
```
user.prepare(user='用户名', password='券商加密后的密码, 雪球为明文密码')
```
**注**:
使用配置文件模式, 配置文件需要自己用编辑器编辑生成, 请勿使用记事本, 推荐使用 [notepad++](https://notepad-plus-plus.org/zh/) 或者 [sublime text](http://www.sublimetext.com/)
格式可以参照 `Github` 目录下对应的 `json` 文件
* 佣金宝需要配置 `yjb.json` 并填入相关信息, 其中的 `password` 为加密后的 `password`
* 银河类似佣金宝
* 雪球配置中 `username` 为邮箱, `account` 为手机, 填两者之一即可,另一项改为 `""`, 密码直接填写登录的明文密码即可,不需要抓取 `POST` 的密码
[如何获取配置所需信息, 可参考此文章](http://www.celuetan.com/topic/5731e9ee705ee8f61eb681fd)
### 交易相关
以下用法以佣金宝为例
#### 获取资金状况:
```python
user.balance
```
**return**
```python
[{ 'asset_balance': '资产总值',
'current_balance': '当前余额',
'enable_balance': '可用金额',
'market_value': '证券市值',
'money_type': '币种',
'pre_interest': '预计利息' ]}
```
#### 获取持仓:
```python
user.position
```
**return**
```python
[{'cost_price': '摊薄成本价',
'current_amount': '当前数量',
'enable_amount': '可卖数量',
'income_balance': '摊薄浮动盈亏',
'keep_cost_price': '保本价',
'last_price': '最新价',
'market_value': '证券市值',
'position_str': '定位串',
'stock_code': '证券代码',
'stock_name': '证券名称'}]
```
#### 获取今日委托单
```python
user.entrust
```
**return**
```python
[{'business_amount': '成交数量',
'business_price': '成交价格',
'entrust_amount': '委托数量',
'entrust_bs': '买卖方向',
'entrust_no': '委托编号',
'entrust_price': '委托价格',
'entrust_status': '委托状态', # 废单 / 已报
'report_time': '申报时间',
'stock_code': '证券代码',
'stock_name': '证券名称'}]
```
#### 买入:
```python
user.buy('162411', price=0.55, amount=100)
```
**return**
```python
[{'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': '错误原因'}]
```
#### 卖出:
```python
user.sell('162411', price=0.55, amount=100)
```
#### 撤单
##### 佣金宝
```python
user.cancel_entrust('委托单号', '股票代码')
```
#### 查询交割单
需要注意通常券商只会返回有限天数最新的交割单,如查询2015年整年数据, 华泰只会返回年末的90天的交割单
```python
user.exchangebill # 查询最近30天的交割单
user.get_exchangebill('开始日期', '截止日期') # 指定查询时间段, 日期格式为 "20160214"
```
**return**
```python
{["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": "成交均价",
]}
```
#### 基金申购
##### 银河
```
user.fundpurchase(stock_code, amount):
```
#### 基金赎回
##### 银河
```
user.fundredemption(stock_code, amount):
```
#### 基金认购
##### 银河
```
user.fundsubscribe(stock_code, amount):
```
#### 基金分拆
##### 银河
```
user.fundsplit(stock_code, amount):
```
#### 基金合并
##### 银河
```
user.fundmerge(stock_code, amount):
```
#### 查询当日成交
##### 佣金宝
```python
user.current_deal
```
**return**
```python
[{'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': '证券名称'}]
```
##### 佣金宝
```python
user.get_ipo_limit('申购代码')
```
**return**
```python
{'high_amount': '最高申购股数',
'enable_amount': '申购额度',
'last_price': '发行价',}
```
#### 查询今天可以申购的新股信息
```python
from easytrader import helpers
ipo_data = helpers.get_today_ipo_data()
print(ipo_data)
```
**return**
```python
[{'stock_code': '股票代码',
'stock_name': '股票名称',
'price': 发行价,
'apply_code': '申购代码'}]
```
#### 雪球组合调仓
```python
user.adjust_weight('000001', 10)
```
### 跟踪 joinquant 的模拟交易
#### 初始化跟踪的 trader
这里以雪球为例, 也可以使用银河之类 easytrader 支持的券商
```
xq_user = easytrader
PyPI 官网下载 | easytrader-0.9.1.tar.gz
版权申诉
5星 · 超过95%的资源 138 浏览量
2022-01-31
20:20:07
上传
评论
收藏 62KB GZ 举报
挣扎的蓝藻
- 粉丝: 13w+
- 资源: 15万+
最新资源
- 基于QT的地图可视化桌面系统后台数据库为MySQL5.7源码.zip
- 基于simulink的PLL锁相环系统仿真【包括模型,文档,参考文献,操作步骤】
- 基于EM-GMM模型的目标跟踪和异常行为检测matlab仿真【包括程序,注释,参考文献,操作步骤,说明文档】
- 2109010044_胡晨燕_选课管理数据库设计与实现.prj
- 帕鲁介绍的PPT备份没什么好下的
- demo1-202405
- 两种方式修改Intel网卡MAC地址
- 服务器搭建所需资源:static文件夹
- Vue02的源码学习资料
- Python 程序语言设计模式思路-行为型模式:访问者模式:在不改变被访问对象结构的情况下,定义对其元素的新操作
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈