Python量化交易实战-41EasyTrader自动化模拟真实交易
2021/7/4 12:21:16
本文主要是介绍Python量化交易实战-41EasyTrader自动化模拟真实交易,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
EasyTrader自动化模拟真实交易
来到官方文档的使用部分:
https://easytrader.readthedocs.io/zh/master/usage/
一、用法
1.1引入
import easytrader
1.2设置交易客户端类型
通用同花顺客户端
user = easytrader.use('universal_client')
1.3启动并连接客户端
user.connect(r'客户端xiadan.exe路径') # 类似 r'C:\htzqzyb2\xiadan.exe'
二、交易相关
2.1获取资金状况
user.balance
return
[{'参考市值': 21642.0, '可用资金': 28494.21, '币种': '0', '总资产': 50136.21, '股份参考盈亏': -90.21, '资金余额': 28494.21, '资金帐号': 'xxx'}]
2.2 获取持仓
user.position
return
[{'买入冻结': 0, '交易市场': '沪A', '卖出冻结': '0', '参考市价': 4.71, '参考市值': 10362.0, '参考成本价': 4.672, '参考盈亏': 82.79, '当前持仓': 2200, '盈亏比例(%)': '0.81%', '股东代码': 'xxx', '股份余额': 2200, '股份可用': 2200, '证券代码': '601398', '证券名称': '工商银行'}]
2.3 买入
user.buy('162411', price=0.55, amount=100)
return
{'entrust_no': 'xxxxxxxx'}
注: 系统可以配置是否返回成交回报。如果没配的话默认返回 {"message": "success"}
2.4 卖出
user.sell('162411', price=0.55, amount=100)
return
{'entrust_no': 'xxxxxxxx'}
2.5 一键打新
user.auto_ipo()
2.6 撤单
user.cancel_entrust('buy/sell 获取的 entrust_no')
return
{'message': '撤单申报成功'}
2.7 查询当日成交
user.today_trades
return
[{'买卖标志': '买入', '交易市场': '深A', '委托序号': '12345', '成交价格': 0.626, '成交数量': 100, '成交日期': '20170313', '成交时间': '09:50:30', '成交金额': 62.60, '股东代码': 'xxx', '证券代码': '162411', '证券名称': '华宝油气'}]
2.8 查询当日委托
user.today_entrusts
return
[{'买卖标志': '买入', '交易市场': '深A', '委托价格': 0.627, '委托序号': '111111', '委托数量': 100, '委托日期': '20170313', '委托时间': '09:50:30', '成交数量': 100, '撤单数量': 0, '状态说明': '已成', '股东代码': 'xxxxx', '证券代码': '162411', '证券名称': '华宝油气'}, {'买卖标志': '买入', '交易市场': '深A', '委托价格': 0.6, '委托序号': '1111', '委托数量': 100, '委托日期': '20170313', '委托时间': '09:40:30', '成交数量': 0, '撤单数量': 100, '状态说明': '已撤', '股东代码': 'xxx', '证券代码': '162411', '证券名称': '华宝油气'}]
2.9 查询今日可申购新股
from easytrader.utils.stock import get_today_ipo_data ipo_data = get_today_ipo_data() print(ipo_data)
return
[{'stock_code': '股票代码', 'stock_name': '股票名称', 'price': 发行价, 'apply_code': '申购代码'}]
2.10 刷新数据
user.refresh()
2.11 雪球组合比例调仓
user.adjust_weight('股票代码', 目标比例)
例如,user.adjust_weight('000001', 10)
是将平安银行在组合中的持仓比例调整到10%。
三、客户端设置
需要对客户端按以下设置,不然会导致下单时价格出错以及客户端超时锁定
- 系统设置 > 界面设置: 界面不操作超时时间设为 0
- 系统设置 > 交易设置: 默认买入价格/买入数量/卖出价格/卖出数量 都设置为 空
同时客户端不能最小化也不能处于精简模式
四、实战
4.1查询接口
import win32api import easytrader # 设置客户端信息(同花顺) user = easytrader.use('universal_client') #连接客户端(同花顺:登录 保存密码 自动登录) user.connect("C:\\ths\\xiadan.exe") # 类似 r'C:\htzqzyb2\xiadan.exe' # 查询类函数 #查询持仓 balance = user.balance print(balance) #查询持仓(仓位) position = user.position print(position)
可以看到,持仓的效果如上图对吧,它输出了2行数据,分别是balance和position。
上面是查询的功能。
#查询当日成交 today_trades = user.today_trades print(today_trades) #查询当日委托(委托是指没有成交,但是已经提交成交的订单) today_entrusts = user.today_entrusts print(today_entrusts)
因为我没有进行交易,所以这里都是空的列表输出。
4.2交易接口
4.2.1买入接口
user.buy
返回的是entrust_no
,如果买入成功了,这就是成交的单号,如果买入失败,就是委托的单号。可以通过单号查询成交的记录,如果没有成交,我们也可以根据单号撤销委托。这个单号就相当于身份ID.
注意,需要设置客户端的编辑模式 才能够成功输入数据
# 设置客户端编辑文本形式:type_keys user.enable_type_keys_for_editor()
执行买入:
# 买入 buy_no = user.buy("000002", price=24.06, amount = 100) print(buy_no)
你会发现订单页面已经有了委托订单:因为今天不是成交日
然后脚本里面也会返回一个单号:
4.1.2 撤单接口
#撤单 cancel = user.cancel_entrust('2180077517') print(cancel)
运行:
软件里面刚才的委托被取消了:
脚本输出撤单成功:
你可以再次撤销看看效果,他会提示如下内容:
4.1.3 卖出接口
#卖出 sell_no = user.sell("000002", price=24.8, amount = 100) print(sell_no)
因为现在我买不了股票 所以这里就不带大家演示了 ,直接调用即可。
那本节课我们实战了easytrader的使用,你至少需要把它的每个函数跑一遍,有问题的地方自己能改。
转载请注明:虚幻私塾 » Python量化交易实战-41EasyTrader自动化模拟真实交易
这篇关于Python量化交易实战-41EasyTrader自动化模拟真实交易的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程