Python量化交易实战-41EasyTrader自动化模拟真实交易

auto-trade 虚幻 1798℃ 0评论

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)

20210704103921 - Python量化交易实战-41EasyTrader自动化模拟真实交易

可以看到,持仓的效果如上图对吧,它输出了2行数据,分别是balance和position。

上面是查询的功能。

#查询当日成交
today_trades = user.today_trades
print(today_trades)

#查询当日委托(委托是指没有成交,但是已经提交成交的订单)
today_entrusts = user.today_entrusts
print(today_entrusts)

20210704104732 - Python量化交易实战-41EasyTrader自动化模拟真实交易

因为我没有进行交易,所以这里都是空的列表输出。

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)

你会发现订单页面已经有了委托订单:因为今天不是成交日

20210704110541 - Python量化交易实战-41EasyTrader自动化模拟真实交易

然后脚本里面也会返回一个单号:

20210704111153 - Python量化交易实战-41EasyTrader自动化模拟真实交易

4.1.2 撤单接口

#撤单
cancel = user.cancel_entrust('2180077517')
print(cancel)

运行:

软件里面刚才的委托被取消了:

20210704111819 - Python量化交易实战-41EasyTrader自动化模拟真实交易

脚本输出撤单成功:

20210704111642 - Python量化交易实战-41EasyTrader自动化模拟真实交易

你可以再次撤销看看效果,他会提示如下内容:

20210704113333 - Python量化交易实战-41EasyTrader自动化模拟真实交易

4.1.3 卖出接口

#卖出
sell_no = user.sell("000002", price=24.8, amount = 100)
print(sell_no)

因为现在我买不了股票 所以这里就不带大家演示了 ,直接调用即可。

那本节课我们实战了easytrader的使用,你至少需要把它的每个函数跑一遍,有问题的地方自己能改。

转载请注明:虚坏叔叔 » Python量化交易实战-41EasyTrader自动化模拟真实交易

喜欢 (23)

您必须 登录 才能发表评论!